お世話になります。
フォームでのレコード追加の際、
重複入力を避けるためにレコード検索を追加したいのですが、うまくいきません。
ただいまのソースは、
Set db = DBEngine.Workspaces(0).Databases(0)
Set myrs = db.OpenRecordset("社員マスター", DB_OPEN_DYNASET)
myrs.FindFirst "社員_cd =" & " '" & Me.社員_cd & "' "
If myrs.NoMatch = False Then
IMsg = "すでに登録されています!!!"
IRet = MsgBox(IMsg, 16, "エラー")
myrs.Close
db.Close
Exit Sub
End If
以上はうまく機能するのですが、
社員マスターのキーを"部門_cd"と"社員_cd"にする場合、
単純に社員_cdのみのチェックではダメで、部門_cdのチェックも同時に必要になるかと思いますが、うまくコーディングできず。
myrs.FindFirstの一文を適切に書いてやらなければいけないと思いますが、わかりません……。
教えていただけますでしょうか?
※質問文のみでは情報が不足している場合、ご指摘いただければ補足にて追加させていただきます
No.1
- 回答日時:
こう言った問題もあるみたい
コストはかかるけど
Do Untile myrs.EOF
myrs.movenext
loop
内にレコードいどうさせてけんさくさせるてもあるです
参考URL:http://support.microsoft.com/default.aspx?scid=k …
この回答への補足
早速のご回答、ありがとうございます。
myrs.FindFirst "社員_cd =" & " '" & Me.社員_cd & "' "
↑これは動きます。
また、部門_cdによる検索でも動きます。
要するに単独では機能するということでした。
部門・社員というた例えが悪かったのかもしれませんね。
私の質問の仕方に不備があれば何なりとご指摘ください。
No.2
- 回答日時:
これ?
Dim findString As String
findString = "部門_cd =" & " '" & Me.部門_cd & "' and 社員_cd =" & " '" & Me.社員_cd & "' "
myrs.FindFirst findString
社員マスタのキーは社員コードで一意であるべきだと思いますが...
部署移動したときとかry)
この回答への補足
すみません、昨日IF文の組み合わせで解決したかと思いきやそれはバグっていました。
で、ご回答いただいた通りにやってみたのですが、どうしても
"抽出条件でデータ型が一致しません。"
というメッセージでエラーになってしまいます。
デバッグモードでfindstringの値を確認したところ、
findstring = "拠点CD ='5' And team_cd ='12'"
となっていますがこれでよろしいのでしょうか?
検索するテーブル(SQLサーバー):
拠点CD = float型 Team_CD = float型
パラメータ:
[Forms]![F_top]![拠点_cd] ←拠点CD
Me.team_cd ←team_cd
実際の記述は以下の通りです。
findstring = "拠点CD =" & "'" & [Forms]![F_top]![拠点_cd] & "' And team_cd =" & "'" & Me.team_cd & "'"
教えていただけないでしょうか?
ありがとうございます。
実は、IF分の組み合わせ(ネスト)で解決してしまいましたが明日会社で上記を試してみます。
確かに、悪い例でしたね。
部門コード・社員コードがキーのマスターなんてあまりないですよね。通常は社員コードが一意のキーでその属性として部門コードですもんね。
実は拠点コード・部門コードがキーとなるマスターでした(←最初から書けって感じですよね!)。
No.3ベストアンサー
- 回答日時:
>findstring = "拠点CD ='5' And team_cd ='12'"
これと
>拠点CD = float型 Team_CD = float型
このことから
>findstring = "拠点CD =" & "'" & [Forms]![F_top]![拠点_cd] & "' And team_cd =" & "'" & Me.team_cd & "'"
これではダメです
findstring = "拠点CD =" & [Forms]![F_top]![拠点_cd] & " And team_cd =" & Me.team_cd
この様になります
※文字列型はシングルクォーテーション(')で括り、数値型の場合は括る必要がありません
※因みに日付型の場合はシャープ(#)にて括ります(Accessの場合)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ADO VBA 実行時エラー3021
-
DataGridViewの、選択されてい...
-
レコードが存在しなかった場合
-
JSPのNULLレコード表示について...
-
アクセスでレポートの1印刷内...
-
DataGridViewの内容をDBに反映...
-
ヘッダレコードとトレーラレコ...
-
Line Inputで文字化け(助けて...
-
ACCESSのフォームで複数レコー...
-
【ExcelVBA】Powerクエリーでい...
-
Javaで使用するデータベースの...
-
ACCESSで大量の更新を行うと「...
-
レコードセット(ADO.Recordset)...
-
ACCESS VBA テーブルデータに...
-
サブレンジ分割されたNDB(富士...
-
Accessデータシートビューの行...
-
ワードの差込印刷で教えて下さ...
-
ACCESSで「16389予約済みエラー...
-
AccessVBAのMoveメソッドにつき...
-
Access でレコードセレクタが押...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコードが存在しなかった場合
-
ADO VBA 実行時エラー3021
-
ファイル書込みで一行もしくは...
-
アクセスでレポートの1印刷内...
-
カレントレコードが無い事を判...
-
差し込み印刷のレコード数について
-
レコードセット(ADO.Recordset)...
-
ワードの差込印刷で教えて下さ...
-
DataGridViewの内容をDBに反映...
-
Access でレコードセレクタが押...
-
DataGridViewの、選択されてい...
-
JSPのNULLレコード表示について...
-
ACCESSで大量の更新を行うと「...
-
[VBA] ADOの Clone と AddNew
-
Access を×ボタンで閉じ...
-
サブレンジ分割されたNDB(富士...
-
ヘッダレコードとトレーラレコ...
-
データセットのレコード更新が...
-
DataGridViewにてセル以外をク...
-
Line Inputで文字化け(助けて...
おすすめ情報