アクセス2000のVBAの質問です。どうぞよろしく。
●「取引銀行」テーブルをつくりました。銀行名、支店名、口座番号を入力してつくりました。 フィールド名も上記の通りです。
●フォームをつくり、口座番号入力用テキストボックス(テキスト0)、銀行名を表示するテキストボックス(テキスト2)、支店名表示用テキストボックス(テキスト4)の3つを作りました。
●入力用テキストボックスに1つ口座番号を入れると、その口座番号の銀行名をテキスト2に表示し、支店名をテキスト4に表示するにはどうコーディングすればいいのでしょうか。
Option Compare Database
Public db As database
Public qd As querydef
Private Sub テキスト0_AfterUpdate()
Set db = CurrentDb
Set qd = db.querydef("SQL_Q")
Dim strText As String
strText = テキスト0.Text
qd.SQL_Q = "SELECT 銀行名 FROM 取引銀行 " _
& "WHERE 口座番号 = '" & strText & "'"
Me.RecordSource = "SQL_Q"
テキスト2.SetFocus
Me!テキスト2.ControlSource = "銀行名"
(支店名表示部分は略す)
End Sub
ある本の例を見て上記のように組んで実行しましたが、銀行名は表示されません(#NAMEのエラー)
入力した口座番号がstrTextにセットされているのは確認できました。
またRecordSourceとControlSourseの区別がよく理解できていません。値集合タイプ、値集合ソースというのはなぜテキストボックスの
プロパティにないのでしょうか。
No.1
- 回答日時:
いくつか間違いがあるので
> Option Compare Database
> Public db As database
> Public qd As querydef
> Private Sub テキスト0_AfterUpdate()
> Set db = CurrentDb
> Set qd = db.querydef("SQL_Q")
Ser qd = db.querydefs("SQL_Q")
これを行うためにはあらかじめ「SQL_Q」と言う名前のクエリーを作成しておく
必要があります。(中身は適当で構いません。)
> Dim strText As String
> strText = テキスト0.Text
> qd.SQL_Q = "SELECT 銀行名 FROM 取引銀行 " & "WHERE 口座番号 = '" & strText & "'"
qd.SQL = "SELECT 銀行名 FROM 取引銀行 " & "WHERE 口座番号 = '" & strText & "'"
> Me.RecordSource = "SQL_Q"
> テキスト2.SetFocus
> Me!テキスト2.ControlSource = "銀行名"
> End Sub
レコードソース(RecordSource)はフォーム(レポート)で扱うテーブルやクエリーを指定する項目で
コントロールソース(ControlSource)はそのコントロールに表示したい情報を
指定する項目で、式やレコードソース内に存在するフィールド名を指定します。
値集合タイプ、値集合ソースはコンボボックスなどのリスト表示に使用するテーブルなど
を指定するための項目です。
テキストボックスに何故無いかと言うことについては、そう言う仕様だからとしか
説明のしようがありません。(少なくとも私には)
No.2ベストアンサー
- 回答日時:
御疲れ様です
>●入力用テキストボックスに1つ口座番号を入れると、その口座番号の銀行名をテキスト2に表示し、支店名をテキスト4に表示するにはどうコーディングすればいいのでしょうか。
上記の掲題だけでしたら、下記コードにて実現できると思います
'----------------------------------------
Private Sub テキスト0_AfterUpdate()
Dim RS As DAO.Recordset
Dim strSQL As String
If IsNull(Me.テキスト0.Value) = True Then
Me.テキスト2.Value = Null
Else
strSQL = "SELECT 銀行名 FROM 取引銀行 WHERE 口座番号 = '" & Me.テキスト0.Value & "'"
Set RS = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot)
If RS.EOF = False Then
Me.テキスト2.Value = RS("銀行名").Value
End If
Set RS = Nothing
End If
End Sub
'----------------------------------------
※参照設定にて「Microsoft DAO Libraryにチェックが必要です
たぶん、VisualBasicとの違いに戸惑いを感じているのだと思います。
テキストボックスコントロールなど典型的ですね。
例えば、VBならばNULLは入力できないが、Accessは入力できるとか、
VBなら値参照はTextプロパティをACCESSならValueプロパティを使用するなど...
VBとAccessのコントロールは似て非なるものと思った方が理解しやすいと思います。
(かといって、AccessのコントロールをVBに貼り付けても同じような使用方法は出来ないんですけどね...)
あと、Accessのテキストボックスのプロパティ「Text」と「Value」の違いですが、
「Text」はフォーカスがあたっている時、表示している値が取得できます、
「Value」は確定した値を取得できます。
参考になれば
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) ユーザーフォームで銀行に対応した支店コードの入力ができません Sheet1のA列に銀行名、B列に銀行 5 2022/07/28 17:50
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- 銀行・ネットバンキング・信用金庫 商品を購入してこのように表示されたのですが、支店には行けないので、みずほ銀行に行ってこの口座番号で振 3 2022/12/11 19:22
- au(KDDI) auじぶん銀行について auじぶん銀行の○○支店のほうに振込してくださいとメッセージ、ハガキが届きま 4 2023/04/27 22:14
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Access(アクセス) Accessテキストボックス内に2つのフィールドの値を比較して大きい方の値を表示させる方法 1 2022/09/09 10:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コモンダイアログのshowopenに...
-
テキストボックスの中身をリセ...
-
変数に256文字以上のテキストを...
-
VS2008 C# ボタンのテキストを...
-
別のアプリケーションのテキス...
-
ドラッグ&ドロップからの取得
-
テキスト内の重複文字検索
-
stringのデータ型はメモ型とテ...
-
VBAでホームページからコピーし...
-
AdobeFlashPlayerでWebcamを表...
-
RPG(AS400)の本、サイトってあ...
-
VB6.0 でメニューを作りたいん...
-
HTML版とは・・
-
ホームぺージ制作で間違って重...
-
タイトルタグとアンカーテキス...
-
VBからPDFファイルの埋め込みテ...
-
テキストボックスにセルの値を...
-
Flashのテキストボックスの「単...
-
VBAで改行の入ったデータの正規...
-
ダブルクリックと2回クリックの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
RPG(AS400)の本、サイトってあ...
-
別のアプリケーションのテキス...
-
テキストボックスの中身をリセ...
-
ホームぺージ制作で間違って重...
-
テキストボックスにセルの値を...
-
コモンダイアログのshowopenに...
-
全てのテキストボックスをセル...
-
漢字入力した値のカタカナ変換...
-
変数に256文字以上のテキストを...
-
VB6.0 でメニューを作りたいん...
-
VB.NET2005 DataGridViewでレコ...
-
DelphiのRichEditでカーソル位...
-
VBSでMid関数を使ったらエラー...
-
MFCのスタティックテキストのコ...
-
改行含むテキストの表示の仕方
-
テキストエリア内の文字列にリ...
-
チェックボックスのテキストを...
-
VB.NETで数十行のプログラムを...
-
HTMLのtextbox類に文字を残す
-
VBのチェックボックス
おすすめ情報