• ベストアンサー

ACCESS2003でテーブルと一致したときだけメッセージを表示するには?

はじめまして、アクセスでデータベースを作成していたのですが、わからないことが出てきてしまい困っております。 フォーム上で、テキストボックスに入力した文字列(テキスト形式)をテーブル内のデータと照合し、一致すれば「保留対象の商品です」、なければ「保留対象の商品ではありません」といったテキストボックスを表示できるようなボタンを作りたいのです。 登録条件を変更するのではなく、メッセージが表示できさえすれば良いのです。 IFとDcount、msgboxを組み合わせることで表示できるような気はするのですが、エラーが出てしまい、作動してくれません。 私の書いたVBAコードは IF Dcount("フィールド名","テーブル名","フィールド名="" & Me!テキストボックス名") = 1 Then Msgbox "保留対象の商品です" Else msgbox "保留対象の商品ではありません" End IF 結局、テキストボックスに入力されたデータと対象のテーブル内データを検索し、一致するデータを数えて、1個のときにメッセージを出すようにしてみたのです。 しかし、うまく動いてくれません。。 詳しい方がいらっしゃったらアドバイスいただければ幸いです。 よろしくお願いいたします。

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

  • ベストアンサー
  • hotosys
  • ベストアンサー率67% (97/143)
回答No.1

"の位置がおかしいのでは? フィールド名のフィールドが何かによって 文字列で"または'で囲む場合。 If DCount("フィールド名", "テーブル名", "フィールド名=""" & Me!テキストボックス名 & """") = 1 Then または If DCount("フィールド名", "テーブル名", "フィールド名='" & Me!テキストボックス名 & "'") = 1 Then 数値の場合。 If DCount("フィールド名", "テーブル名", "フィールド名=" & Me!テキストボックス名) = 1 Then

tohya2316
質問者

お礼

実際にコードを打ち直してみたところ、正常に作動しました! どうもありがとうございました! フィールドがテキスト形式の場合は扱いが難しいですね^^; 区切り方をいまひとつ理解していません。。 もっと勉強してみます! 迅速なお返事ありがとうございました。

その他の回答 (2)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

DCount関数の構文がでたらめですね 詳しくはNo1さんの回答を見てください 後ヒットするものは必ずひとつなんですか 2つ以上の場合もあるなら条件は If DCount("フィールド名", "テーブル名", "フィールド名='" & Me!テキストボックス名 & "'") >= 1 Then

tohya2316
質問者

お礼

迅速なご返答ありがとうございます。 おかげさまで正常に作動しております。 どうもありがとうございました。 それにしても、テキスト形式の扱い方は難しいです。。

  • keirika
  • ベストアンサー率42% (279/658)
回答No.2

フォームのレコードソースにテーブル名がセットされているでしょうか。 一度、フォームのプロパティを表示し、レコードソースを確認してください

tohya2316
質問者

お礼

ご回答ありがとうございました。 結局、私の構文ミスだったようです^^; おかげさまで正常に作動しております。 どうもありがとうございました。

関連するQ&A

  • エクセルテーブルをアクセステーブル取込む

    エクセルで作成したテーブルデータを取り込むときに余分に空白のレコードが取り込まれてしまうんですが原因が分かりません。 下記コードで処理してます。 Dim strac As String Dim strxls As String Dim strrange As String Dim strMsg As String strac = "T_障害票マスタ" 'Accessテーブルを指定します。 strxls = テキスト0 'エクセルファイルを指定します。 strrange = "T_障害票!" 'データ入力のシート名とセル範囲を指定します。 strMsg = "エクセルファイル" & strxls & " を、Accessファイル " & strac & _ "として、データ入力を行います。" & _ "よろしければ、OKをクリックして下さい。" 'MsgBoxのメッセージ If strxls = "" Then MsgBox "ファイルを選択して下さい。" 'テキストボックスの確認 Exit Sub End If 'DoCmd.DeleteObject acTable, strac 'テーブルを削除します。 If MsgBox(strMsg, vbOKCancel, "import") = vbOK Then '最初のデータをフィールド名として使います。 DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, _ strac, strxls, True, strrange MsgBox "インポートは、正常に完了しました。" End If Exit Sub なお取り込むテーブルデータはフィールド行を抜かして常に1レコードだけです。 アクセスでは既存のテーブルに保存してます。 詳しい方お願いします。

  • AccessのVBAにおいて,アクセスフォームに表示されている「値」を

    AccessのVBAにおいて,アクセスフォームに表示されている「値」を変数の中に格納したい。  例えば,オートフォームの単票形式でフォームを作成した場合,「番号」「製品」といったフィールドが2個あるテーブルを使うと,「番号」「製品」という名前のテキストボックスが2個ほどできます。 (フィールド名やテキストボックス名は問題ではありません。) このフォーム上に「ボタン」を配置し,このボタンをクリックした時に,「製品」というテキストボックスの内容を,メッセージボックスで表示させたい。 MsgBox (Me.製品.Text) と書いてもエラーとなります。 実際には,このフォームで欲しいデータを見つけた時,ボタンクリックで,テキストボックスに表示されている内容をグローバル変数に格納したいのですが,方法が分かりません。 Access 初心者です。どなたかよろしくお願いします。

  • Access2003 コントロールの(?)エラーメッセージ

    Access2003 コントロールの(?)エラーメッセージ excelからインポートしたデータでテーブルを作り、そこから、今後もデータを増やしていけるようにフォームを作ろうとしています。 まず、オートフォームでフォームを作りました。 データの中に「カテゴリー」を表示するフィールドがあり、そこはフォーム入力時にプルダウンで選んで登録できるように、コンボボックスを使ってカテゴリーフィールド(コントロール)を作りなおしたところ、「例えば数値型のフィールドに文字列を挿入しようとした」というようなエラーメッセージが出ます。 このフィールドは元からテキスト値が入っていたところで、プルダウンで選べるようにしたカテゴリーリストのテーブルの方もテキスト値で入力しています。 なので、このエラーメッセージが「例えば」と言っているのと全く同じエラー(数値型のフィールドにテキスト値を入れる)がでているわけではないとは思うのですが、他に何が悪のいかがわかりません。 どこをどうしたらいいのでしょうか?

  • テーブルのデータをテキストボックスに表示させるには?

    ソース修正をしています。 が、約4年ぶりの仕事で、行き詰まっています。 AccessVBAは初心者です。 この問題で、もう3日を費やしてしまいました・・・。 どなたか、助けてくださいませ!! Formに約10個のテキストボックスがあり、そこにはあるテーブルのデータが表示されるようになっています。 そこで、もう一つ表示させたいデータがあったので 1)Formにテキストボックスを1個追加し、 2)テーブルに一つフィールドを追加し、 3)テーブルにデータを入れるためのINSERT文を修正し、 4)実行してみました。 が、テキストボックスには #Name? が表示されて、どうも思ったと通りに動きません。 テーブルを確認すると、データはちゃんと入っていますが、テキストボックスにはどうしても値が入ってきません。 よろしくお願いします。m(__)m

  • アクセスでメッセージボックスを表示させたい。

    アクセスのデータベースで、あるテーブルが日付の入力になっています。 あとで計算したいので、日にちまできちんと入力してほしいのですが、 9月末、とか 5月ごろ、という入力する人が多いです。 そこで、テーブルをデータ型(日付)にして定型入力を指定しました。 すると、間違った入力をした場合、 「このフィールドに入力した値が不正です。」 というメッセージボックスが表示されます。 でも、このままではどのように入力したらいいか伝わらないので、 メッセージボックスを 「日にちまで入力してください。」 という形で表示させたいのですが、どうしたらいいですか? 教えてください。

  • Accessのフォームについて教えて下さい

    Access 2010のフォームについてお教え下さい。 テーブルにはテーブル名T1、フィールド「ID」、「Price」というテキストボックス。2フィールドがあります。 テーブルの各データは、 ID,Price 001,100 002,200 003,300 フォームにはにフォーム名F1、「cmb」というコンボボックスと、「price」というテキストボックスが配置されています。 「cmb」のデータは値集合ソースで、「SELECT T1.ID FROM T1;」と指定しています。 「cmb」で選択したデータのプライスを「Price」テキストボックスに表示したいと思います。 例えば、「001」を選択したら、「100」と表示されるようにしたいと思います。 色々調べているのですが、どうやってやるのかわかりません。どのように実現したらよろしいでしょうか? よろしくお願いいたします。

  • テーブルのデータをテキストボックスに表示させるには?II

    先日、同じ質問しましたが、 回答はあったものの、解決出来ずに、困っています!! どなたか、助けてください! Formに約10個のテキストボックスがあり、そこにはあるテーブルのデータが表示されるようになっています。 そこで、もう一つ表示させたいデータがあったので 1)Formにテキストボックスを1個追加し、 2)テーブルに一つフィールドを追加し、 3)テーブルにデータを入れるためのINSERT文を修正し、 4)実行してみました。 が、テキストボックスには #Name? が表示されて、どうも思ったと通りに動きません。 テーブルを確認すると、データはちゃんと入っていますが、テキストボックスにはどうしても値が入ってきません。 また、追加前の状態の約10個のテキストボックスには、ちゃんとデータが渡ってきます。 このたび追加したテキストボックスだけがダメです。 テキストボックスの作成方法がNGなのでしょうか? よろしくお願いします。m(__)m

  • Accessの不一致クエリについて

    Accessの初心者です。二つのテーブルの異なるフィールどを比較する方法について、教えてください。 例えば、"6523610"という数字が両方のテーブルにあるかどうか調べたいとします。 テーブルA 523(フィールド名:契約コード)+610(ID) テーブルB 6523(フィールド名:取引コード)+61(フィールド名:地域コード) と、それぞれ構成が違います。頭につく"6"と最後の"0"は共通の数字です。クエリで新たなフィールドを作って、"6523610"にするまではわかるのですが、どのフィールドを関連づけていいかわかりません。このような場合は、不一致クエリではできないのでしょうか? 仕事で、明日中にデータを調べなければいけないので困っています。 よろしくお願いします。

  • Accessで任意のテーブルをひとつ表示させたいのですが…

    行いたい事は、年と月ごとに作成されている「テーブル」を表示させたいという事です。任意のテーブルをひとつ表示させることができればよいのです。 コンボボックスを作成することにし、任意のテーブルをひとつ選択・表示させることを考えました。「値集合ソース」を「テーブル/クエリ」に設定し、「値集合タイプ」を先述のテーブルの任意のテーブルのひとつを設定し、マクロビルダの「アクション」に「テーブルを開く」とし、テーブル名入力欄に「値集合タイプ」で設定したテーブル名を設定しました。確かにこのテーブルは表示されますが、 (1)コンボボックスの、選択を促す下矢印を押下すると表示させたいフィールドがテーブルの左から2番目にあるのですが、このフィールドではなく最初のフィールド(オートナンバー)が表示されてしまう。 (2)コンボボックス内は空欄であって欲しいのに、選択したオートナンバーが黒の反転点滅表示してしまう。 (3)一番行いたい、任意の年と月で作成されたテーブルを選択させる表示ができない。 と、以上が現状です。 良きアドバイスをお待ちしております。 宜しくお願い申し上げます。

  • Access2000:[パラメータの入力]ダイアログを表示されないようにするには

    初心者です。よろしくお願いします。 フォームが完成したあとで、クエリ/テーブルから削除したいフィールドが発生してしまいました。 削除したいフィールドのコントロールをフォームから消した後に、クエリ/テーブルからフィールドを削除しました。 削除したあとにフォームを開いたところ、[パラメータの入力]ダイアログボックスが表示されてしまいました。(メッセージは"開こうとしているフォーム名" クエリ:"削除したフィールド名"です) このダイアログボックスが表示されないようにしたいのですが、どうすればよいでしょうか。 ちなみに削除したフィールドは単なるテキスト型で、選択クエリでも抽出条件等は設定していませんでした。 初歩的な質問ですみませんが、よろしくお願いします。