• 締切済み

Access2003にて・・・

 こんにちは。Accessにて、詰まってしまいまして、お知恵をお借りできればと思っています。よろしくお願いします。 Access2003 にて テーブルAには、 品番、品名、単価の3つのフィールドがあります。 このテーブルをもとにして、フォームAを単票形式で作成しました。 このフォームを、品番を登録したりするためではなく、品名や単価の確認用として使用したいと考えています。そこで、「品番」コントロールに品番を入力すると、あとの2つのコントロールに自動でデータが表示されるようにできればいいな、と思いました。  「品番」コントロールはコンボボックスに変更し、テーブルAの品番から値を取得するよう設定し、ここを入力したあと更新後処理であとの2つのコントロールに値を表示するような設定をするのかな、というところまで至って、はてここにどのような処理を書き込めばいいのかで詰まってしまいました。  このやり方がそもそも間違っているのかもしれません。テーブルをもとにするのではなく先にクエリを作っておくのがいいのかもしれませんが、自分なりにいろいろ試してみたのですが、なかなかうまくいかなくて…  何か方法はありますでしょうか?他にここへ組み込むサブフォームやら、別のフォームを表示させるボタン等考えているのですが、上記の方法ができるかできないかでフォームAのつくりを変えようと思っているので、とりあえずは必要と思われることだけ書きました。言っていただければどんどん補足させていただきますので、何か方法がございましたらご教授お願いいたします。 (ちなみに、私のAccessレベルは初心者でございます…)

みんなの回答

  • ganbaro
  • ベストアンサー率45% (43/94)
回答No.5

フォームへの表示だけなら、以下の方法もあります。 コンボボックスの値集合ソースをまづテーブルを指定し、ビルダを起動します。 キーになる部分を(品番)を最初のフィールドにその後、品名、単価の項目を指定しビルダを閉じます。 書式の列数を3(3つの項目があるので)に、列幅はたとえば2.54,0,0 (最初の項目が見えるだけ、ほかもみたければ0の部分に表示長)を指定する。 更新後処理で Private Sub 品番_AfterUpdate() me.品名=me.品番.column(2) ・・・コンボの中の品名 me.単価=me.品番.column(3) ・・・コンボの中の単価 End Sub の用に組み込めば、フォームで指定した品番の内容が表示されます。

kojirouap
質問者

お礼

 こんばんは。長らくお返事ができなくて本当に申し訳ございませんでした。  的確なご回答ありがとうございます!やはりcolumnプロパティを使うのですね。これも今回初めて見た項目でしたので、大いに参考にさせていただきます!  まだまだできないことだらけですが、もっといろいろ勉強して自分の思うようなデータベースが作れたら楽しいだろうなぁと思っています。頑張って勉強です!

回答No.4

あとの2つのコントロールを仮にhinmeiと tankaとします。 コントール品番の更新後処理 Me.hinmei = DLookup("品名", "テーブルA", "品番 = '" & Me.品番 & "'") Me.tanka = DLookup("単価", "テーブルA", "品番 = '" & Me.品番 & "'") ※品番はテキスト型とします。 ※テーブルAで品番の重複はないものとします。 どうでしょう?

kojirouap
質問者

お礼

 こんにちは。お返事が遅くなってしまって申し訳ありません。  DLookupですか、聞いたことありませんでした・・・(ExcelでVLOOKUPはよく使います)ので、調べてみました。なるほど、こんな方法もあるんですね!早速試してみたいのですが、Accessが会社のパソコンンにしか入っていないんです・・・今日明日とお休みなので、月曜に会社に行ったらやってみますね♪  1つのことで、こんなにいろいろな方法があるのですね。本当に面白い!これからも勉強頑張って続けます♪ありがとうございました。

回答No.3

いろんな方法があるかも知れませんが。

参考URL:
http://www.accessclub.jp/actips/tips_41.htm
kojirouap
質問者

お礼

 ご回答いただきありがとうございます。  参考URLつけていただいて、ありがとうございます!うまく検索できなくて、なかなか目的の場所にたどりつけたかったんです。ちょうどしたかったことが書かれているようで助かりました!まだ試していないのですが、今日は無理そうなので、来週試してみようと思います♪  Accessって奥が深くて面白いですね!いろんなサイトもたくさんあるようなので、これからも頑張って勉強します。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

この程度のことなら何も作らなくとも組み込みの機能だけで出来てしまいますよ 探しているレコードにジャンプするのは[検索]ですが ドロップダウンしてそこから選びたいというのであれば[フォームフィルタ]ですね ツールバーの[フォームフィルタ]ボタンを押すとフォームがデータ入力用に変わります そこで目的のフィールドの横のボタンを押してドロップダウンさせ 目的のものを選んでから[フィルタ実行]ボタンを押すとお望みの結果が得られます

kojirouap
質問者

お礼

 早速のご回答ありがとうございます。  ご教授ありがとうございます。検索とフィルタ、心得ています。・・・が、この確認用のフォーム、いちおう全くAccessを知らない他の人も使うことを想定しています。私、個人的になんですが、フィルタの機能って画面を見慣れるまで使い方が難しいような気がするんです。なので、自動で出てくれるほうがスマートでいいなぁ、と・・・  また困ったときにはご意見を聞かせてください。ありがとうございました!

noname#140971
noname#140971
回答No.1

Table: A ID___品番____品名________________________単価 1____A-101__大学ノート A-101_______\100 2____B-102__大学ノート B-102_______\200 3____C-103__大学ノート C-103_______\300 4____A-203__大学ノート C-103_______\300 Form: LookupA 品番スペル___[A_______] <--- 非連結テキストボックス 品番リスト 品番____品名________________________単価 <---- 非連結リストボックス A-101__大学ノート A-101_______\100 A-203__大学ノート C-103_______\300 値集合タイプ=値リスト 列数=3 列幅=3cm;4cm;5cm さて、実際にフォームを作成し、'A' を入力し{ENTER} を押してみました。 Forms(LookupA) の品番リストには、上述のように表示されました。 ここまでで、私が書いたコードを紹介します。 Private Sub 品番スペル_AfterUpdate()   Dim strSQL As String   If Len(Me.品番スペル & "") > 0 Then     strSQL = "SELECT 品番,品名,単価 FROM A WHERE 品番 LIKE '" & Me.品番スペル & "%'"     Me.品番リスト.RowSource = DBSelect(strSQL)   End If End Sub DIM 行まで含めて僅か4行です。 ※こんなやり方でよかったら、DBSelect()を補足します。 ※理由:このやり方が初心者向きか否かが判らないからです。

kojirouap
質問者

補足

 早速のご回答ありがとうございます!  なるほど、コントロールに値を表示するのではなく、リストボックスに値を表示するのですね!まったく想像していませんでした。発想の転換ですね、勉強になります。  コードの意味もこれくらいならなんとか理解できそうです!ので、ぜひぜひ補足をお願いしたいと思います♪