FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

↑やる気アップにご協力をお願いします。わぁいヽ(∇⌒ヽ)(ノ⌒∇)ノわぁい♪

こんな記事もありますよ


コントロールの値を参照して、レコードの値を求める

今回のお題は・・・

フォーム上のテキストボックス(仮にTxt_A)に入れた値を参照して
別のテキストボックス(仮にTxt_B)にテーブル(Tbl_1)から値を求めたいというもの

Tbl_1には、商品IDと商品名があり、Txt_Aに商品IDを入れたら、Txt_Bに商品名を
出したいということです。

つまり・・・

コントロールの値から適合するレコードデータをテーブルから求めたい

・・・ということですね(-_-☆キラーン



これは、かなりいけてます!

これならhatenaさんからのヘルプがなくて大丈夫でしょう・・・( ̄ー ̄)ニヤリッ
(いや・・・回答者で毎回ヘルプが必要なのって・・・どうよ・・・ヽ(--;)オカシイダロ)

というのも・・・自分がよく利用している方法だからです。

今回は、さくっと・・・回答を書いちゃいましょう。
Dim RS As DAO.Recordset

If Nz(Me.Txt_A,"") ="" Then Exit Sub

Set RS = CurrentDb.OpenRecordset("Tbl_1", dbOpenSnapshot)
RS.FindFirst "商品ID = " & Txt_A

If RS.NoMatch = False Then Me.Txt_B = RS!商品名

RS.Close: Set RS = Nothing
これですよ!これ。無駄なコードを極力減らした
スマートなコードではないですか?
しかもDAO使ってますよ! でぇ~え~お~! だおです! (-_-☆キラーン

ま~入力のし直しまでの親切なコードは書いてませんが、
空白の時の処理は書いているこのやさしさ!!

にくいね~~!この、この~~~!

さ!恒例の回答ボタンを~~~ぽちっとな

暫らくしてから、返信のお知らせが・・・

きっと質問者さんからの「できました!」の一言ですよ ψ(`∇´)ψ ウケケケケ

あれ?(・・?)・・・・・・投稿者:hatenaさん・・・

----------------------------------------------------
コードは問題なく動作しますが、開発という観点でみると
もっと効率のよいコードがありますよ・・・(←この文章は意訳してます。もっとやさしいです。)

まず特定のデータを取得する場合は、FindFirstではなく、OpenRecordsetで開くときに、
SQLで抽出した方が高速です。
Dim RS As DAO.Recordset

If Nz(Me.Txt_A,"") ="" Then Exit Sub

Set RS = CurrentDb.OpenRecordset("SELECT 商品名 From Tbl_1 _
WHERE "商品ID = " & Me.Txt_A, dbOpenSnapshot)

If Not RS.EOF Then Me.Txt_B = RS!商品名

RS.Close: Set RS = Nothing
さらに言えば、下記の1行で済みます。

Me.Txt_B = DLookup("商品ID", "Tbl_1", "商品ID = " & Me.Txt_A)
あるいは、VBAを使わずに、Txt_B のコントロールソースに、
=DLookup("商品名", "tbl_1", "商品ID = " & [Txt_A])
と設定するだけでもOKです。

また、Txt_A をコンボボックスにして、
値集合ソース Tbl_1
連結列 1
列数 2
列幅 1cm;3cm
リスト幅 4cm
と設定して、テキストボックスBのコントロールソースは、

=[Txt_A].[Column](1)
とするのもユーザーインタフェイス的に優れていると思います。
----------------------------------------------------

はぅあ~~~トリプルパーンチ! o(゜ο゜ )==○)゜o゜)☆・:グハァッ

まずは、軽くジャブの効いたSQL構文ですね・・・
これに関しては全く気づいていない、盲点からのジャブでした・・・
しかも、わざわざこちらのレベルに合わせていただいた記述方法です。
尚且つ、動作が速いときてます・・・まさにジャブです。

その後のボディーへのストレート・・・
Dlookup関数の登場です。
先日、定義域集計関数に関するブログを書いたばっかりなのに
そこに考えがいかないあたりが、正に自分っぽいです・・・orz
しかも・・・1行で終わってます・・・( ̄∇ ̄;)!

そして、うなだれた自分の顔面に深く突き刺さるフィニッシュのアッパー・・・
まったくVBAを利用していない、初心者にも優しい、説明付きの
コンボボックス・・・

燃え尽きたお・・・まっちろな灰でつお・・・orz

え~い・・・南風に吹かれてとんでしまえ~~~・・・・( /^^)/ ~~∞

あ!・・・言い訳ですけど・・・

こんぼぼっくすは、ちょっと考えたんですよ・・・(-。-) ボソッ
でも、うまく説明する自信がなかったんですよ・・・
ほんとですよ・・・(-。-) ボソボソ


あぅ~・・・今日もやらかしてしまった~・・・(T_T)ホロホロ

やっぱり、hatenaさんからのヘルプはまだまだ必要なようです・・・
がんばれ 俺・・・

ファイトーー!( ゚ロ゚)乂(゚ロ゚ )イッパーーツ!!

hatenaさん、今回も親切なご指導に本当に感謝です。
偏った考え方にならないように、幅広く考えられるようにがんばります
これからもよろしくお願いします。m(_ _)m

ああ・・・自分・・・やっぱり柔軟性に乏しいな~~(T_T)ホロホロ
↑やる気アップにご協力をお願いします。わぁいヽ(∇⌒ヽ)(ノ⌒∇)ノわぁい♪

こんな記事もありますよ


コメントの投稿

非公開コメント

Author's Profile ~自己紹介~

Genzo

Author:Genzo
PCは一応自作できるレベル。
ワード・エクセルなら基本的に
扱えるレベル。
プログラム・・・?ん?
VBA・・・?ん?ん??
それって美味しいですか?


~ 当ブログについて ~

~ Mail2Genzo  ~

Calender&Search かれんだーと検索

09 | 2018/10 | 11
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -

Access2Genzo内で検索

Category ~かてごりー~

Comments Tree ~こめんとつりー~


Link ~りんく~

ブロとも申請フォーム

Counter ~かうんた~

Since 2010/08/01:

Online:

タグクラウド

最新トラックバック

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。