• ベストアンサー

Access2000での重複チェック

前回も質問させていただきましたがどうしてもわからないので質問させていただきます。 DCount("規定金額", "ワークテーブル", "規定金額= '" & Me!txt規定金額.Value & "'") <> 0 Then 歩合入力フォームにsub歩合入力サブフォームが張り付いてます。ワークテーブルのフィールドは規定金額、歩率です。規定金額が重複してるかどうか調べたいのですが、上のコードではエラーがでてしまいます。間違ってるのでしょうか?sub歩合入力のForm_BeforeUpdateに書いています。エラーの内容は「抽出条件でデータ型が一致しません」です。よろしくお願いします

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 条件の、 "規定金額= '" & Me!txt規定金額.Value & "'" で、''(シングルクォーテーション)で括ってあると、文字列型(テキストとメモ)として判断します。 しかし、[ワークテーブル]の[既定金額]フィールドのデータ型は、おそらく数値型(金額なので多分整数型)だと思いますので、 「抽出条件でデータ型が一致しません」 というエラーになるわけです。 したがって、DCount関数の条件式(第3引数)を以下のようにします。 "規定金額= " & CLng(Me!txt規定金額.Value) 数値型なので''はいりません。 なお、CLng関数は、引数が数値認識出来る場合に、長整数に変換します。(少数部分を丸める) また、フィールドのデータ型が同じ数値型でも、その種類によって変換関数は異なります。 整数型:CInt 長整数型:CLng 単精度浮動小数点型:CSng 倍精度浮動小数点型:CDbl といったところです。 その他の変換関数や詳細は、ヘルプを参照して下さい。

moshamosha
質問者

お礼

本当に親切な説明ありがとうございます! ちなみにフィールドの型は通貨型でした。 説明がなかったらできませんでした… 無事できましたのでありがとうございました

関連するQ&A

  • ACCESSの重複チェックについて

    顧客データをACCESS2003にて作成しています。 フォームにてVBAを用いて重複チェックをしているのですが、件数が多いせいかチェックに時間が掛かっております。(入力済件数は10万は超えております。) テーブル(T_顧客管理)よりチェック出来るようにしており、チェックのフィールドは「住所」にしております。 Private Sub 住所_BeforeUpdate(Cancel As Integer) If DCount("住所", "T_顧客管理", _ "住所='" & Me!住所 & "'") > 0 Then Beep MsgBox "既存のデータと同じ住所が入力されました! " & _ "別の値を入力してください。", _ vbOKOnly + vbExclamation, "重複エラー" Cancel = True Me.Undo End If End Sub 上記の式を入れておりますが、別の方法(式)にて上記と同じ内容にてチェック出来る式があれば教えていただきたいと思いますので、宜しくお願い致します。

  • Access2000での更新の仕方

    テーブル(歩率マスタ、ワークテーブル)があり、フォーム(テナントマスタ←これにbtn前のレコード、btn次のレコード、btn修正、btn新規、btn歩合入力…etcのコマンドボタンがある。歩率入力(歩合入力にサブフォームとしてsub歩率入力が張り付いている))サブフォームで規定金額、歩率を入力しそれをいったんワークテーブルに格納しておき、テナントマスタで修正ボタンをクリックされたら時点で部率マスタに登録できるようにしたいんです。またそれぞれのビル区分とテナントコードに一致するものを呼び出したいのです!当然、新規ボタンをクリックされたときはサブフォームの規定金額、歩率は空です! あと注文としてはこれをSQL文でできるみたいなのですが これを使って教えてくださると大変ありがたいです! よろしくお願いします!! ど素人なんてゆってることがわからないとこがあるかと思いますが、なんなりとご注文つけてください!! 歩率マスタ:ビル区分、テナントコード、規定金額、歩率 ワークテーブル:規定金額、歩率

  • Access2000の重複チェック

    現在あるデータとあるフィールド内において値が重複してある場合こちら側からエラーを出したいのですがどうすればいいですか? テーブル名:テナントマスタ フォーム:txtビル区分、txtテナントコード、…etc テナントマスタ ビル区分 テナントコード ----------------------- 01 100 01 101 02 102 02 103 ここに新たにフォーム上でビル区分、テナントコードを入力し、この値がそれぞれ01、101だったときbtn登録をクリックしたときこちらからエラーをだしたいのです! どうかよろしくお願いします!!

  • ACCESSで重複チェック後にフォーカスを移動したい

    Private Sub 会社名_AfterUpdate() ACCESS2003です。 フォーム上で入力後(更新後処理)に重複チェックをしています。 重複したときにエラーメッセージを出してフォーカスさせたいのです。 エラーメッセージまでは上手くいくのですが、フォーカスが移動してくれません。 どこが悪いのでしょうか? Private Sub 会社名_AfterUpdate() Dim i As Integer i = DCount("*", "tbl取引先", "会社名 ='" & Me.会社名 & "'") If i = 1 Then MsgBox [会社名] & " は登録済みです。" Me![会社名].SetFocus Cancel = True End If End Sub よろしくお願いします

  • ACCESS重複のチェック

    ACCESSで重複チェックをしたいと思います。 現在は電話番号テーブルだけしかありません。 電話番号のテーブルを主キーを使って重複している場合エラーメッセージを出すというものです。保存ボタンもありません。 Private Sub text電話番号_BeforeUpdate(Cancel As Integer) If IsNumeric(text電話番号) = False Then '数字チェック。 MsgBox "電話番号は数字で入力して下さい。", vbCritical Cancel = True ' 処理を取り消します。 Me.Undo End If Dim strmsg As String strmsg = "重複しています" If Not IsNull(DLookup("[電話番号]", "ダブリチェックテーブル", "[電話番号] = [text電話番号]")) Then MsgBox strmsg, 16, "ダブリチェック" Cancel = True '処理を取り消します。 Me.Undo '元に戻します。 Else Cancel = False '処理を続行します。 End If End Sub これに、企業名と出発日という項目を増やしたいと思います。 ですが、何万とある電話番号を一気に入力して調べているので、一回一回企業名と出発日を入れていると生産性が落ちます。 ですので、企業名と出発日は最初の入力だけで次のレコードに移動してを継続させたいのです。そして電話番号以外にカーソルを行かないようにしたいです。 何か良い方法があればご教授お願いします。 ちなみにいろいろ自分なりに試したのですが、重複してエラーを出した場合に企業名にカーソルが飛んだししてうまくいきませんでした。

  • Access2000 重複している番号を抽出するには?

    Access2000を使用しています。 数値型のフィールドに入力された番号の中から、重複している番号だけを抽出するクエリを作りたいのですが、どのようにして作ればいいでしょうか? よろしくお願いいたします。

  • Access サブフォームからデータ抽出

    ・メインフォーム:[F営業管理]  -フィールド:[見積提出日]、[見積金額] ・サブフォーム:[F見積サブ]  -フィールド:[提出日]、[金額]  ※見積は何度か提出されるので、ここには数件レコードがあります。 ここで、サブフォームの[提出日]が最新日付の[提出日]及び[金額]を、 メインフォームの[見積提出日]・[見積金額]に表示(値入力)させたい のですが、どうやって抽出したら良いかわかりません。 関数・構文などが思いつきません。 どうぞよろしくお願いします。

  • アクセス 通貨型 ワイルドカード

    アクセスでフィルタをかける時に、フィールドが通貨型でワイルドカードを使いたいのですが Private Sub Form_Load() Me.Form.Filter = "フィールド1 like *" Me.Form.FilterOn = True End Sub だと構文エラーになるのですが、すべての金額を対象にするにはどうすればいいですか?

  • access サブフォーム間の連動について

    Access2013について メイン親単票フォーム上に連動する二つのサブフォームを配置させました。 内一つは帳票、もう一つは単票にし、帳票からレコードを選択するとデータ詳細が単票側が連動するまで至りましたが、ここでサブフォーム帳票を並べ替えや抽出を実行すると、サブフォーム間の連動が出来なくなり、解決に困っております。 解決方法をご存知の方、お力添え願います。 親フォームに VBA Private Sub Form_Open(Cancel As Integer) Set Me.SubForm2.Form.Recordset = Me.SubForm1.Form.Recordset End Sub 抽出方法としては帳票サブフォーム上からとメインフォーム上からの実行までを試しておりますが、いずれも抽出後にサブフォーム間の連動が出来なくなってしまう状況です。 お力添え、宜しくお願いいたします。

  • アクセス Between  Andの使い方 日付型

    フォームをテーブルに紐づけて コマンドボタンを押下したら、日付にフィルタをかけたいのですが、 0件で抽出されます。 フィールド1 2013/05/19 2013/05/20 2013/05/21 というテーブルがあり、 フォーム上のコマンドボタンのクリックイベントは Private Sub コマンド1_Click() Me.Form.Filter = "フィールド1 Between " & Date & " And " & Date + 1 Me.Form.FilterOn = True End Sub です。 2013/05/19 2013/05/20 が抽出されるべきだと思うのですが、なぜ何も抽出されないのでしょうか? エラーにもなりません。