[リストへもどる]
一括表示

投稿時間:2004/06/18(Fri) 16:03
投稿者名:kamurin
Eメール:kamurin@hotmail.com
URL :
タイトル:
exeだとエラー
exeを実行した場合下記の☆印の処理でエラーが出ます。(実行時エラー カレントレコードがありません。)
vbpからの実行では問題なく通っているのですが、
何か分かりませんか?

Set rs_T_カルテ情報 = db.OpenRecordset("select * from T_カルテ情報", dbOpenDynaset)
rs_T_カルテ情報.FindFirst "電話番号 = '" & imMask1.Value & "'"
If rs_T_カルテ情報.NoMatch = False Then '一致するカルテがある場合
      LongMsg = "該当するカルテがありました。" & vbCrLf
      LongMsg = LongMsg & "「表示」しますか?"
      If MsgBox(LongMsg, vbYesNo, "表示確認") = vbYes Then                
          imText1(3).Text = rs_T_カルテ情報!氏名 '☆
                
          Set rs_T_カルテ情報 = db.OpenRecordset("select  * from T_カルテ情報 where カルテID = " & rs_T_カルテ情報!紹介者, dbOpenDynaset)
                
          If rs_T_カルテ情報.BOF = False Then
          Else
          End If
     End If
End If

投稿時間:2004/06/18(Fri) 17:10
投稿者名:るしぇ
Eメール:
URL :
タイトル:
Re: exeだとエラー
EXE で問題なく動作しました。(DAO3.6)

Private Sub Command1_Click()
    Dim db As Database
    Set db = OpenDatabase("C:\Data\テスト.mdb")
    
    Set rs_T_カルテ情報 = db.OpenRecordset("select * from T_カルテ情報", dbOpenDynaset)
    rs_T_カルテ情報.FindFirst "電話番号 = '2222'"
    If rs_T_カルテ情報.NoMatch = False Then '一致するカルテがある場合
          LongMsg = "該当するカルテがありました。" & vbCrLf
          LongMsg = LongMsg & "「表示」しますか?"
          If MsgBox(LongMsg, vbYesNo, "表示確認") = vbYes Then
              Me.Text1.Text = rs_T_カルテ情報!氏名 '☆
                    
'              Set rs_T_カルテ情報 = db.OpenRecordset("select  * from T_カルテ情報 where カルテID = " & rs_T_カルテ情報!紹介者, dbOpenDynaset)
'
'              If rs_T_カルテ情報.BOF = False Then
'              Else
'              End If
         End If
    End If

End Sub

投稿時間:2004/06/18(Fri) 17:40
投稿者名:旅人A
Eメール:
URL :
タイトル:
Re: exeだとエラー
根本的な解決にはなってないですが、こうしたらどうかという案を。

kamurinさんのやろうとしてることを纏めると
1.全てのレコードをレコードセット
2.一致するカルテの取得
3.一致するカルテの判定
3−A.(カルテがある場合)
  メッセージボックスで表示確認
3−B.任意のカルテ情報をもつレコードをレコードセット

こんな感じかと思います。

(気になるところ)
1.テキストボックスに表示するのは最初に見つかったレコードの氏名でいいのか?
2.一回目のレコードセット閉じてないのに同じ変数で新しいレコードセットをしてる
3.(多分AccessをDAOで接続してると思うけど・・)SQLの最後にセミコロン(;)がない
4.カルテIDは紹介者なのに、「'」はいらない?

(Source)
Dim SQLStr As String
Dim Flg As Boolean
Dim Syoukaisya As String
Dim Simei As String

  Flg = 0'初期化
  SQLStr = ""
  Syoukaisya = ""
  Simei = ""
----------------------------中略-------------------------------(DBのSetなど)
  SQLStr = "SELECT * FROM T_カルテ情報 WHERE 電話番号 = '" & imMask1.Value & "';"
  Set rs_T_カルテ情報 = db.OpenRecordset(SQLSTR, dbOpenDynaset)

  'レコード数を取得して、データがあるかないかをチェック
  If rs_T_カルテ情報.Recordcount > 0 Then
    Flg = True
    'ヒットしたカルテ情報の最初の紹介者を取得
    rs_T_カルテ情報.MoveFirst
'    Simei = rs_T_カルテ情報!氏名
'    Syoukaisya = rs_T_カルテ情報!紹介者
    Simei = rs_T_カルテ情報("氏名").Value
    Syoukaisya = rs_T_カルテ情報("紹介者").Value
  Else
    Flg = False
  End If
  'レコードセットクローズ!!
  rs_T_カルテ情報.Close

  If Flg = True Then
    LongMsg = "該当するカルテがありました。" & vbCrLf
    LongMsg = LongMsg & "「表示」しますか?"

    If MsgBox(LongMsg, vbYesNo, "表示確認") = vbYes Then
      imText1(3).Text = Simei

      SQLStr = ""
      SQLStr = "SELECT * FROM T_カルテ情報 WHERE カルテID = '" & Syoukaisya & "';"
      Set rs_T_カルテ情報 = db.OpenRecordset(SQLStr, dbOpenDynaset)
                
      If rs_T_カルテ情報.BOF = False Then
      Else
      End If

      rs_T_カルテ情報.Close
    End If
  End If

  ※見た目だけで実際には動かしてないので漏れなどあるかもしれません。

投稿時間:2004/06/22(Tue) 16:26
投稿者名:kamurin
Eメール:kamurin@hotmail.com
URL :
タイトル:
Re^2: exeだとエラー
> (気になるところ)
> 1.テキストボックスに表示するのは最初に見つかったレコードの氏名でいいのか?
重複処理は後で考えます。
> 2.一回目のレコードセット閉じてないのに同じ変数で新しいレコードセットをしてる
今までエラーになったことは無いのですが・・・
> 3.(多分AccessをDAOで接続してると思うけど・・)SQLの最後にセミコロン(;)がない
今までエラーになったことは無いのですが・・・
> 4.カルテIDは紹介者なのに、「'」はいらない?
「紹介者」フィールドにはID(数値)を格納してあります。