• ベストアンサー

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

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

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

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

パラメタ(括弧の中の引数)にある & 文字の前後にスペースは入れてますよね? もし入っていないのならそれが原因でしょう。 商品名=dlookup("商品名","商品","商品コード='" & 商品コード & "'") このようにすれば大丈夫と思いますよ。

wakabon
質問者

お礼

そのとおりでした。 できました。 ここ2~3日悩んでいたので、すっきりしました。誠にありがとうございました。

その他の回答 (2)

noname#7099
noname#7099
回答No.3

dlookup("商品名","商品","商品コード='" & me.商品コード & "'") って、me.をつけるべきなんじゃない? フォームの中に商品コードというテキストボックスは1つでしょうが、 商品コードと名前のつくフィールドが複数存在するのでは? (,=&'")の中に、半角英数で書くべき記号が全角になっているものはありませんか。ピリオドになってたり全角空白はいってませんか? 商品コードはテーブルのデザインでテキストと指定されていますか。数字を指定していれば、'でくくる必要はありません。 今ある行をコメントにして、再度入力しなおしてみてください。行のどこかに不正な文字がはいっているのかもしれません。

wakabon
質問者

お礼

詳細なご指摘をありがとうございました。非常に勉強になりました。

  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.1

カンマ「,」 と ピリオド「.」の間違いではありませんか?

wakabon
質問者

お礼

早速のご回答ありがとうございました。

関連するQ&A

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

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

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

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

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

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

  • Access2000 DLookup関数の使い方

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

  • データシート形式のサブフォームでコンボボックスでの入力がうまくいかない

    サブフォームはデータシート形式です。 メインフォームは受注フォーム。サブフォームは受注明細フォームです。 サブフォームのソースは受注明細テーブルです。 サブフォームに商品コードのコンボボックスがあって選択すると 該当する商品名、販売価格を商品マスタテーブルから検索して表示 したいので以下のようにためしてみました。 Private Sub 商品コード_AfterUpdate() ' ' 商品名 = DLookup("商品名", "T_商品マスタ", "商品コード='" & 商品コード & "'") ' 販売価格 = DLookup("販売価格", "T_商品マスタ", "商品コード='" & 商品コード & "'") 商品名 = 商品コード.Column(1) 販売価格 = 商品コード.Column(2) End Sub そうすると、商品コードを選択すると商品名と販売価格が 全行同じものに変わってしまいます。 どうすればよいでしょうか? ご教示していただけませんでしょうか? よろしくお願い致します。

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

    お世話になります。 vbaは超初心者なので、説明が良くないかもしれませんがご容赦ください。 フォーム上のレコード数を一件に制限する必要があり、下記サイトを参考に作成中のデータベースに構文をあてはめてみました。 http://hatenachips.blog34.fc2.com/blog-entry-189.html サブフォーム移動時のプロシージャは、 Public Sub Form_Current() Me.AllowAdditions = Me.Recordset.RecordCount < 1 End Sub メインフォーム移動時の動作として、対象のサブフォーム名を入れて下記のような構文を 作りました。 Private Sub Form_Current() Me.新規入力 サブフォーム.Form.Form_Current End Sub ところが、「コンパイルエラー 変数が定義されていません」となってしまいました。 サブフォームコントロール名はデザインビューのプロパティで、タブの「すべて」の名前の欄にあるものだと思っているのですが、もしかしてこれが違っているのでしょうか? エラーの意味がよくわからず、困り果てています。 どなたかお力をお貸しください。 よろしくお願いします。

  • Excel VBAでフォーカスを移動しない方法

    Excel VBA リストのソースを設定してあるコンボボックスから次のコンボボックスに移動する際、入力にエラーあれば フォーカスを移動しないようにするコードはどのようにすればいいのですか? 現在は Private Sub [コンボボックス名1]_Exit(ByVal Cancel As MSForms.ReturnBoolean) If [コンボボックス名2] = "" Then MsgBox "値が不正です。", vbInformation, "フォーム名" End If End Sub としています。

  • アクセス コンボボックスで全項目表示

    アクセス2000で発注書をつくっています 発注書フォームのサブフォーム「発注書sub」内で 「大項目」「中項目」「小項目」「商品コード」の 4つのコンボボックスを設置し、 絞込み検索で商品明細を入力しています 新規レコードに移動するときに 「大項目」「中項目」「小項目」の値を空白にし、 4つめの「商品コード」コンボボックスで 全商品を表示させたいのですが どう記述していいのかわかりません 現在は Private Sub 商品コード_AfterUpdate() Me.品番 = Me.商品コード.Column(1) Me.商品名 = Me.商品コード.Column(2) Me.色 = Me.商品コード.Column(3) Me.サイズ = Me.商品コード.Column(4) Me.商品単価 = Me.商品コード.Column(5) End Sub Private Sub 小項目_Enter() Me!商品コード.Requery End Sub Private Sub 大項目_AfterUpdate() Me!中項目.Requery End Sub Private Sub 中項目_AfterUpdate() Me!小項目.Requery End Sub Private Sub 小項目_AfterUpdate() Me!商品コード.Requery End Sub 'フォーカスが移ると同時にドロップダウンさせる Private Sub 大項目_GotFocus() Me.大項目.Dropdown End Sub Private Sub 中項目_GotFocus() Me.中項目.Dropdown End Sub Private Sub 小項目_GotFocus() Me.小項目.Dropdown End Sub 'テスト Private Sub 摘要_LostFocus() Me!大項目 = Null Me!中項目 = Null Me!小項目 = Null Me!商品コード.Requery End Sub です。 発注書フォーム(単票フォーム) レコードソース「発注書」 サブフォーム名「発注書sub」(帳票形式) レコードソース「発注書明細」 リンク親フィールド子フィールドともに「発注書コード」 (他に表記が必要なのがあるかもしれませんが。。) テーブル ●発注書明細 「明細コード」「発注書コード」「商品コード」「品番」「商品名」「色」「サイズ」「商品単価」「数量」「摘要」です ●商品マスタ 「商品コード」「品番」「種類」「大項目」「中項目」「色」「商品名」「サイズ」「商品単価」 です。 どなたか ご指導のほどよろしくお願いいたします

  • Access2007 サブフォームの新規レコードをすぐにフォームに表示させる方法

    サブフォーム上で適当なレコード(IDと商品名)を選択して、そのレコードにある入力ボタンを押すと、フォームのコンボボックス上にその商品名が出るようなフォームがあります。 すでに入力済みのIDと商品名は表示されます。 ところが、サブフォーム上でIDと商品名を新規入力して入力ボタンを押すと、フォームのコンボボックスは空白となり、商品データが表示されません。 しかし、一旦フォームを閉じて開くと、データは表示されています。 IDと商品名を新規入力して、そのままフォームのコンボボックスに反映させたいと思います。 入力ボタンはこのようにやってみました。 Private Sub 入力_Click() DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 Forms!フォーム!ID = Me.ID End Sub または、 Private Sub 入力_Click() DoCmd.RunCommand acCmdSaveRecord Forms!フォーム!ID = Me.ID End Sub ご教授いただければ幸いです。よろしくお願いいたします。

  • access2007でのサブフォームへの入力

    仕入入力画面なんですが メインフォーム(仕入伝票テーブル)サブフォーム(仕入伝票明細テーブル) という構成です。 メインフォームで 仕入先をコンボボックスで指定すると サブフォームの 商品を入力するコンボボックスに メインフォームで選択した仕入先で購入できる商品が選べるように したいのですが、どうすればよろしいでしょうか? メインフォームの仕入先コンボボックスを選択する度に サブフォームの商品コンボボックスで選択できる内容を反映させたい です。 仕入先A : 商品1 商品2 仕入先B : 商品3 商品4 商品5 仕入先C : 商品6 商品7 商品8 商品9 メインフォームで仕入先コンボボックスで仕入先Aを選択すると サブフォームで選択できる商品コンボボックスは商品1と商品2 メインフォームで仕入先コンボボックスで仕入先Bを選択すると サブフォームで選択できる商品コンボボックスは商品3と商品4と商品5 というようなイメージで作りたいです。 どうかよろしくお願いします。