• ベストアンサー

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

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

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

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

商品コードのフォーカス喪失時イベントではなく更新後処理に記述をしても同様でしょうか?

chocomarbl
質問者

お礼

おかげざまでできました。 何でもかんでもフォーカス取得時や喪失時イベントに 割り当てればいいってものじゃないですよね。 今度からはもう少し考えてイベントの設定をする様にします。 ありがとうございました。

その他の回答 (1)

noname#60992
noname#60992
回答No.1

原因がちょっと特定できませんが、 >例えば、サブフォームの1レコード目に入力をし終わり、2レコード目の商品コードにカーソルが移った時点で印刷ボタンを押す。 については、ブランクのレコードができているのかも知れません。 もしそうなのであれば、 If Not IsNull(商品コード) Then のあとにもう一個 If (商品コード) <> "" をくわえるとかいろいろ方法はあると思います。 >2レコード分の入力を済ませたあと、エンターキーを押し続けて(カーソルはカレントレコード内に戻る様にしています)、再度商品コードにカーソルが合った時に印刷ボタンを押す。 こちらはちょっと見当がつきません。 debug してみると、最初のdlookupで止まるのだと思いますが、このときの商品コードの値は読み取れていますか? 余り関係ありませんが、私はDLookUpがあまり好きではないので、アクセスを使用する場合はクエリでデータを抽出するようにしています。

chocomarbl
質問者

お礼

ご回答ありがとうございました。 ANo.2のO_cyanさんの方法でエラー回避はできました。 商品コードに何がしかのデータが入ってしまっていたのでしょうね。 ですが、ご指摘の様にブランクのレコードができてしまう様な時の対処に If (商品コード) <> "" を使うのは勉強になりました。 今のフォームをもっとスマートに快適に使える様にする為に 役立てたいと思います。 ありがとうございました。

関連するQ&A

  • Access2000 DLookup関数の使い方

    色々試してみたのですがわからないので質問させていただきます。 フォーム/サブフォームを作っています。 サブフォームにある商品コード(コンボボックス)を入力すると、同じサブフォームにある単位、単価に商品台帳テーブルの値(単位、単価)を持ってくるようにしたつもりなのですが・・・。 商品コードの更新処理後に以下のコードを記述したのですが、うまく動きません(エラーは出ない)。 Me![単価] = DLookup("[単価]","商品台帳","[商品コード] = [Forms]![フォーム]![サブフォーム]![商品コード]") どこが悪いか教えていただけないでしょうか?

  • Access2000フォーム/サブフォームにつおて

    Access2000でフォーム/サブフォーム(売上伝票)を作っています。 フォーム(売上伝票メイン)には伝票番号、売上先などを入力・・・ サブフォーム(売上伝票サブ)は商品、数量、金額などを入力します。 そこで質問ですが、サブフォームの商品は商品コード(コンボボックス)を入力すると該当する商品名、単価などを商品台帳から引いてくる、としたいと思い、商品コードの「更新処理後」に以下のコードを記述しました。   Me![商品名] = DLookup("[商品名]", "[商品台帳]","[商品コード]= Forms![売上伝票メイン]![売上伝票サブ]![商品コード]")     サブフォーム上の商品名に商品台帳の商品名を入力するとしたつもりなのですが、何も表示されません。  単価も単位も同様です。  この方法ではだめなのでしょうか?  

  • Accessのサブフォームについて

    メインフォームとサブフォームのあるフォームを作成しました。メインフォームを入力してから、サブフォームを入力し、次のレコードへ移動するのにメインフォームの移動ボタンを押すと、次のレコードのカーソルがサブフォームのフィールドへ移動します。メインフォームに移動する方法はありませんか?

  • accessでのレコード移動について

    いつもお世話になっています。 アクセス初心者です。宜しくお願い致します。 現在、アクセスを用いて納品書を作成しています。 フォームにお客様情報、サブフォームに納品品目情報を入力。 フォームヘッダーに印刷ボタンを作り、納品書を印刷すると同時に、 そのレコードの印刷済みチェックボックスがオンになる 仕様になっているのですが、 情報を入力してもすぐその日には印刷をせず、 のちに、その印刷をしていないレコードを表示させて、 あらたに情報を追加入力後、改めて印刷をする事があります。 そこで質問なのですが、 今回、このフォームに検索ボタンを作り、 印刷済みチェックボックスがオフになっているレコードを 表示させようと思うのですが、どのようにしたらよいのでしょうか? ボタンを押すごとにまだ印刷していないデータだけが 次々表示されるボタンの作り方をご教授願えればと思います。 どうか宜しくお願い致します。

  • マイクロソフト ACCESSのサブフォームについて教えてください。

    入力用のフォームを使用して、テーブルにレコードを入力し、その際にサブフォームを使用し入力履歴の一覧を参考表示させています。 フォームとサブフォームは、商品コードで関連付けていますが、フォームに商品コードを入力しただけでは サブフォームに履歴が表示されず、次のレコードに移り、再び、元のレコードに戻った場合のみ履歴が表示されます。 この場合、商品コードを入力したら、直ちにサブフォームに履歴を表示させる方法は何かありませんでしょうか。 どうぞご存知の方お助けください。

  • Accessのコマンドボタンについて

    初心者です。よろしくお願いします。 Acceess2002を利用しています。 質問は、サブフォームのある状態でメインフォームのヘッターにコマンドボタンを設置しサブフォームのレコードの最終コードにカーソルをもっていくことは可能でしょうか? サブフォームはウィザードの表形式を使っています。 説明がうまく出来ないのですが、行いたいことは1業者に何十件の入力をする際、カーソルで右のバーを動かさずに入力できるようにしたいと思っています。 宜しくお願いします。

  • Accessにてフォームを開く時にエラー

    Accessにて、メイン・サブ形式のフォームを作成しています。 サブフォームには、取引の一覧を表形式で入力していきます。 フォームを開く時に、新規のレコードから入力できるようにマクロで設定しましたが、 オブジェクト”サブフォーム名”が開いていません というメッセージが表示されうまくいきません。 ◆マクロ◆ フォームを開く ・・・ メインフォーム名 レコードの移動 ・・・ サブフォーム名            新しいレコード 上記のように設定しています。 マクロでは、不可能なのでしょうか? よろしくご教授願います。

  • アクセス初心者です

    納品書を元に仕入帳を作ってみたいと思うのですが テーブルとフォームは何となくわかったのですがクエリーでつまずいてしまいました 例 納品書 月日 A商店 伝票ナンバー 商品コード 品名 金額  入数 単価 数量 金額 売値  これを元に仕入帳を作りたいと思います 仕入帳 A商店、B商店、C商店に分けて 品名 金額 数量 単価 金額が出るように 又納品書は商品コードを入れただけで品名、金額、入数、単価が出るようにしたいのですが 納品書はテーブル、フォームは作りました 商品マスタも作りました 

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

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

  • 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にレコード追加したいのですが・・・ そういったことは可能でしょうか?非連結フォームから複数レコード追加は難しいでしょうか? 以上宜しくお願いします。

専門家に質問してみよう