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

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

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

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

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

バインド

バインドは、一定の方法で複数の事柄が関連付けられている状態を呼びます。また、そのような関連付けを実行する機能自体を指す事もあります。

Q&A

解決済

1回答

5764閲覧

access vba バインドについて

nekomura

総合スコア132

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

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

バインド

バインドは、一定の方法で複数の事柄が関連付けられている状態を呼びます。また、そのような関連付けを実行する機能自体を指す事もあります。

0グッド

0クリップ

投稿2016/03/01 03:54

よろしくお願いいたします。

下記のようなコードを書き、アクセスからデータベースにアクセスして、データベースの内容を一覧表示したいのですが。。。
コメントアウトしている「確認処理?」の部分についてご教示をお願いします。
この部分の書き込みで、取得したデータベースの内容を一覧表示したいのですが、初めはDo Until~Loopなどの処理で行うつもりだったのですが、
「バインド」処理を使えばもっと簡単に(1行のコードなどで)表記が可能と聞き、いろいろ調べたのですが結局わからずこちらに質問に来ました。

コメントアウト部分に記載する適切な内容をどなたかご教示ください。
よろしくお願いいたします。
Private Sub test_Click()
Dim dbCn As ADODB.Connection
Dim dbRs As ADODB.Recordset
Dim dbCom As ADODB.Command

Set dbCn = New ADODB.Connection dbCn.Open "Provider=*****:;Password=*****;Persist Security Info=True;User ID=e******;Initial Catalog=***;Data Source=****" Set dbCom = New ADODB.Command dbCom.ActiveConnection = dbCn dbCom.CommandText = "select * from テーブル名" Set dbRs = New ADODB.Recordset Set dbRs = dbCom.Execute '確認処理? dbRs.Close Set dbRs = Nothing dbCn.Close Set dbCn = Nothing Set dbCom = Nothing

End Sub

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

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

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

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

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

guest

回答1

0

ベストアンサー

色々と足りない情報があるのですが、たぶんこの質問は「もっと簡単に(1行のコードなどで)表記できる方法」が一番重要だと思うので、それを実現するための方法を考えます。

内容を一覧表示する「場所」が質問文に書かれていませんが、"Private Sub test_Click()" から推測するにフォーム上なのでしょう。
そしてレコードセットをバインドして一覧表示できるコードを「1行で書く」のであればグリッド系のコントロールを使用する方法しか思いつきません。
なのでフォーム上に ActiveXコントロール の "Microsoft DataGrid Control 6.0" を追加します。
コントロール名は "DataGrid1" とします。

で、DataGrid1コントロールにレコードセットをバインドするには"確認処理?"の場所に以下の1行を記述します。

VBA

1Set DataGrid1.DataSource = dbRs

DataGrid1コントロールがレコードセットをバインドするには、データベース接続のカーソルがクライアント側になければならないので、"dbCn.Open" の前に以下の1行を記述します。

VBA

1dbCn.CursorLocation = adUseClient

レコードセットを閉じてしまうとDataGrid1コントロールから一覧が消えてしまうので、以下のコードは削除します。

VBA

1dbRs.Close 2Set dbRs = Nothing 3dbCn.Close 4Set dbCn = Nothing 5Set dbCom = Nothing

あと、質問内容とは関係ありませんが、以下の1行は意味がないため削除します。

VBA

1Set dbRs = New ADODB.Recordset

こんなところでしょうか?

投稿2016/03/01 05:17

twck

総合スコア314

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

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

nekomura

2016/03/03 01:07

早速試してみました。 解決の糸口が掴め助かりました。ありがとうございます。 ご返信が遅れ大変失礼いたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問