- ベストアンサー
Access97 VBAにてレコードの検索
- Access97 VBAを使用してレコードを検索する方法について教えてください。
- フォームでのレコード追加時に重複を避けるためにレコード検索を追加したいのですが、コーディング方法がわかりません。
- 社員マスターのキーを「部門_cd」と「社員_cd」に設定する場合、社員_cdだけではなく部門_cdのチェックも同時に行う方法について教えてください。
- みんなの回答 (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の場合)
その他の回答 (2)
- AlexSuns
- ベストアンサー率67% (78/115)
これ? Dim findString As String findString = "部門_cd =" & " '" & Me.部門_cd & "' and 社員_cd =" & " '" & Me.社員_cd & "' " myrs.FindFirst findString 社員マスタのキーは社員コードで一意であるべきだと思いますが... 部署移動したときとかry)
お礼
ありがとうございます。 実は、IF分の組み合わせ(ネスト)で解決してしまいましたが明日会社で上記を試してみます。 確かに、悪い例でしたね。 部門コード・社員コードがキーのマスターなんてあまりないですよね。通常は社員コードが一意のキーでその属性として部門コードですもんね。 実は拠点コード・部門コードがキーとなるマスターでした(←最初から書けって感じですよね!)。
補足
すみません、昨日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 & "'" 教えていただけないでしょうか?
- ArukuMail
- ベストアンサー率22% (115/510)
http://support.microsoft.com/default.aspx?scid=kb;ja;286242 こう言った問題もあるみたい コストはかかるけど Do Untile myrs.EOF myrs.movenext loop 内にレコードいどうさせてけんさくさせるてもあるです
補足
早速のご回答、ありがとうございます。 myrs.FindFirst "社員_cd =" & " '" & Me.社員_cd & "' " ↑これは動きます。 また、部門_cdによる検索でも動きます。 要するに単独では機能するということでした。 部門・社員というた例えが悪かったのかもしれませんね。 私の質問の仕方に不備があれば何なりとご指摘ください。
お礼
ありがとうございまます。 今回のコーディングだけでなく、今後VBAを組んでいく上で非常に参考になります。