2016-11-07 5 views
0

私はこの解決策を3日間探していましたが、私の状況のようなウェブサイトやここに投稿することはできません。VBAアクセスの隣にデータを表示

"003.30"のような数字をテキストボックスで検索してフォームを作成したいのですが、別のテキストボックスにセル関連の情報が表示されています。 "BETTER_CODES"と "LONG_DESCRIPTION"という2つの列を持つ私のテーブル(icd9_codesというタイトル)。フォームでは、私はICDコードをテキストボックスに入力し、そのICDコードの長文は下の別のテキストボックスに表示されます。

私はまだvbaの新人ですが、私が学んだことはExcelに転送されていません。

+0

はい、これを行うにはフォームが最適です。 BETTER_CODES列はicd9_codes表の主キー列ですか?すべてのBETTER_CODEが一意であるという意味ですか? –

+0

これは間違いなく、BETTER_CODESはテーブルicd9_codesの主キーです。 – bonzo

答えて

2

これは、DLookup機能VBAでこれを実現する方法です。検索コードが入力されたテキストボックスのフォームボタンコールバックまたはキープレスコールバックにこのコードを配置できます。

Me.TextboxToDisplayDescription = Nz(DLookup("LONG_DESCRIPTION", "icd9_codes", "[BETTER_CODES] = '" & Me.TextboxToSearchWith & "'"), "Invalid Code") 
のDLookup関数の周りに「Nzの」機能が必要とされていない

しかし、ユーザーがicd9_codesテーブルに存在しないコードを入力するために起こった場合には、エラー「のNullの無効な使用」を防ぐことができます。

+0

私はこれを動作させることができませんでしたが、正しい方向に私を指摘しました。偶然に私は友人に歩いてもらって私を助けてくれました。私たちは=文字列 セットとして、レコード、ます。strSQLとしてRSは、DB = CurrentDb ます。strSQL = のMsgBox(ます。strSQL) セットrs "BETTER_CODES = '001.0' icd9_codes FROM icd9_codes.LONG_DESCRIPTIONを選択"、データベースとしてこの '薄暗いデシベルになってしまいましたdb.OpenRecordset(strSQL) Me.display_box.Value = rs!LONG_DESCRIPTION ' 私はこの問題を解決することができましたが、このバージョンでのあなたの考えを知りたいと思います! – bonzo

+0

ああ、はい、私の間違い!より良いコードフィールドが文字列であることはわかりませんでした。私は "Me.TextboxToSearchWith"をDLookup関数の中で一重引用符で囲んだところで動作させるべきです。しかし、あなたの同僚が作品に与えたバージョンがあれば、それは素晴らしいことです。いずれかの方法がうまくいくように見えますが、私のバージョンは物事をきれいに保つのに役立つコードの1行だけです。 –

+0

@SamSlaughterbeckの提案は優れています。これは1つの式に過ぎず、データベースとレコードセットを開くことに依存しません。また、フォーム上のコントロールボックスに直接dlookupを配置し、VBAを回避することもできます。 (ちょうど「私」参照を省略する) – geeFlo

関連する問題