- ベストアンサー
検索Find処理の2重、3重とは?
- フロッピーディスク内のデータをデータベースに取り込む処理について、患者IDをキーとして条件分岐を行う際にエラーが発生しています。
- 現在のコードでは、条件分岐の際に追加する患者氏名を検索するためのコードがエラーとなっています。
- 解決策としては、一旦rs.Closeしてから再度rs.Openする方法が考えられます。それ以外にも他の方法があるかもしれません。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
最初に患者IDのみで検索して、見つかったら、患者ID・患者氏名・性別・生年月日の"全て"が一致するデータを検索すればいいと思います。 With rs .Find "患者ID = " & ID IF .EOF Then .Addnew (新規追加処理) .Update Else .Find "(患者ID = " & ID & ") AND (患者氏名 = '" & Name & "') AND (性別 = " & Sex & ") AND (生年月日 = #" & Bouth & "#)" , , ,1 If .EOF Then MsgBox "エラー" Else (T_画像情報への追加処理) End If End If End With なお、2度目のFindメソッドには、第4引数に"1"を指定するのを忘れないように。
その他の回答 (4)
訂正。 > イミディエイトウィンドウに出力されている内容をコピペしてください。 ↓ イミディエイトウィンドウに出力されている内容を「全部」コピペしてください。 (「」内の漢字2文字に注意)
> Debug.Print sqlName > MsgBox sqlName ↑ここのところはどうなってるの? イミディエイトウィンドウに出力されている内容をコピペしてください。 (コピーは<Ctrl> + <C>キーで、貼り付けは<Ctrl> + <P>キーでできます) 手取り足取り訊かれなくても、必要な情報は最初から出しましょう。 ※※※ 全然読んでないようなので、念のため再掲 ※※※ [ 技術系メーリングリストで質問するときのパターン・ランゲージ ] http://www.hyuki.com/writing/techask.html
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 患者氏名はおそらく文字列なので、 sqlName = "患者氏名 ='" & Name & "'" とシングルクォーテーションで括らないとダメだと思います。
補足
ありがとうございます。 問題はこれのようでした。 上記でも記述したように、質問の根本が違ったのでもし宜しければご指導お願い致します。
・VBのバージョンは2.0?それとも10.0? ・OSはRedHat?それともMacOS? ・rsはDAOですか?ADOですか? [ 技術系メーリングリストで質問するときのパターン・ランゲージ ] http://www.hyuki.com/writing/techask.html [ Error Code ] http://java-house.jp/ml/archive/j-h-b/007317.html#body > sqlName = "患者氏名 =" & Name > rs.Find sqlName > というコードを追加するとエラーがでてしまいます・・ どんなエラーですか? On Error Resume Next sqlName = "患者氏名 =" & Name Debug.Print sqlName MsgBox sqlName rs.Find sqlName If Err.Number <> 0 Then Debug.Print "実行時エラー " & CStr(Err.Number) & ": " & Err.Description MsgBox "実行時エラー " & CStr(Err.Number) & ": " & vbCrLf & Err.Description End If ↑ このようにしたらどうなりますか?
- 参考URL:
- http://java-house.jp/ml/archive/j-h-b/007317.html#body,http://www.hyuki.com/writing/techask.html
補足
Access2000とWindows2000を使用している環境です。 だからVBAになります。 rsはADOです。 早速 試してみたのですが、 実行時エラー3001: 引数が間違った型、または許容範囲外であるか、競合しています。 とのエラーがでます。 それは上記のコードを使用した際も、まったく同じです。 デバッグすると、 rs.Find sqlNameの所がエラーになります。
補足
処理する方向自体が違う気がしてきましたので ちょっと説明します すいませんでした。 患者IDで検索して、同じ患者IDが見つかったとします。 その次の処理は、その見つかった患者の患者氏名、性別、誕生日を調べなくてはいけませんよね。 そうすると、またFindで患者氏名など検索する必要が無くなってきます。 私のやりたい処理は、同じ患者IDが見つかった時にその他のフィールドのデータも取得するという事です。 話が振り出しに戻ってしまいましたが、すいませんでした。