• ベストアンサー

Access 2003 VBA について

 始めまして Access 初心者です。  ある、フォームのテキストボックスに入力した内容を元に、 コマンドボタンクリック時に、Aテーブル内容を検索し、テキストボックスに 入力した内容と一致しない場合にAテーブルに格納し 一致するレコードが見つかった場合は、エラーを表示したいのですが、 どのように記述すればいいのでしょうか? 駄文失礼します。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

テーブルのデザインでそのフィールドに インデックス(重複なし)を設定すれば済む話では? フォームで行いたいのなら テキストボックスの更新前処理に if dcount("*","テーブル名","フィールド名 ='" & me!テキストボックス名.text & "'") > 0 then msgbox "すでに登録あり" cancel = true end if とかで。

tomotomo2632
質問者

お礼

直ぐにお返事できなくて、すみませんでした。 次の日に、いろいろと検索したところ nicotinism様の書かれてるようにdcountが見つかりました。 お手数かけまして、すみません。 本当に有難うございました。

関連するQ&A

  • HTML,JavaScript,accessについて...

    HTML,JavaScript,accessについて... こんにちは。趣味でJavaScriptをしている者です。 さっそくですが、質問させていただきます。 html1とhtml2があるとします。 html1に記述してあるJavaScriptでaccessに接続しているときに、 html1のフォームのボタンを押したときに、テキストボックスの入力内容と、 accessにあらかじめ作成しておいたテーブルのレコードに格納されている 文字列データが一致した場合に、html2に移動できるようにしたいのですが、 そのためには、JavaScriptの関数から、accessへSQL文を送ると思うのですが、 どのようなSQL文を作成すればよいのでしょうか? なにぶん、しろうとですので、説明がわかりにくいかと思いますが、 もしよろしければ、解説していただけないでしょうか。 よろしくお願いします。

  • Access フォームからの検索について

    初歩的な質問で申し訳ありませんが教えて下さい。 Access2000を使っています。 フォームに作ったテキストボックスに、入力した値又は文字と、特定のフィールドと比較し一致した場合にそのレコードをフォームに表示する方法はないでしょうか? いろいろと、web上のQ&Aなども見ましたが、思った動作をしませでした。 考えているのは、   ・テキストボックスにある値を入力し、『Enter』を押すとテキストボックスに入力した値と特定のフィールドと一致したレコードをフォームに表示 ・一致しない場合はメッセージボックスで一致しない旨を表示 です。 ・完全一致のみ表示 VBAでの動作を考えていますが、合わせて他の方法があれば教示頂ければと思います。 以上、お手数をお掛け致しますがよろしくお願い致します。

  • Access2010 VBAで文字を数える

    あるデータベースのフォーム内で、テキストボックス内に記載のある任意の文字列の数を数えて変数に格納したいと考えています。 そして、コマンドボタンを押したときに、メッセージボックスで「○件選択しています。」のように表示されるようにしたいと考えています。 色々と検索してみて以下のような記述をしたのですがうまく動いてくれませんでした。(「コンパイルエラー: SubまたはFunctionが定義されていません。」と表示されます。) Dim A As Integer A = Len([txtbox]) - Len(SUBSTITUTE([txtbox], ","))   MsgBox(A & "件の選択しています。") なお、テキストボックス、コマンドボタンは同一のフォーム内においてあります。 また、テキストボックス内で検索したい文字は半角カンマです。 詳しい方がおりましたら、どうぞご教示ください。

  • Access VBAで自動連番を振るには

    【テーブル名】T_株券管理 【フォーム名】F_株主入力 【フィールド名】株主ID(テキスト型)(主キー) フォームに入力する際にオートナンバーを使用せずに、 レコードが切り替わると「株主ID」が「00001」「00002」「00003」・・・・というように1づつ発番されるようにしたく、AccessVBAの本を読んだり、ネットでDmax等調べているのですが、必要な情報が探せずに困っています。 本当はオートナンバーでIDを振っても良いのですが、レコードの削除等行った時に歯抜けになってしまうので、うる覚えで申し訳ないのですが・・・確か、フォームのテキストボックスのプロパティ、コードビルダでVBを「レコードが移動した際に」→「株主IDが0の場合に”00001”を、0でない場合には既存の数値に+1した数値をテーブルT_株券管理の”株主ID”に入力する。」といった感じの記述がしてあったと思います。VB初心者なので、説明が上手くできずにすみません。 このような記述方法はありますでしょうか?

  • アクセスのVBAのご相談

    初めて質問をいたします。よろしくお願いいたします。 Win 2007/Access 2007なのですが、 以下の記述のアドバイスをいただけないでしょうか。 症状は、レコード数を表示させたいフォームのテキストボックスに何も表示されない状況です。 <凡例> テーブルA テーブルB テーブルC テーブルD があります。 テーブルAはテーブルBとaにてリンク テーブルBはテーブルCとbにてリンク テーブルCとテーブルDはcにてリンクしているものとします。 <やりたいこと> フォームAのテキストボックスX、Y、Zを参照し、コマンドボタンをきっかけに、フォーム内部のWのテキストボックスに取得したbのカウント数を、再計算後に表示させたいと思っています。 <その他> Xはテキストボックス名でテキスト型 Zはテキストボックス名で日付型です。 Wはテキストボックス名で数値型です。 ★はbのカウント数です。 *は、数値型のレコードです。 +は、テキスト型のレコードです。 @は、日付型のレコードです。 <以下質問コード> Private Sub Form_Open(Cancel As Integer) Dim db As DAO.Databese Dim rs As DAO.Recordset Dim SQL As Variant Set db = CurrentDb SELECT Count(C.b) AS ★ FROM A INNER JOIN ((B INNER JOIN C ON B.b = C.b) INNER JOIN D ON C.c = D.c) ON A.a = B.a WHERE (((A.*)=1) AND ((D.+)=X) AND ((B.@)="0000-00-00 00:00:00") AND ((A.@) Between Y And Z)); Set rs = db.OpenRecordset(SQL) Me.W = rs!★ Set rs = Nothing Set db = Nothing End Sub <以上質問コード> 退職者が作ったアクセスデーターベースなのですが、 テキストボックスWに計算されたデータ数が表示がされなくなり、 自分なりに過去の質問をさぐってみたのですが、 いまだに、ゴールに行きつきません・・・。 質問の仕方が間違えていましたら申し訳ありません。 どうか、アドバイスのほど、よろしくお願いいたします。

  • アクセスVBA テキストボックス入力値からの参照

    マイクロソフトアクセス初心者です。 現在、アクセスでデータベースを作成しています。 2つのフォーム(フォーム(1)、フォーム(2))、2つのテーブル(入力情報、マスタ)、2つのテーブルをもとにした1つのレポートを作成しています。 『フォーム(1)』のテキストボックスAに入力された値を、Dlookup関数で『フォーム(2)』のテキストボックスBに数値を参照しています。 『フォーム(2)』のテキストボックスに表示された値を、『フォーム(2)』に設置されたコマンドボタンをクリックすると、VBAで『テーブル入力情報』のフィールドAに入力されるようにしています。フィールドAについてのマスタとなるテーブルが『テーブルマスタ』です。 リレーションシップを設定せず、ただ単に値を入力することは出来るのですが、レポートを作成するにあたって、『テーブル入力情報』と『テーブルマスタ』のフィールドAに1(テーブルマスタ)対多(テーブル入力情報)のリレーションシップを設定したいと思っています。 リレーションシップを設定し、テキストボックスBに表示された数値を『テーブル入力情報』に入力する際、『テーブルマスタ』から該当するデータを選択して『テーブル入力情報』に入力されるようにしたいと思うのですが、現状では、リレーションシップを設定すると、入力値が真っ白になってしまい、レポートにも入力したデータが反映されません。 ちなみに、入力する際はフィールドA=Me.テキストボックスBのようにしています。 何か良い解決策がありましたら、是非教えていただけませんでしょうか? 分かり難い文章かと思いますが、どうぞ宜しくお願い申し上げます。

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

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

  • accessで、フォームの検索をしたいのです。

    今ACCESSで、データ管理をしているのですが、どうしてもうまくいかなくて、困っています。 毎日の出来事を記述するテーブル用のフォームを作って、記述していて、そのデータがたまってきています。 他のフォームに、検索用のテキストボックスとコマンドボックスを作って検索したいのです。 コントロールウィザードを使うと、完全一致のデータしかでてこないのですが、部分一致のレコードを表示させるにはどうすればいいのですか? 教えていただけるとうれしいです。 コントロールウィザードを使うと以下のようになります。多分少しどこかを変えるといいのではないかと思うのです。どうか、よろしくお願いします。 Private Sub コマンド144_Click() On Error GoTo Err_コマンド144_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = ChrW(21839) & ChrW(12356) & ChrW(21512) & ChrW(12431) & ChrW(12379) & ChrW(12513) & ChrW(12514) stLinkCriteria = "[内容]=" & "'" & Me![テキスト105] & "'" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_コマンド144_Click: Exit Sub Err_コマンド144_Click: MsgBox Err.Description Resume Exit_コマンド144_Click End Sub もしかして。。と思い、以下の部分、 stLinkCriteria = "[内容]=" & "'" & Me![テキスト105] & "'" を次のように変えてみたけれど、やっぱりうまくいきませんでした。 stLinkCriteria = "[内容]=" & "'" & "*" & Me![テキスト105] & "*" & "'" よろしくお願いします。

  • Access アクセス VBA レコード追加

    Access フォームからのレコードの追加方法を教えてください。 テーブル1 ・ID(主キー) ・窓口 ・コストセンター ---------- テーブル2 ・コストセンター(主キー) ・目的 ---------- リレーションシップ テーブル1のコストセンターとテーブル2のコストセンターを一対多 ---------- メインのフォームに”ID”を入力したときにテーブル1に一致するレコードがない場合、新規登録用のフォームが表示されるようになっています。 新規登録用のフォームにレコードを入力してもテーブルに反映されません。 新規登録用のフォームは下記のように作成しています。 また、フォームに”コストセンター”を入力したときに入力したレコードがテーブル2にあっても自動で”目的”が表示されません。 メインフォームにはサブフォームで各テーブルが表示されています。 フォーム ・ID(初期値•••メインで入力したID) ・窓口 ・コストセンター ・目的 ・コストセンター(非表示) 上から順に ・テーブル1 ・テーブル1 ・テーブル2 ・テーブル2 ・テーブル1

  • Access97でフォームの数字入力時マイナス値を認めない方法

    Access97で、フォームのレコードソースに Access内テーブルを割り当てています。 フォームのテキストボックスのコントロールソースには そのテーブルの数値項目の値を割り当てているのですが、 このテキストボックスにマイナス数値の入力を 認めない場合、更新後イベントにエラーチェックの コードを記述する以外に、簡単にエラーチェック出来る ような方法はないでしょうか。 よろしくお願い致します。

専門家に質問してみよう