OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

アクセスVBAで、フォームに情報を表示したい。

  • すぐに回答を!
  • 質問No.234685
  • 閲覧数318
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 48% (39/81)

アクセス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の区別がよく理解できていません。値集合タイプ、値集合ソースというのはなぜテキストボックスの
プロパティにないのでしょうか。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル10

ベストアンサー率 56% (59/104)

御疲れ様です

>●入力用テキストボックスに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」は確定した値を取得できます。

参考になれば
お礼コメント
imogasi

お礼率 48% (39/81)

ご丁寧なご解答有難うございました。お礼が遅れて失礼しました。
投稿日時 - 2002-03-31 06:50:09
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル9

ベストアンサー率 40% (37/92)

いくつか間違いがあるので > Option Compare Database > Public db As database > Public qd As querydef > Private Sub テキスト0_AfterUpdate() > Set db = CurrentDb > Set qd = db.querydef("SQL_ ...続きを読む
いくつか間違いがあるので
> 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)はそのコントロールに表示したい情報を
指定する項目で、式やレコードソース内に存在するフィールド名を指定します。

値集合タイプ、値集合ソースはコンボボックスなどのリスト表示に使用するテーブルなど
を指定するための項目です。
テキストボックスに何故無いかと言うことについては、そう言う仕様だからとしか
説明のしようがありません。(少なくとも私には)


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ