首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >selectedIndex有问题吗?

selectedIndex有问题吗?
EN

Stack Overflow用户
提问于 2015-06-30 16:14:46
回答 1查看 64关注 0票数 1

所以我有这样的Select,当所选的索引为0时,它可以工作,但是如果我将索引更改为1,它不会工作。目前的代码是相同的,其思想是它将运行不同的查询,但我需要首先让它工作。

是的,当我使程序的这一部分正常运行时,我计划使用参数化查询,直到那时,我将继续使用我的通用连接查询文本,除非它是特定于这个问题的。

因此,当索引为0时,它可以很好地运行查询,而当索引不是0时,它就不能工作了。

代码语言:javascript
复制
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

我只是不明白为什么相同的代码不能工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-30 16:18:24

您不需要在每个Case语句中放置测试变量;只需要Select语句。编译器将按顺序将该表达式与Case列出的每个表达式进行比较,直到找到匹配为止。

当值为0时,表达式(cmbSearchBy.SelectedIndex = 0)计算为True,该值也等于0。当值为1时,(cmbSearchBy.SelectedIndex = 0)False (- 1 ),因此它检查下一种情况。但是,(cmbSearchBy.SelectedIndex = 1) = True = 0,但是cmbSearchBy.SelectedIndex ( Select命令告诉编译器比较的内容)= 1,而0并不等于1,因此编译器查找下一个Case行。既然找不到,就什么都不会发生。

相反,键入:

代码语言:javascript
复制
Select Case cmbSearchBy.SelectedIndex
    Case 0
        'code
    Case 1
        'code
End Select
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31143339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档