0

Selectクエリ内に配列を配置して、グリッドビューにデータを入力しようとしています。これを試みるたびに、エラーが発生します:ランタイムエラー:3705「オブジェクトが開いている場合、操作は許可されていません」。このエラーが発生する理由は理解していますが、選択クエリ内に配列を配置する代替手段はありますか。私が使用しているコードは以下のとおりです。

Public con1 As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim q As String
Dim i As Integer
Dim trainIds(30) As String
Public Sub con()
Set con1 = New ADODB.Connection
con1.Open ("tts123")
End Sub


Public Sub opentable(sql As String)
    Set rs = New ADODB.Recordset
    rs.Open sql, con1
End Sub


Private Sub Command1_Click()
    trainIds(0) = "HM2"
    trainIds(1) = "HM2"
    trainIds(2) = "HM1"
    For i = 0 To 2
          q = "Select * from TrainTable Where TrainId ='" & trainIds(i) & "'"
          rs.CursorType = adOpenStatic
          rs.CursorLocation = adUseClient
          rs.LockType = adLockOptimistic
          rs.Open q, con1
          If rs.RecordCount > 0 Then
              Set DataGrid1.DataSource = rs
          Else
                MsgBox "No record found "
                rs.Close
           End If
     Next
End Sub

Private Sub Form_Load()
      Set con1 = New ADODB.Connection
      con1.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source =   E:\VBnewProject\TrainTimeSchedule"
con1.Open ("dsn=tts123")
End Sub
4

1 に答える 1

2

クエリに IN を使用する必要があります

Select * from TrainTable Where TrainId IN {List of train ids to check}

また、SqlParameter オブジェクトを使用してパラメーターを渡すことも見てください。現在のコードでは、SQL インジェクションの可能性があります。例については、これを参照してください。

于 2013-04-23T05:51:49.167 に答える