重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

フロッピーディスク内のデータをデータベースに取り込む処理を考えています。
まず、フロッピーディスク内のデータを変数に格納します。
データベースを開いて、患者IDフィールドが違う場合は新たに新規追加します。
患者IDフィールドが同じ場合は、そこから分岐させます。
患者氏名、性別、生年月日がすべて同じ場合は、T-画像情報というテーブルにのみ追加します。
一つでも異なれば、エラーメッセージを出します。

sqlID = "患者ID =" & ID
rs.Find sqlID
If rs.EOF Then
rs.Addnew
新規追加処理
rs.Update
Else
ここで条件分岐
End If

今、現在ここまでのコードが完成しています。
条件分岐の際に
sqlName = "患者氏名 =" & Name
rs.Find sqlName
というコードを追加するとエラーがでてしまいます・・
一旦、rs.Closeしたのち、再度rs.Openしたがいいのでしょうか?
それとも他にやり方があるのでしょうか?

ご指導お願いします。

A 回答 (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"を指定するのを忘れないように。
    • good
    • 0

訂正。



> イミディエイトウィンドウに出力されている内容をコピペしてください。

イミディエイトウィンドウに出力されている内容を「全部」コピペしてください。
(「」内の漢字2文字に注意)
    • good
    • 0

> Debug.Print sqlName


> MsgBox sqlName

↑ここのところはどうなってるの?
イミディエイトウィンドウに出力されている内容をコピペしてください。
(コピーは<Ctrl> + <C>キーで、貼り付けは<Ctrl> + <P>キーでできます)

手取り足取り訊かれなくても、必要な情報は最初から出しましょう。

※※※ 全然読んでないようなので、念のため再掲 ※※※

[ 技術系メーリングリストで質問するときのパターン・ランゲージ ]
http://www.hyuki.com/writing/techask.html
 

参考URL:http://www.hyuki.com/writing/techask.html

この回答への補足

処理する方向自体が違う気がしてきましたので
ちょっと説明します すいませんでした。

患者IDで検索して、同じ患者IDが見つかったとします。
その次の処理は、その見つかった患者の患者氏名、性別、誕生日を調べなくてはいけませんよね。
そうすると、またFindで患者氏名など検索する必要が無くなってきます。

私のやりたい処理は、同じ患者IDが見つかった時にその他のフィールドのデータも取得するという事です。

話が振り出しに戻ってしまいましたが、すいませんでした。

補足日時:2003/04/22 12:38
    • good
    • 0

こんにちは。

maruru01です。

患者氏名はおそらく文字列なので、

sqlName = "患者氏名 ='" & Name & "'"

とシングルクォーテーションで括らないとダメだと思います。

この回答への補足

ありがとうございます。
問題はこれのようでした。

上記でも記述したように、質問の根本が違ったのでもし宜しければご指導お願い致します。

補足日時:2003/04/22 12:43
    • good
    • 0

 


・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.htm …

> 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の所がエラーになります。

補足日時:2003/04/22 12:08
    • good
    • 0

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