2013-04-23 25 views
0

我想通过在Select查询中放置数组来填充gridview。每当我尝试这个时,我得到一个错误:运行时错误: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 

回答

2

您应该使用为您查询

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

也期待在传递使用的SqlParameter对象参数,当前的代码打开你到SQL注入,以this为例

+0

感谢您的输入。我如何指定列表。它是否以逗号分隔?这是怎么回事是搜索查询: Q = “SELECT * FROM TrainTable凡TrainId IN '” &(HM1,HM2,HM3)& “'” – Daggerhunt 2013-04-23 06:00:49

+0

还是我必须把所有的TrainIds内{}括号 – Daggerhunt 2013-04-23 06:16:10

+0

这应该是(列表)。括号,而不是大括号。 – 2013-04-23 06:21:13