• ベストアンサー

アクセスでの入力を簡単に行いたいです

よろしくお願いします。 t商品番号というテーブルがあります。 フィールドは『注文番号』と『商品名』です。 今フォームを新たにつくり、テキストボックス『注文番号』と『商品名』を作りました。 注文番号を入れると商品番号が自動で入るように、テキストボックス商品名のコントロールソースに =DLookUp("商品名","t商品番号","注文番号=" & [注文番号]) と入れましたが、#Errorとでて、注文番号をいれても商品番号が自動で入力されません。 ご意見をよろしくお願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

テーブルは ID 注文番号 商品 1 1 りんご 2 2 梨 3 3 柿 4 5 ぶどう ーー フォームを作りました。2つのテキストボックスを貼り付けました。 ラベルは テキスト0 (0は半角) テキスト2 となっています。 テキスト2のプロパティを開き、コントロールソースに =DLookUp("商品","t商品番号","注文番号=" & [テキスト0]) と入れました。 表示ーフォームビューで テキスト0 に1を入れENTERを入れると、テキスト2に「りんご」と出ました。 ーー 質問の ","注文番号=" & [注文番号]) の右あたりが原因ではないですか。

nananona_2006
質問者

補足

アドバイス有難うございます。 う~~~ん、上手く行きません。 もう少し調べてみます。

その他の回答 (4)

noname#79209
noname#79209
回答No.5

Dlookupの部分は、もし注文番号フィールドが文字型なら、 =DLookUp("商品名","t商品番号","注文番号='" & [注文番号] & "'") と、「'」で括る必要があります。 また、注文番号を入力したら、商品名が表示されるようにするには、 #4さんが言われているように、テキストボックスの「更新後イベントプロシージャ」に書かなくてはなりません。 従って、商品名テキストボックスのコントロールソースはブランクにしておきます。

  • GigaMAX
  • ベストアンサー率72% (589/814)
回答No.4

同じような処理を行ったことがあります。 私の方法は以下の通りです。 商品名ではなく注文番号のイベント→更新後処理に以下のVBAを記述します。 Private Sub 注文番号_AfterUpdate()   Me![商品名] = DLookup("[商品名]","[t商品番号]","[注文番号]=Forms![作成したフォーム名]![注文番号]") End Sub

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

>作ろうとしているのは商品検索用のフォームです。 検索用フォームだとDLookupは関係ないですね それに最初の質問では検索なんて言ってませんよ >入力を簡単に行いたいです と言っていますが、検索なの?入力なの?それとも・・・? それによって回答が全く変わってきます

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

データベースの基本的なところで誤解(あるいは理解不足)があるようですよ 質問は「t商品番号」への入力の話でしょうか だとすると注文番号というのが変ですね[商品番号]がでてこない [注文]を記録していくテーブルなら[t注文]でなきゃだめなのでは 注文のデータベースなら [商品マスタ](商品番号、商品名、・・・) [顧客マスタ](顧客番号、顧客名、連絡先、・・・) [注文](注文番号、注文日、顧客番号、商品番号、数量、・・・) のようなテーブル構造にします で、質問の様子からは上の注文テーブルに商品名フィールドも設け 商品番号を入力したら商品名も自動的にはいって欲しいというもののように推測されますが これは初心者(特にExcelからの転向者)がよくする質問ですが データベースではこのようなことはやりません 注文テーブルには商品番号だけを格納し商品名は格納しないのです ですから質問のようなことをやる必要はありません この辺データベースの基本で非常に大切なところです テーブルの作り方、正規化、リレーションシップ、参照整合性、クエリ などについてよく勉強してください この辺を理解せずにデータベースは作れません

nananona_2006
質問者

補足

補足させていただきます。 作ろうとしているのは商品検索用のフォームです。 『注文番号』を入れると、自動的に『商品名』が出て、 それを印刷して次へ回す。 これを実行したいのです。 よろしくお願いします。

関連するQ&A

  • ACCESS フォームの入力で

    フォームの入力でコード番号を入力すると項目が自動入力出来るようにしたくて 2つ目のテキストボックスのコントロールソースに=DLookUp("[商品名]","テーブル2","[商品コード] = [コード] ")と入力したのですが 1つ目のテキストボックスに入力すると そのときは2つ目のテキストボックスは白紙で 一度フォームを閉じてから立ち上げると2つ目のテキストボックスにも入力されています。 これは閉じないと入力されないのでしょうか? 1つ目を入力した後に表示されるようにしたいのですが・・・。 よろしくお願いします。

  • Access97で自動入力と反映が違うテーブルの場合

    こんにちは、前の質問などでフォームへの自動入力は何とかできるようになったのですが、今度はその入力したデータを他のテーブルBに反映させたいのですが、どうしたら良いのでしょうか? テーブルA 店舗コード 店舗名 ※テーブルAの管理者は私ではなく、ネットワークで私のPCと「テーブルのリンク」でつながっています。 テーブルB 店舗コード 店舗名 商品番号 他に店の情報フィールドをいくつか作成 フォームC 店舗コード 店舗名 商品番号 他に店の情報テキストボックスをいくつか作成 フォームCで、店舗コードを入力したら店舗名が自動的に入力される方法は、フォームCのレコードソースをテーブルAにして、店舗コードの更新後処理をイベントプロシージャにして、下記イベントコードを設定しました。 Private Sub 店舗コード_AfterUpdate() Me![店舗名]=DLookup("店舗名","テーブルA","店舗コード=" & Me![店舗コード] & " ") End Sub そして、フォームの残りのテキストボックスに、店と商品に関するデータを入力し、入力した全てのデータをテーブルBに反映させたいのですが、どうしたら良いのでしょうか? 自動入力の方法でDLookupを使用したのがいけなかったのでしょうか? また、できればテーブルBは商品番号順に並びかえられているのですが、入力したら商品番号のリストの一番下に挿入されるという形にしたいのです。 どうかよろしくお願いします。

  • Access2010フォーム関数からテーブル入力

    アクセス2010について過去からの質問があまりないようですので 浅学ながら質問させていただきます。 フォームのテキストボックス内にて DlookUp関数で返した値を、 "Aテーブル"へ自動で入力したいのですが、 そのような関数はあるのでしょうか? また、このような操作は Dlookupを記述しているコントロールソースから 改行でコードを入力すればよいのでしょうか? ご教示いただければ幸甚です。 よろしくお願いいたします。

  • 【Access97】DLookupについて

     Access97を使って今、データベースを作成していますが、行き詰まってしまいました。  まず大まかな構成を書くと… <テーブル> 【○○班データ】テーブル ・「データナンバー」フィールド ・「部材名」フィールド ・「部材ナンバー」フィールド ・「部材コード」フィールド 【部材マスター】テーブル ・「部材名」フィールド ・「部材ナンバー」フィールド ・「部材コード」フィールド <クエリー> 【○○班データクエリー】 「○○班データ」テーブルを元に選択クエリーを作成(全てのフィールド) <フォーム> 上記のクエリーを元に作成。 ここからが質問内容になるのですが、「部材名」をコンボボックスで入力したら、Dlookup関数をテキストボックスのコントロールソースに記述して「部材ナンバー」と「部材コード」が表示されるようにはできました。 ですが、フォームで表示された「部材ナンバー」や「部材コード」がクエリーやテーブルには反映(入力)されておらず、どうしたらいいか手詰まりになっています。 もし、対処法を御存知の方がいらっしゃったら、是非とも御教示をお願いします。 念の為にテキストボックスのコントロールソースで記述したDLookup関数を書いておきます。 「部材ナンバー」の呼び出し =DLookUp("[部材ナンバー]","[部材マスター]","[部材名]='" & [部材名] & "'") 「部材コード」の呼び出し =DLookUp("[部材コード]","[部材マスター]","[部材名]='" & [部材名] & "'")

  • アクセスのフォームに簡単入力の仕方(その2)

    以前「フォームにテキストボックスを2個配置しました。1個にコードを打ち込むと別のテキストボックスにそれに該当する項目を表示させたいのですがどうすればいいのでしょうか?入力したデータを保存するテーブルが1つ、コードと項目を保持するテーブルが1つ、それぞれ用意しています。」と質問したところ、コントロールソースにDLookupを入れるようにご教示いただきましたが、テーブルにデータを反映させるには、どうすればよいのでしょうか?いつも申し訳ありませんがご教示願います(涙)

  • ACCESS

    どうか皆さんのお力添えを下さい。 ACCESS2010を利用して、以下の様な注文フォームaccdbを完成させていと考えています。現在、以下のところまで作業が進んでいます。 (1)テーブル (1) 注文履歴テーブル 注文ID・・・オートナンバー型 商品No・・・テキスト型 数量・・・数値型 (2) 商品テーブル 商品No・・・テキスト型 商品名・・・テキスト型 単価・・・通貨型 (3) 顧客テーブル 顧客ID・・・数値型 顧客名・・・テキスト型 パスワード・・・テキスト型 (2)フォーム (1)ログインフォーム 顧客ID入力用テキストボックス パスワード入力用テキストボックス ログインボタン・・・VBAを使って顧客テーブルに入っている顧客ID、パスワードが一致すれば注文フォームが開くところまではできました。 (2)注文フォーム(商品画像一覧があり、それをクリックすると商品No毎に個別に作成した注文フォームにジャンプします) ・コントロールボックスで数量を選ぶ ・注文ボタンを押すと注文履歴テーブルに商品ID、商品名、商品数が反映されます。 ここからが質問内容になります。 まず、はじめにログインフォームで入力後、照合OKになった顧客ID、パスワードを その後開いた注文フォームでの注文作業が完了、または中断するまでの間、 注文履歴に自動的に入力させ続けることはできますでしょうか?複数商品の注文が あった際は注文履歴テーブルにおいて複数レコードが連続して同じ顧客IDになるような 方法はあるでしょうか? ネット通販のようなものをイメージしております。 その他にもっと効率の良いやりかたなどあればご教授下さい。 どうぞよろしくお願いします。

  • Access非連結フォームから複数レコード挿入

    お世話になっております。 Access2003を使用しております。 <テーブル ”商品マスターT”> code   shouhin =========================== 1    チョコ 2    ラムネ 3    ジュース 4    団子 5    ガム <フォーム "商品入力フォーム"(非連結・単票フォーム)>      商品コード       商品名 1行目 [非連結(テキスト0)] [=DLookUp("shouhin","商品マスターT","code=" & [テキスト0])] 2行目 [非連結(テキスト1)] [=DLookUp("shouhin","商品マスターT","code=" & [テキスト1])] 3行目 [非連結(テキスト2)] [=DLookUp("shouhin","商品マスターT","code=" & [テキスト2])] 4行目 [非連結(テキスト3)] [=DLookUp("shouhin","商品マスターT","code=" & [テキスト3])] 5行目 [非連結(テキスト4)] [=DLookUp("shouhin","商品マスターT","code=" & [テキスト4])]  商品コードを入力すると商品マスターTより商品名を引っ張ってきます。 <テーブル "履歴T"> code2   shouhin2 ==============================  データは空です 上記のものがあるときに商品入力フォームで入力した行数分だけ テーブル履歴Tにレコード追加したいのですが・・・ そういったことは可能でしょうか?非連結フォームから複数レコード追加は難しいでしょうか? 以上宜しくお願いします。

  • Access2000で、コンボボックスの値から自動入力させる。

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=140115 の回答を参考に、自分なりに変更させてやってみたところ、変な結果になってしまいました。 今現在の状態としては、 「支払先テーブル」というものがあり、 No  支払先名1  支払先名2 というフィールドがあります。 また「フォーム1」というフォームがあり、 そちらには 支払先No  支払先名1  支払先名2  テキスト1 というフィールドがあります。 フォーム1の支払先Noはルックアップになっていて、選択すると、「支払先テーブル」のNo・支払先名1・支払先名2のすべてが出てきて、どれかを選ぶと、Noが出るようになっています。 希望としては、上記に書いた、フォーム1の支払先Noで、選択すると自動で支払先名1、支払先名2に自動で入力されるようにしたいのです。 一番最初にもかいたように、参照ページをみながらやったので、ためしに、新しいフィールドをフォームに作成しました。(テキスト1) こちらのコントロールソースに =DLookUp("支払先名1","支払先テーブル","No"=[Forms]![フォーム1]![支払先No]) と入力して、実行したところ、「支払先No」が空欄の場合だけ、一番最初の「支払先名1」が出てきて、支払先Noが入っているところは空欄になってしまいました。 一体どこが間違っているのでしょうか? よろしくお願いします。

  • Access DLOOKUPについて

    Access DLOOKUPについて こんにちは。Access2010でのDlookupについてお教えください。 ■注文テーブル オーダーID,商品コード,数量,お店番号 001,A01,1,お店1号 001,A02,5,お店1号 002,B01,3,お店2号 002,B02,3,お店2号 ※同一オーダーIDで商品コードが重複する事は無 ■確認用注文テーブル 商品コード,数量,お店番号 A01ですよ,1お店1号 B02です,3,お店2号 ※なんと、オーダーIDがありません。さらに商品コードに変な文字列も入っています。 ■やりたい事 フォームに「判定」というテキストボックスを配置しました。 コントロールソースで以下の条件にあっているなら○、あっていないなら×と表示したいです。 ○注文テーブル.商品コードと確認用注文テーブル.商品コードを比較。 注文テーブル.商品コードのデータが確認用注文テーブル.商品コードに含まれていること。 ○注文テーブル.数量と確認用注文テーブル.数量がイコールであること。 ○注文テーブル.お店番号と確認用注文テーブル.お店番号がイコールであること。 これらを満たしていれば、○、満たしていなければ×と表示したいです。 Dlookupでなくても、何か他に方法がありましたらお教えください。 宜しくお願いします。

  • アクセスでの、フォームとテーブルの連動の方法を教えてください

    初歩の初歩だと思うのですが、教えてください。 アクセスで、テーブルのフィールドと全く同じ内容でフォームを作りました。(受講生情報の管理) その中で「性別番号」と「性別」があり、(「性別番号」と「性別」は、別にテーブルを作っています)フォーム上では「性別番号」に番号(男なら1、女なら2)を入力すると「性別」に自動で値が入るように設定できたのですが、テーブルに反映されません。(フォームの「性別」のプロパティのコントロールソースに”DLOOKUP~”を入力しました) テーブル上にも同じように反映させるには、どうすればよいのでしょうか。 同様の質問と思われるものを参考にいろいろとやってみたのですが、どうもうまくいかなくって・・・ よろしくお願いします。

専門家に質問してみよう