アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。

フォームでのレコード追加の際、
重複入力を避けるためにレコード検索を追加したいのですが、うまくいきません。
ただいまのソースは、
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の一文を適切に書いてやらなければいけないと思いますが、わかりません……。

教えていただけますでしょうか?

※質問文のみでは情報が不足している場合、ご指摘いただければ補足にて追加させていただきます

A 回答 (3件)

http://support.microsoft.com/default.aspx?scid=k …

こう言った問題もあるみたい
コストはかかるけど
Do Untile myrs.EOF
myrs.movenext
loop
内にレコードいどうさせてけんさくさせるてもあるです

参考URL:http://support.microsoft.com/default.aspx?scid=k …

この回答への補足

早速のご回答、ありがとうございます。

myrs.FindFirst "社員_cd =" & " '" & Me.社員_cd & "' "
↑これは動きます。
 また、部門_cdによる検索でも動きます。
 要するに単独では機能するということでした。

部門・社員というた例えが悪かったのかもしれませんね。
私の質問の仕方に不備があれば何なりとご指摘ください。

補足日時:2006/03/22 18:58
    • good
    • 0

これ?



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 & "'"

教えていただけないでしょうか?

補足日時:2006/03/23 18:34
    • good
    • 0
この回答へのお礼

ありがとうございます。

実は、IF分の組み合わせ(ネスト)で解決してしまいましたが明日会社で上記を試してみます。

確かに、悪い例でしたね。
部門コード・社員コードがキーのマスターなんてあまりないですよね。通常は社員コードが一意のキーでその属性として部門コードですもんね。
実は拠点コード・部門コードがキーとなるマスターでした(←最初から書けって感じですよね!)。

お礼日時:2006/03/22 20:48

>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の場合)
    • good
    • 0
この回答へのお礼

ありがとうございまます。
今回のコーディングだけでなく、今後VBAを組んでいく上で非常に参考になります。

お礼日時:2006/03/26 02:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!