推しミネラルウォーターはありますか?

教えていただきたいのですが、アクセス2000で、フォーム上に「業者コード」を入力すると、別テーブル「T_業者」より業者名、業者電話番号、業者住所、業者FAX番号がフォーム上の非連結オブジェクトに表示されるようにDLOOKUP関数を使っています。この非連結オブジェクトの業者名~業者FAXを基礎テーブルの同じ項目に保存することは出来ますか?またDLOOKUP関数をクエリー上で使用することが出来ますか?

A 回答 (3件)

q1、非連結オブジェクトの業者名~業者FAXを基礎テーブルの同じ項目に保存することは出来ますか?


a1、基礎テーブルのレコードを一意に確定する情報があれば可能です。

しかし、参照すれば済むデータを重複して持つ設計はマズイと思います。

UPDATE 基礎テーブル SET 業者名='AAAA', 業者電話番号='BBBB' ・・・WHERE XXXX=XX

というSQL文を Replace関数でフォーム情報と置換。

SQL文実行関数 SQL文

というやり方もありますし、他の方法もあります。

q2、またDLOOKUP関数をクエリー上で使用することが出来ますか?
a2、可能です。

しかし、余り、クエリーではこの手の関数は多用されない方がいいです。
多くても数個程度が良いと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。ただ内容が難しすぎて理解出来ません。基礎テーブルのレコードを1意に確定する情報とは具体的にどのようなことでしょうか?また、業者名~業者FAXは重複して持っているデータでは無く、フォーム上で入力したデータをテーブルの各項目に保存したいのです。業者名や業者のその他のデータをその都度入力するのが手間なので、業者コードを入力すると業者のデータが入り、そのデータをテーブルに保存出来ればレポート上で業者別のデータを打ち出すことが出来るかと思っております。アクセス初心者です。よろしくお願いします。

お礼日時:2008/02/26 17:16

>別テーブル「T_業者」より業者名、業者電話番号、業者住所、業者FAX番号


こういうテーブルがあるのなら
別テーブルにはT_業者の主キーだけを連結キーとして取り込みます
他のフィールドを取り込んではいけません

>非連結オブジェクトに表示されるようにDLOOKUP関数を使っています。
これもまずいですね
Excelでは他の表を参照するのにこういう関数を使いますが
Accessにはもっと強力なクエリというものがあります
フォームのソースを「T_業者」を結合したクエリにすれば
「T_業者」の全てのフィールドが表示でいるようになります

>DLOOKUP関数をクエリー上で使用することが出来ますか?
できますが・・・
データベースというものを勘違いしておられるみたいですね
表計算のExcelと同じように考えておられるようですが
両者は全く異なるジャンルのソフトです
Excelの延長で考えていたのではデータベースは理解できません

テーブルの作り方、リレーションシップ、参照整合性、クエリ
などについて勉強してください
    • good
    • 0

>ありがとうございます。

ただ内容が難しすぎて理解出来ません。

当然のことです。
ですから、理解される必要はありませんし、今の考え方は<マズイ>です。

<では、どうするのか>

ANo2さんの示唆されている方向を具体的に実現していくことです。

業者一覧:

ID__業者コード__社名___________読み___________________郵便番号__住所______TEL_______________FAX
01__101__________新日本商事__しんにほんしょうじ__111-1111__東京都__111-111-1111__111-111-9999
02__102__________安心商事_____あんしんしょうじ_____111-2222_東京都___222-222-2222__222-222-9999

取引履歴:

ID__年月日_________業者_ID
01__2008/02/25__________1
02__2008/02/26__________2

通常、業者一覧は、取引先マスターの一つとして上述のような設計で用意します。
この手のテーブル情報は、日々の取引データを記録するテーブルでは参照のために必要な情報のみ記録。
上述の例では、主キーである[業者一覧].[ID]を[取引履歴].[業者_ID]に記録しています。
これで、[業者一覧].[業者コード]の入力ミスや更改があっても、テーブルのリンクそのものへの影響は回避できます。

さて、こういう[取引履歴]でもレポートに出力するには十分です。

取引履歴クエリ:

取引履歴.ID__年月日__________業者コード__社名___________TEL________________FAX______________
01_______________2008/02/25__101___________新日本商事__111-111-1111__111-111-9999
02_______________2008/02/26__102___________安心商事_____222-222-2222__222-222-9999

SELECT 取引履歴.ID, 取引履歴.年月日, 業者一覧.業者コード, 業者一覧.社名, 業者一覧.TEL, 業者一覧.FAX
FROM 業者一覧 RIGHT JOIN 取引履歴 ON 業者一覧.ID=取引履歴.業者_ID;

このように、いかようにもテーブルを結合参照することで[取引履歴]に[業者一覧]を反映させることが可能です。

>別テーブルにはT_業者の主キーだけを連結キーとして取り込みます
>他のフィールドを取り込んではいけません
>Accessにはもっと強力なクエリというものがあります

多分、ANo2さんは、こういう事を言っておられるのだと思います。
    • good
    • 0

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