• ベストアンサー

Accessの実行時エラーについて

度々恐れ入ります。 実行時エラー’2424’: 指定した式にMicrsoft Accessが見つけることができないフィールド、コントロール、プロパティ名が含まれています。 のメッセージが出てしまいます。 記述したのは オブジェクト=商品コード、プロシージャボックス=Exitの状態で Private Sub 商品コード_Exit(Cancel As Integer) 商品名 = DLookup("商品名", "商品", "商品コード='" & 商品コード & "'") 販売単価 = DLookup("販売単価", "商品", "商品コード='" & 商品コード & "'") 仕入単価 = DLookup("仕入単価", "商品", "商品コード='" & 商品コード & "'") End Sub 以上です。 商品名と商品コードは、商品テーブルと見積明細テーブルの両方に存在するフィールドで、商品名は商品テーブルの主キーにしています。 また、データ型はすべてテキストです。 またもや、テキストどおりの設定をしたはずなのに、何が原因なのか見当つかない状態です。

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

  • ベストアンサー
  • kmor
  • ベストアンサー率27% (225/825)
回答No.1

wakabonさん、毎度(^^)/ 各フィールドを[]で囲ったらいかがでしょう。 もし、抽出条件である商品コードがフォームのコントロールであれば forms![フォーム名]![商品コード]として。 Private Sub 商品コード_Exit(Cancel As Integer) 商品名 = DLookup("[商品名]", "商品", "[商品コード] ='" & Forms![xx]![商品コード] & "'") 販売単価 = DLookup("[販売単価]", "商品", "[商品コード] ='" & Forms![xx]![商品コード] & "'") 仕入単価 = DLookup("[仕入単価]", "商品", "[商品コード] ='" & Forms![xx]![商品コード] & "'") End Sub としては? Accessはさほど経験がないので、この程度しかお答えできません。 申し訳ないです。

参考URL:
http://support.microsoft.com/Intl/Japan/Support/Kblight/T005/9/13.asp
wakabon
質問者

お礼

早速にありがとうございます。 もう、頭が働きません。能力の限界ですので、一休みさせていただき、明日、確認させてもらいます。 ありがとうございました。

その他の回答 (1)

  • o23
  • ベストアンサー率36% (64/175)
回答No.2

Private Sub 商品コード_Exit(Cancel As Integer) 商品名 = DLookup("商品名", "商品", "商品コード='" & 商品コード & "'") End Sub はOKなのですね?で、あれば販売単価、仕入単価の分を順に増やしてどちらが (両方?)原因なのか特定しましょう。次にフォーム上のコントロール名を確認 してください。コントロール名が"販売単価"、"仕入単価"になっていますか? その他、ちょっと気になる点ですが、 >商品名は商品テーブルの主キーにしています 普通は商品コードを主キーにすると思いますが何か理由があるのでしょうか? >また、データ型はすべてテキストです 販売単価や仕入単価も?通常は通貨型を使います。 イベントのタイミングもフォーカス喪失時にやってしまうと、商品コードを 入力していない状況でフォーカスを喪失した時の処理が必要ですね。

wakabon
質問者

お礼

いまだ解決いたしませんが、この件に関しては、教本発行会社に問い合わせることにいたしました。 なお、アドバイスいただきました皆様のご厚情と情報に、深く感謝し、御礼申し上げます。 ・・・・ああ、アクセスが嫌いになりそうだ・・・

関連するQ&A

  • ACCESSのコンパイルエラーについて

    初心者です。 教本を見ながら練習していまして、下記のコードを、サブフォームの商品コードコンボボックスのプロパティ→イベント→フォーカス喪失時→ビルド→オブジェクト=商品コード、プロシージャボックス=Exitの状態で Private Sub 商品コード_Exit(Cancel As Integer) 商品名=dlookup("商品名","商品","商品コード='"&商品コード&"'") End Sub の記述をしたときに、コンパイルエラー 修正候補:区切り記号または) のメッセージが出てしまいます。教本どおりに記述したはずですし、商品テーブルには、商品名と商品コードがともにテキスト型で登録されております。 原因が見当つかないのですが・・・・。 多分、どこかで大ボケしているとは思うのですが、わかりません。 的を射ない質問かもしれないので、恐縮ですが。 Access2002 VB 6.0です。

  • access でエラーを回避するには?

    アクセス初心者ですが、宜しくお願い致します。 現在、納品伝票を作っており、 納品フォームに得意先情報、合計金額 サブフォームに売上げ商品と数量、単価、金額などを表示、 同じフォーム上にボタンを作って、マクロで印刷を行う設定にしています。 サブフォームには商品コードフィールドがあり、 別にある商品テーブルから DLookup関数を用いて その商品コードの商品名と単価を自動入力させ、 サブフォーム上で合計金額を計算しています。 合わせて商品コードはコンボボックスになっており、 各得意先名により表示内容が変わるようにしてあります。 商品コードのフォーカス喪失時イベントには Private Sub 商品コード_Exit(Cancel As Integer) If Not IsNull(商品コード) Then 商品名 = DLookup("商品名", "取り扱い店名クエリ", "商品コード='" & 商品コード & "'") 単位 = DLookup("単位", "取り扱い店名クエリ", "商品コード='" & 商品コード & "'" End If End Sub こんな感じで記述しているのですが、 サブフォーム上の商品コードにカーソルがある時に フォーム上の印刷ボタンを押すと、 実行時エラー2424 「指定した式にアクセスが見つける事ができない フィールド、コントロール、プロパティ名が含まれています」 となってしまいます。 例えば、サブフォームの1レコード目に入力をし終わり、 2レコード目の商品コードにカーソルが移った時点で印刷ボタンを押す。 2レコード分の入力を済ませたあと、エンターキーを押し続けて (カーソルはカレントレコード内に戻る様にしています)、 再度商品コードにカーソルが合った時に印刷ボタンを押す。 などの場合です。 何とかこのエラーを回避する手立てはありませんでしょうか? どうか宜しくお願い致します。

  • Access DB 商品名の扱いについて

    (テーブル名):(フィールド名) 商品テーブル:商品名。 単価数量テーブル:商品単価、数量、仕入番号、商品名。 仕入テーブル:仕入番号、仕入日、注文日、手数料、輸送費など。 売上テーブル:売上、販売日付、仕入番号、商品名。 リレーションシップ:一対多 商品テーブル商品名-単価数量テーブル商品名 商品テーブル商品名-売上テーブル商品名 仕入テーブル仕入番号-売上テーブル仕入番号 仕入テーブル仕入番号-単価数量テーブル仕入番号 このように作成しました。 ここで問題なのが、商品名の入力です。 仕入テーブルをメイン、単価数量テーブルをサブフォームにしてフォームを作成しました。 さて、商品名を単価数量テーブル商品名フィールドのサブフォームから入力・・・と思ったら、商品テーブル商品名フィールドに名前がないためエラーが出ます。(参照整合性をしているため) サブフォームの入力フィールドを商品テーブル商品名に変更すれば入力できます。 しかし、重複した商品名を入力できません(重複しないに設定しているため) 何故このようなことをするか?ですが、同じ商品でも購入日が違えば単価が違う場合があります。 ですので単価数量テーブルでは同じ商品名を使用する必要があります。 しかし、商品テーブルでは同じ商品名は必要ありません。 もちろん先に商品テーブルに商品名を入力すれば問題ありませんが、入力効率から言って問題あります。 さてここで質問なのですが、一対多の多から商品名を入力して一側に反映できないでしょうか? 一側にすでに同じ商品名がある場合は反映してはいけません。 ちないにVBAやSQLはコピペぐらいはできますが、書けませんのでご了承を。

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

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

  • 【Access97】DLookupについて

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

  • アクセスのクエリの作り方

    初心者なので教えてくださいませんか? アクセスでテーブルを複数作成して、それをクエリで結合するときに、どのテーブルからどのフィールドを選べばいいのかわかりません。 例えば・・・ 売上テーブル:NO 売上日 商品コード 数量 商品テーブル:商品コード 商品名 単価 この二つのテーブルを結合するクエリを作ります。 NO 売上日 商品コード 商品名 単価 数量 上記のフィールドを使用したいのですが、このとき、商品コードをどちらのテーブルのを使ったらよいのでしょう。 その判断は何からしたらよいのでしょうか。 うまく説明できているかわかりませんが、よろしくお願いします。

  • アクセス2003 ルックアップについて

    下記のテーブルで次のようなことをしています。 <商品分類> ・商品ID(オートナンバー)・・・入力順に自動で入ってます。 ・コードA(数値型)・・・商品の種別を約10種類の番号で振り分けています。 ・コードB(数値型)・・・メーカーごとに分けられるように番号をつけています ・コードC(数値型)・・・コードA・Bが共通なもの同士を個別番号で分けています。 ・商品名(テキスト型)・・・商品名を入力しています。 ・商品コード(テキスト型)・・・仕入先からの伝票上のコードを入力しています。 ・備考(テキスト型)・・・商品名・商品コードだけでは分かりにくい時の補足を記入しています。 <仕入記録> ・仕入記録ID(オートナンバー)・・・入力順に自動で入ります。 ・仕入年月日(日付型)・・・仕入年月日を入れています。 ・仕入先(テキスト型)・・・仕入先を入力しています。 ・商品名(ルックアップ/テキスト型)・・・<商品分類>の商品名が表示されるようにしています。 ・数量(数値型)・・・商品の数量を入れています。 ・単価(通貨型)・・・商品の単価を入れています。  現在<商品分類>に約1000商品のデータを入れてあります。 ルックアップの表示はコードA・B・Cの昇順で表示し、選択後は商品名が表示されるようにしてあります。 (コードA~C・商品名・コードA~Cの7列で最初の3列の列幅を0cmにしてます) (1)この状態で<商品分類>の商品名やコードA~Cを書き換えた場合、仕入記録の商品名にはすべて反映されるのでしょうか? 特にコードCを変えた場合はどうなるんでしょうか? 例:コードA  コードB  コードC  商品名     10     5     1   大根              ↓    コードA  コードB  コードC  商品名      10     5     1  ニンジン    コードA  コードB  コードC  商品名      10     5     2    大根 上記のようにした場合、既に入力された<仕入記録>のデータの商品名大根はどうなるんでしょうか?  (2) <仕入記録>でクエリを作成し、商品ごとの仕入金額を出そうとしているんですが、(1)のようなデータの変更をした場合どのように反映されるんでしょうか? 書き方がややこしいと思いますが宜しくお願いします。

  • アクセス2003 集計『最後』

    いつもお世話になっています。 <仕入記録テーブル>で商品Aを下記のように複数回入力してあります。(数字がズレてたらすいません。) | 仕入ID | 仕入年月日 | 商品名 | 数量 | 単価 |    76    2006/4/26       A      5     108    78    2006/4/28       A      5     108   253    2006/7/20       A     10     108   815    2006/11/10       A     10     120   843    2007/1/11       A      5     108   852    2007/1/12       A      2     120  1001    2007/2/19       A     10     120 クエリで<仕入記録テーブル>から各商品の最も最近の仕入単価を取り出したいと思い、デザインビューで<仕入記録テーブル>から<単価フィールド>を選択し集計方法を『最後』に設定しました。 すると表示された金額がなぜか108円になってしまいました。 やり方がおかしいのかと思いDLast関数というのも試してみたのですが、構文がイマイチ理解できずうまくいきませんでした。 仕入記録から仕入年月日の最も新しい仕入単価を出すにはどうしたらよいのでしょうか? よろしくお願いします。 

  • Accessの自動計算のマクロについて

    Access初心者のものです。 Accessで商品管理のデータベースを作成しています。 主なテーブルの内容は、 商品番号、商品名、仕入数、仕入単価、販売数、販売単価、などです。 そしてクエリで、 仕入数×仕入単価=仕入金額、販売数×販売単価=販売金額を作成し、 入力フォームのフィールドで仕入数、仕入単価を入れれば仕入金額が計算されるようにしています。 そこでですが、仕入金額の表示が仕入数、仕入単価を入れて仕入金額のフィールドにフォーカス移動したときに計算結果が表示されずレコードの移動して元に戻ると計算結果が表示されます。 結果的には計算結果は表示されるのですが、レコード移動ではなくフォーカス移動後に計算結果を表示させるには、どのようなマクロの設定をすればよろしいのでしょうか? マクロについてはあまり詳しくはない為、その点ご考慮くださいますよう宜しくお願いいたします。

  • VBA:フォームからフィールド名を指定して検索した

    Private Sub 商品コード_LostFocus() Dim ShukkaPtn As String ShukkaPtn = Me.出荷パターン Me.売上単価 = DLookup("[ShukkaPtn]", "[Q_単価分類別_単価]", "[商品コード]='" & Me.商品コード & "'") End Sub 商品コードと出荷パターンというテキストボックスがあって、 [出荷パターン]に14という数値がはいってるとしたら レコードセット[Q_単価分類別_単価]から商品コードで検索して、[14]フィールドにある数値を出したいのですが上の式では間違っているのでしょうか? どこをどう修正していいのかが調べてもわかりませんでした。 宜しくお願いします。