重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

accsessで顧客コードで氏名を呼び出す方法がよくわかりません。顧客コードは9桁の数字です。ネット上の書き込みを参考にしてみたりしましたがうまくいきません。ほぼ初心者ゆえ、お手柔らかにお願いします。バージョンは2000です。

質問者からの補足コメント

  • すみません、そもそも論ですが、選果日、生産者、荷受明細と言う大きな分類があって、其々についてテーブルを作成するのは合ってますよね。そこからデータ入力フォームを作成したいのですが、生産者については随時更新したくないのです。追加をする場合は、別のフォームから追加をする事とし、荷受データを入力するフォームでは、生産者コードで氏名を自動表示だけしたいのです。選果日・荷受明細はデータを蓄積します。となると、これらを全て統括したテーブルが必要という事になるのでしょうか?この統括テーブルに生産者コードを受けさせて、生産者テーブルから氏名を持ってくると言う形になるかと思いますが、その方法に悩んでおります。説明が悪く伝わらないかも知れませんが、生産者テーブルは更新しないが、生産者コードで名前を参照したいと言う事です。よろしくお願いします。

      補足日時:2020/06/09 10:32

A 回答 (11件中1~10件)

横から失礼します。



> accsessで顧客コードで氏名を呼び出す
というのが曖昧ですが
フォームで氏名を表示する、ということであれば
非連結のテキストボックスを配置し

コントロールソースに
「生産者コード」がテキスト型なら

= DLookUp("氏名", "生産者テーブル", "生産者コード= '" & [生産者コード]) & "'"

9桁の数字 が 数値型なら
= DLookUp("氏名", "生産者テーブル", "生産者コード= " & Nz([顧客コード],0))
とか。
    • good
    • 1
この回答へのお礼

ありがとうございました。見事に的中して、思った通りの結果を得ることが出来ました。

色々とご丁寧なご教授を頂きました皆様に改めてお礼を申し上げます。誠に有り難うございました。

お礼日時:2020/06/15 09:53

マクロじゃなくって、VBAで書いています。


http://accessvba.pc-users.net/form/event.html
    • good
    • 0
この回答へのお礼

もしかして、荷受明細テーブルに生産者コードを格納しており、そのコードを参照させて、生産者テーブルから氏名を引き出すと言う形をしようとしてるために、お教えいただいた事が結果にならないのでしょうか?その場合は、荷受明細テーブルの生産者コードと生産者テーブルの生産者コードを結び付けないといけないと言う事でしょうか?フォーム上に設置しているのは、荷受明細側の生産者コードで、そこに入力された数値を生産者テーブルの生産者コードと照合して名前を表示せよと言う事をやりたいのです。浅はかな考えで、dlookupで何処からでも引っ張ってこれると思ってたものですから、説明足らずだったかも知れません。

お礼日時:2020/06/10 13:02

>フォームで生産者コードの入力があった場合、生産者名を自動で表示する


dlookupを使うなら、、、
フォーム上にtext1 という名前のテキストボックスを配置して、

あとボタンを置いてクリック時のイベントで
MsgBox DLookup("顧客名","テーブル名","顧客コード=" & me.text1)
とすると、顧客名が出てきませんか?

フィールド名はそれぞれ、なおしてください。
また、顧客コードが文字列の場合は、最後のところを、
"顧客コード=’" & me.text1 &”’”)
として、シングルクオートでくくる必要があります。

実際に入っているのは、”顧客コード=’000000001’”  
のような形になるべきです。
    • good
    • 1
この回答へのお礼

試しにテキストボックスを置いてボタンのイベントに記述をしてみましたが、マクロを見つけることが出来ないとのエラーになりました。

お礼日時:2020/06/10 09:57

https://allabout.co.jp/gm/gc/453017/
マスターテーブルのデータの入力方法はこんな感じの連結フォームで行けます
https://sites.google.com/site/hoseidata3/home/06
フォームから、追加クエリを実行する例です
https://www.sk-access.com/syo_query/sqa010_ketsu …
クエリで、テーブルを結合させるには
    • good
    • 0
この回答へのお礼

色々と詳しく教えて頂きありがとうございます。何とかテーブルとフォームの構築は出来ました。やっぱりフォームで生産者コードの入力があった場合、生産者名を自動で表示すると言うのが上手く行きません。パラメータークエリで生産者コードのテキストboxの値を拾う様にとか考えてみましたが、動きません。バージョンも古いので新しいバージョンでご説明頂くとメニューの並びや操作も違って難しいです。後ここだけ解決すれば良いのですが。最新バージョンではここらへんの要望が多い事は簡単にできる様になってるんですかね?この値代入機能は常用機能だと思うのですがね。まぁ後もう少しなので頑張ります。

お礼日時:2020/06/09 15:40

もうちょっと待っててね、、、


何か参考になりそうなもの探してみるから。
    • good
    • 0
この回答へのお礼

ありがとうございます、恐縮です。

お礼日時:2020/06/09 13:00

このような状況では、こういう質問サイトでやり取りをしながら作っていくのは非現実的かもしれませんが、、、


アクセスは、いろいろな使い方ができ、人によって作り方が変わるので何が正解というのもありません。
私も、プログラミングは高校生の頃趣味で触っていた程度で専門家ではありませんし、アクセスも
もう、ずいぶん長いことさわっていませんが、クエリ以外は、VBAで書くという方法で使っていました。
(なぜかクエリの実行はADOなどでSQLを実行させるより早く実行できたりすることが多かったため)
なので、私が教えると、普通の人があまり使わないめんどくさい使い方になるかもしれません。

まずは、テーブルですね。 
生産者マスター
荷受けマスター
物品マスター (荷受けする物品が複数ある場合は)
荷受データ 

最低でも、この程度は必要と思います。
で、マスターテーブルに関しては、基本的にそのデータは手入力することになります。

荷受けデーターに関しては、それぞれのテーブルのデータを利用しながら、入力していくことになると思います。
実際に荷受けデータに入っている情報としては、生産者コードがあれば、十分でそこに生産者の名前を入れる必要はありません。 (それが、RDBというものです。 ただし、入力時には間違いを防ぐために、それが見えたりする状況は必要ですし、伝票などを作り上げる際には、そういう情報を付加することは必要です。 その時は通常は連結クエリなどを使いますが、DLookupなどを使うことも可能です。)

これらを踏まえたうえでテーブルを作成し、「荷受けデータ」のレコードを生成する方法を考えることになります。私は、非連結フォームより、ADOでSQLを実行させるという方法しかやりませんでしたが、非連結フォームから、追加クエリを実行させたり、連結フォームを使ってもできます。 たぶん、非連結フォームから、追加クエリを実行するのが一番無難だと思います。 これは、フォーム上にテキストボックス等を配置しそこに、検索、手入力等で設定した情報を、ボタンなどを押すことによって、それらの値をテーブルにいれるという追加クエリを実行させることによって、新規レコードを生成します。 このフォーム上で、(通常想定する操作は)生産者の名前などから、生産者コードを検索するというものになると思います。 

この辺までは、理解できますでしょうか?
    • good
    • 0
この回答へのお礼

ご丁寧なご教授有難うございます。お教えいただいた事は理解できるのですが、それを応用してみると上手くいかないのです。でも光が見えた気がしてます、頑張ってみます、ありがとうございました。

お礼日時:2020/06/09 12:29

できますよ。



顧客コードが文字列なら、
strCustcode に顧客コードをいれて、
strCustname = DLookUp("顧客名","テーブル名","顧客コード=" & strCustcode)
とすれば、strCustnameに顧客名が格納されるはずです。

実際に、どういう状況から顧客名を参照させたいのかがよくわかりませんので、上記で実装できるのかよくわかりません。 何をする段階で、これをやりたいのですかね?
    • good
    • 0
この回答へのお礼

ありがとうございます。選果日と荷受データを入力する時に生産者コードの入力で名前を自動表示させたいのです。そして、レポート出力時や後からのデータ参照時に格納されている生産者コードが入ると名前が自動表示される形にしたいのです。

お礼日時:2020/06/09 12:19

クエリができたのであれば、フォーム上にボタンを配置し、それをクリックしたときのイベントでクエリを実行するとかすれば、出てくるようになります。

    • good
    • 0
この回答へのお礼

ありがとうございます。入力していきなり参照させる事は無理なんですね。EXCELの様にVlookupでみたいな事は無理なんですか?調べた所、Dlookupと言う関数があるようですが、これも解釈が悪いのか物になりません。

お礼日時:2020/06/08 22:27

名前で検索するのと勘違いしました。


顧客コードの下に
[顧客コードを入力してください(9桁)]
とでもしておき、クエリを実行させ、顧客コードを入力すると、対称データが抽出されます。
    • good
    • 0
この回答へのお礼

ありがとうございます。フォーム上で顧客コードの入力で生産者名を自動で入力したいのです。ネットであれこれ調べて試したのですが、知識不足もあって意図する動きにならなかったので、皆様のお力をお借りしたいと思いました。

お礼日時:2020/06/08 17:48

バージョンが古すぎる、って気がします。


書籍やネットのサンプルを参考にするとき、困るのではないですか?
最低でも、2003以降を使ったほうがいいと思いますよ。

なお、初心者が無い知恵を絞っても、何も出ません。
Access関連の書籍には、顧客検索とか商品検索などの作成事例が掲載されていたりします。
また、ネットにも検索処理のプログラム事例が探せば見つかると思います。
そういうサンプルプログラムを入力して、そこに書かれたコードの意味を調べながら学習したらいいと思います。
    • good
    • 0
この回答へのお礼

ご教授ありがとうございます。10年ぶりに急に弄る事になって、いざやってみると殆ど忘れてしまって。会社のバージョンが2000なので。会社内で唯一Access経験者が私と言う事で頼まれたのですが、日付の次に生産者があってその下に詳細があると言う形で、入力フォーム上で日付を入力した後、生産者をコードで検索して名前は自動でと言う事をしたいわけですが、上手くいかないのでお伺いしたわけです。未熟ですみません。ただ、勉強してる時間がないので皆様のお力をお借りしたいと思いました。

お礼日時:2020/06/08 17:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す