質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

4103閲覧

VB.NETにAccessのデータを取得したいです。

rarara_123

総合スコア11

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2021/04/07 05:04

編集2021/04/07 07:07

前提・実現したいこと
VB.NETにAccessのデータを取得したいです。

発生している問題・エラーメッセージ
BC30590 イベントLoadが見つかりません。とエラーが表示されます。
エラーは二行目「 Private Sub frmConnectAccessDB_Load(sender As Object, e As EventArgs) Handles MyBase.Load」の最後のLoadで発生してます。

該当のソースコード

Public Class frmConnectAccessDB Private Sub frmConnectAccessDB_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'SQL作成 Dim resultDt As New DataTable Dim sql = New System.Text.StringBuilder() sql.AppendLine("SELECT") sql.AppendLine(" *") sql.AppendLine("FROM ID給料") 'Access接続準備 Dim command As New OleDbCommand Dim da As New OleDbDataAdapter Dim cnAccess As OleDbConnection = New OleDbConnection cnAccess.ConnectionString = My.Settings.アクセス 'Access接続開始 cnAccess.Open() Try command.Connection = cnAccess command.CommandText = sql.ToString da.SelectCommand = command 'SQL実行 結果をデータテーブルに格納 da.Fill(resultDt) Catch ex As Exception Throw Finally command.Dispose() da.Dispose() cnAccess.Close() End Try 'データテーブルの結果を表示 For rowindex As Integer = 0 To resultDt.Rows.Count - 1 For colindex As Integer = 0 To resultDt.Columns.Count - 1 Console.Write(resultDt.Rows(rowindex).Item(colindex).ToString & " ") Next Console.WriteLine() Next End Sub End Class

自分で調べたことや試したこと
VBとACCESSの接続は問題ないと思います。

使っているツールのバージョンなど補足情報
ACCESSのバージョン2103
Windows10の64ビット
WindowsFormsを作成
Visual Studio2019
NET Framework 4.8を使用してます。

以上となります。

ご教示よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/04/07 05:14

コードは ``` と ``` で囲ってください(``` はバッククォート 3 つ)。インデントされて見やすくなるので。 何を作ってるか(WinForms? WPF? ASP.NET Web Forms? その他?)と開発環境(OS, Visual Studio, .NET Framework のバージョンなど)を書いてください。 エラーはコードのどの行で出るのか書いてください。
YAmaGNZ

2021/04/07 05:21

frmConnectAccessDBはフォームとして作成されたのですかね? BC30590はコンパイルエラーですので、エディタ上で赤い波線で表示されると思います。 その箇所はどこですか?
rarara_123

2021/04/07 05:32

バッククォートを追加いたしました。 VB.netでWindows10の64ビット、Visual Studioを使用してます。 エラーは、一行目「 Private Sub frmConnectAccessDB_Load(sender As Object, e As EventArgs) Handles MyBase.Load」の最後のLoadで発生してます。
YAmaGNZ

2021/04/07 05:33

前の質問では出来ていたのに・・・・
rarara_123

2021/04/07 05:34

frmConnectAccessDBはフォームとして作成されたのですかね? こちらは、フォーム作成しておりません。 エラーは、一行目「 Private Sub frmConnectAccessDB_Load(sender As Object, e As EventArgs) Handles MyBase.Load」の最後のLoadで発生してます。
YAmaGNZ

2021/04/07 05:51 編集

フォームとして作成していないのにLoadイベントを利用しようとしているのでしたら、イベントとは何かなど基礎から学習する必要があるかと思います。
YAmaGNZ

2021/04/07 05:51 編集

あわてずにゆっくり編集してください。 PCからの編集であればプレビューが見れますのでそれも参考にしてください。 ``` ここにソース ```
rarara_123

2021/04/07 06:10

失礼いたしました。 バッククォート追加いたしました。
YAmaGNZ

2021/04/07 06:15

1行づつ分解しないで ``` ここにソース全部 書いてください ``` としてください。
退会済みユーザー

退会済みユーザー

2021/04/07 06:22 編集

何を作ってるか(WinForms? WPF? ASP.NET Web Forms? その他?)と開発環境(OS, Visual Studio, .NET Framework のバージョンなど)を書いてください。 エラーはコードのどの行で出るのか書いてください。 ・・・は質問文を編集して追記願います。コメント欄は「質問への追記・修正の依頼」の場所ですし、書いてあっても紛れ込んで分からないし、初期画面では開いてないので見ない人もいますから。
rarara_123

2021/04/07 06:25

ありがとうございます。 質問文を編集して追記いたしました。
退会済みユーザー

退会済みユーザー

2021/04/07 06:29

何を作ってるか(WinForms? WPF? ASP.NET Web Forms? その他?) ⇒ Windows Forms 開発環境(OS, Visual Studio, .NET Framework のバージョンなど)⇒ VS2019, .NET Framework 4.8 ・・・で良いのですか? それを書いてほしいのですけど。
rarara_123

2021/04/07 07:08

失礼いたしました。 補足情報を追加いたしました。
sazi

2021/04/07 08:10

(イベントの事を理解されていないのでエラー部分を確認しても意味が無いと思われますので) そもそも、「frmConnectAccessDB_Load」はどういう場合に実行させたいのですか?
guest

回答1

0

ベストアンサー

Access のレコード一覧を DataGridView などの UI に表示し、ユーザーが UI を見て編集した結果を、元の Acess のテーブルに反映させるというようなことがやりたいこととと想像してますが、もしそうであれば一度 Visual Studio のウィザードを使って定番の構成のアプリを作ってみることをお勧めします。

DB が SQL Server の場合ですが、以下のチュートリアル、

チュートリアル : データベースへのデータの保存 (単一テーブル)
https://docs.microsoft.com/ja-jp/previous-versions/0f92s97z(v=vs.120)

・・・のように Visual Studio のデータソース構成ウィザードを利用して型付 DataSet + TableAdapter を作って、それを利用してアプリを作ると、以下の画像のアプリを自分で一行もコードを書かずに作れます。(Microsoft が提供しているサンプル Northwind2007.accdb の Products テーブルがベースです)

イメージ説明

どうやって作るかを簡単に書きますと、まず、以下の記事に書いてあるように Visual Studio のデータソース構成ウィザードを使って型付 DataSet / DataTable + TableAdapeter を作ります。

新しいデータ ソースの追加
https://docs.microsoft.com/ja-jp/visualstudio/data-tools/add-new-data-sources?view=vs-2019

完成すると以下のような xsd ファイルが生成されます。

イメージ説明

Form のデザイナ画面で、データソースウィンドウに以下の画像のように作成した型付 DataSet / DataTable が表示されるので、 DataGridView を選択してから DataTable を Form にドラッグ&ドロップするだけで完成します。

イメージ説明

操作に慣れると上の画像の Windows Forms アプリが 5 分もかからず作れるはずです。お試しください。自分でどうしてもコードを書きたいという場合でも、自動生成されたコードを見ると参考になると思います。

なお。Access でオートナンバーを使っている場合、INSERT した時に DB 側で設定したオートナンバー値を DataSet に書き込むところまでは面倒を見てくれません。そこを何とかしたい場合は以下の記事を参考にコードを追加してください。

Access の更新
http://surferonwww.info/BlogEngine/post/2010/09/04/Updating-Access.aspx

【追記】

ACE はインストール済みで、Visual Studio から Access に接続できると理解しています。もし違ったらインストールしてください。Visual Studio は 32-bit ですので、ACE に 64-bit 版を使うと Visual Studio から Access への接続はできませんので注意してください。

Access 2007 の DB を利用するアプリ開発
http://surferonwww.info/BlogEngine/post/2011/11/08/Development-of-application-which-uses-accdb-file-of-Access-2007.aspx

【追伸2】

エラーを何とかしたいということでしたら・・・

何故そんなことになっているのか不明ですが、やり方の問題であろうと思います。

デザイン画面でフォームのプロパティを表示し、雷マークのアイコンをクリックするとイベント一覧が表示されます。Load イベントならそれをダブルクリックすると、

イメージ説明

以下のようにイベントハンドラの枠組みが自動生成されるので、その中にコードを書いてください。

イメージ説明

投稿2021/04/07 07:12

編集2021/04/07 07:49
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rarara_123

2021/04/07 08:25

ありがとうございます。 試してみます。
退会済みユーザー

退会済みユーザー

2021/04/07 13:12

何をしているのかいろいろ調べながら理解しながらいろいろ試してみることをお勧めします。ネットの記事は玉石混交なので、本を買ってそれを読みながらコードを書いて勉強してみるのが良いと思います。
rarara_123

2021/04/08 01:06

アドバイスありがとうございます。 毎日勉強しながら進めていますが一歩進んで二歩下がる状態です。悲観することなく努力していきます。
退会済みユーザー

退会済みユーザー

2021/04/08 01:18 編集

どうしても Access でなければならないという事情はなくて、データベースとの連携が勉強できれば何でもいいということであれば、SQL Server (LocalDB) を使うことをお勧めします。そうすれば ACE をインストールするとか、32/64-bit の違いとか、余計なことに悩む必要がなくなって、勉強がはかどると思います。LocalDB は VS2019 をインストールした際に一緒にインストールされているのではないですか? Access である必要はないのに Access を使うのはわざわざ茨の道を選択するようなものだと思います。
rarara_123

2021/04/08 01:29 編集

当初はACCESSを使う予定はなかったのですが、諸々の都合上ACCESS指定になってしまいました。今までACCESSを使ったことがなかったのでACCESSも一緒に勉強するつもりで前向きな気持ちで進めていきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問