我正在使用这一行:
For Each dtrow In FbuildingSettings.camButtonDtable.Select("Floor ='3'")
从Floor = 3
选择所有项目
如何在状态中添加另一个参数..
.Select(Building = Mall and Floor = 3)
它会找到所有建筑物Mall
的数据,然后从三楼获取所有数据
我试过像.Select("Floor ='3' And Building ="'"Mall"'"")
这样的东西 - 但似乎我做错了。我在sql中并不是很好
另外,我打算为Mall
和3
使用变量。如果你会那么善良,那就这样做吧谢谢:)
更新:我尝试了valverij的答案,结果是:( 虽然Floor=3
代码仍在运行)
答案 0 :(得分:1)
看起来您的多条件Select
中的引号太多了。根据{{3}},您应该能够做到这样的事情:
.Select("Floor ='3' AND Building ='Mall'")
我不确定那里的大写是否很重要,但你可能会在AND
全部上限的时候制作大写字母。
您也可以使用this question和AsEnumerable
和
For Each dtrow In FbuildingSettings.camButtonDtable.AsEnumerable.Where(Function(dr) dr("Floor") = "3" AndAlso dr("Building") = "Mal
更新:根据您问题的更新,看起来nBtn.Name
期待一种类型,并且您的语句隐式尝试将其设置为其他类型。如果在文件顶部设置Option Strict On
,VB将强制您在设置/使用对象时在必要时进行显式转换。如果你不想这样做,那很好,但可能会做到这样的事情:
nBtn.Name = dtrow("ButtonText").ToString & dtrow("ID").ToString
或者这个:
nBtn.Name = String.Format("{0}{1}", dtrow("ButtonText").ToString, dtrow("ID").ToString)
另外,请检查以确保dtrow("ButtonText")
和dtrow("ID")
实际包含一个值(即,它们不是DBNull.Value
)如果那问题 ,然后您可以使用临时变量和If
语句来相应地设置它们:
Dim buttonText As String = String.Empty
Dim id As String = String.Empty
If dtrow("ButtonText") IsNot DBNull.Value Then
nBtn.Name &= dtrow("ButtonText").ToString
End If
If dtrow("ID") IsNot DBNull.Value Then
nBtn.Name &= dtrow("ID").ToString
End If
但是请注意,ToString
会使确定 VB获取String
中值的DataRow
表示。否则,我认为它只是尝试根据创建DataRow
时添加的内容来使用类型。