プロが教えるわが家の防犯対策術!

ただいま、フォーム上のあるテキストボックスのコントロールソースに以下のような式を入れています。

「=DLookUp("[M00マスター]![個人名]","[M00マスター]","[M00マスター]![個人ID]=[K00オーナーテーブル]![個人ID]")」

このフォームは、K00オーナーテーブルがコントロールソースとなっています。
しかし、このテキストボックスには、エラーと出て、しかも、ずっと点滅し続けています。
この原因がお分かりになるかた、いませんでしょうか。

よろしくお願いします。

A 回答 (3件)

>テキストボックスのrecordソースがその式であれば、


>式が判断した値が自動で表示されるのが当たり前のような気がしますが・・・

私もそのように思いますよ。実際に、(リレーショナルの有無に関わらず)普通はそうです。なぜ、そうならないのか?そこが不思議だということです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
その「そこが不思議です」の原因がわかりました!

where区の値をDLookupで入れますが、その参照する値が、フォームのテキストボックスのコントロール名ではなく、そのフォームのレコードソースの値になっていました。これを、修正したらうまく出来ました。
修正前:「=dblookup("[フラグ名]","[M00フラグマスター]","[フラグID]=" & [テーブル名]![個人会社フラグID])」

修正後:「=dblookup("[フラグ名]","[M00フラグマスター]","[フラグID]=" & [txb個人会社フラグID])」

私が間違った式を入れたからでした。おさがわせしてすみませんでした。

これで、マスターとテーブルとの間にリンクをはらなくても、数値を入れただけでマスターの名称を画面に表示できるので、リレーションの設定を限りなく少なくして、ファイルの容量が大きくならないようにしたいと思います。

どうもありがとうございます。

お礼日時:2014/11/28 11:29

>フォームのそのテキストボックスをRequeryしなければ値が変わりません。


>これは、通常の動作なのでしょうか?

ウーン!
Requeryしなければ値が変わらないような関係になぜするのか?
問題は、そこだと思います。

この回答への補足

つまり、それはリレーションをはってないということですか?
参照するテーブルの主キーと、フォームのレコードソースのテーブルにある外部キーとの間にリレーションをはらないと、自動的に切り替わらないのですか?

私はアクセスのことは良くわかりませんが、テキストボックスのrecordソースがその式であれば、式が判断した値が自動で表示されるのが当たり前のような気がしますが・・・うーん

補足日時:2014/11/28 10:11
    • good
    • 0

=DLookUp("[M00マスター]![個人名]","[M00マスター]","[M00マスター]![個人ID]=[K00オーナーテーブル]![個人ID]")」



をSQL文になおすと・・・

SELECT 個人名 FROM M00マスター WHERE 個人ID=[K00オーナーテーブル]![個人ID]

つまり、Where節に誤りがあるということです。

SELECT 個人名 FROM M00マスター WHERE 個人ID=1

となるように修正すれば、このエラーは回避できます。

これを、もう一度DLookup()で書けば・・・

=DLookUp("個人名","M00マスター,"個人ID=" & 1)

さて、問題は、<<& 1>>の部分をいかにして実現するのか?通常は、フォーム上のテキストコントロールを参照させます。

=DLookUp("ID","A","フィールド2=" & [テキスト1])
「dlookup関数が使えない」の回答画像1

この回答への補足

ご回答ありがとうございます。仰るとおり、値の取得をテキストボックスを参照すると出来ましたが、しかし、フォームのそのテキストボックスをRequeryしなければ、値が変わりません。これは、通常の動作なのでしょうか?

よろしくお願いします。

補足日時:2014/11/27 20:04
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

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