Aar*_*ron 1 vb.net ms-access vba
所以我有这个Select Case,它在所选索引为0时有效,但如果我将索引更改为1,则不会.目前代码是相同的,它的想法是它将运行不同的查询,但我需要先让它工作.
是的,当我让这部分程序正常运行时,我计划使用参数化查询,直到那时我坚持使用我的通用连接查询文本,除非它特定于问题.
因此,当索引为0时,它运行查询正常,当索引不是0时,它不起作用.
Select Case (cmbSearchBy.SelectedIndex)
Case (cmbSearchBy.SelectedIndex = 0)
Try
'Sql = "SELECT * FROM Devices WHERE (((Devices.[Asset Number]) =" & & "));"
Dim SearchAsset As Integer = Convert.ToInt32(txtValue.Text)
Dim AccessDataAdapter = New System.Data.OleDb.OleDbDataAdapter
AccessDataAdapter.SelectCommand = New System.Data.OleDb.OleDbCommand("SELECT * FROM Devices WHERE (((Devices.[Asset Number]) =" & SearchAsset & "));", dbConn)
Dim AccessDataset = New DataSet
AccessDataAdapter.Fill(AccessDataset, "Asset Query")
MyDataGrid.DataSource = AccessDataset.Tables("Asset Query")
Catch
MsgBox("Please insert a valid Asset Number")
End Try
Case (cmbSearchBy.SelectedIndex = 1)
Try
'Sql = "SELECT * FROM Devices WHERE (((Devices.[Asset Number]) =" & & "));"
Dim SearchAsset As Integer = Convert.ToInt32(txtValue.Text)
Dim AccessDataAdapter = New System.Data.OleDb.OleDbDataAdapter
AccessDataAdapter.SelectCommand = New System.Data.OleDb.OleDbCommand("SELECT * FROM Devices WHERE (((Devices.[Asset Number]) =" & SearchAsset & "));", dbConn)
Dim AccessDataset = New DataSet
AccessDataAdapter.Fill(AccessDataset, "Asset Query")
MyDataGrid.DataSource = AccessDataset.Tables("Asset Query")
Catch
MsgBox("Please insert a valid Asset Number")
End Try
Run Code Online (Sandbox Code Playgroud)
我只是不明白为什么相同的代码不起作用.
您不需要在每个Case语句中放置测试变量; 只是Select声明.编译器将按Case顺序将该表达式与列出的每个表达式进行比较,直到找到匹配为止.
表达式(cmbSearchBy.SelectedIndex = 0)求True值为0时的值,也等于0.当值为1时,(cmbSearchBy.SelectedIndex = 0)为False(-1),因此它检查下一个案例.但是,(cmbSearchBy.SelectedIndex = 1)= True= 0,BUT cmbSearchBy.SelectedIndex(这是Select命令告诉编译器要比较的)= 1,0不等于1,因此编译器会查找下一Case行.由于没找到,没有任何反应.
而是键入:
Select Case cmbSearchBy.SelectedIndex
Case 0
'code
Case 1
'code
End Select
Run Code Online (Sandbox Code Playgroud)