有下面语句,欲实现动态设置查询的准备。
运行 Data1.Database.TableDefs(sTable).Fields(sField).Type 语句时,有时可以通过,有时会出现错误,错误描述是 <这个集合中找不到此项目。>。我跳时发现
好像是 Fields(sField) 造成的。
为什么会出现这种问题,怎么解决,请指教。Private Sub CmbSelectField_Click(Index As Integer)
Dim sTable As String
Dim sField As String
If CmbSelectField(Index).Text <> "" Then
sTable = CmbSelectTable(3).Text
sField = CmbSelectField(Index).Text
Select Case Data1.Database.TableDefs(sTable).Fields(sField).Type
Case dbBoolean
CmbSelectOperator(Index).AddItem ("是")
CmbSelectOperator(Index).AddItem ("否")
MbxInput(Index).Enabled = False
Case dbDate
CmbSelectOperator(Index).AddItem ("=")
CmbSelectOperator(Index).AddItem (">")
CmbSelectOperator(Index).AddItem ("<")
CmbSelectOperator(Index).AddItem (">=")
CmbSelectOperator(Index).AddItem ("<=")
CmbSelectOperator(Index).AddItem ("<>")
MbxInput(Index).Mask = "####-##-##"
Case dbText, dbMemo, dbChar
CmbSelectOperator(Index).AddItem ("包含")
CmbSelectOperator(Index).AddItem ("不包含")
CmbSelectOperator(Index).AddItem ("=")
CmbSelectOperator(Index).AddItem (">")
CmbSelectOperator(Index).AddItem ("<")
CmbSelectOperator(Index).AddItem (">=")
CmbSelectOperator(Index).AddItem ("<=")
CmbSelectOperator(Index).AddItem ("<>")
Case dbByte, dbNumeric, dbBigInt, dbInteger, dbLong
CmbSelectOperator(Index).AddItem ("=")
CmbSelectOperator(Index).AddItem (">")
CmbSelectOperator(Index).AddItem ("<")
CmbSelectOperator(Index).AddItem (">=")
CmbSelectOperator(Index).AddItem ("<=")
CmbSelectOperator(Index).AddItem ("<>")
Case dbSingle, dbCurrency, dbDouble, dbFloat
CmbSelectOperator(Index).AddItem ("=")
CmbSelectOperator(Index).AddItem (">")
CmbSelectOperator(Index).AddItem ("<")
CmbSelectOperator(Index).AddItem (">=")
CmbSelectOperator(Index).AddItem ("<=")
CmbSelectOperator(Index).AddItem ("<>")
Case Else
End Select
End If
End Sub
运行 Data1.Database.TableDefs(sTable).Fields(sField).Type 语句时,有时可以通过,有时会出现错误,错误描述是 <这个集合中找不到此项目。>。我跳时发现
好像是 Fields(sField) 造成的。
为什么会出现这种问题,怎么解决,请指教。Private Sub CmbSelectField_Click(Index As Integer)
Dim sTable As String
Dim sField As String
If CmbSelectField(Index).Text <> "" Then
sTable = CmbSelectTable(3).Text
sField = CmbSelectField(Index).Text
Select Case Data1.Database.TableDefs(sTable).Fields(sField).Type
Case dbBoolean
CmbSelectOperator(Index).AddItem ("是")
CmbSelectOperator(Index).AddItem ("否")
MbxInput(Index).Enabled = False
Case dbDate
CmbSelectOperator(Index).AddItem ("=")
CmbSelectOperator(Index).AddItem (">")
CmbSelectOperator(Index).AddItem ("<")
CmbSelectOperator(Index).AddItem (">=")
CmbSelectOperator(Index).AddItem ("<=")
CmbSelectOperator(Index).AddItem ("<>")
MbxInput(Index).Mask = "####-##-##"
Case dbText, dbMemo, dbChar
CmbSelectOperator(Index).AddItem ("包含")
CmbSelectOperator(Index).AddItem ("不包含")
CmbSelectOperator(Index).AddItem ("=")
CmbSelectOperator(Index).AddItem (">")
CmbSelectOperator(Index).AddItem ("<")
CmbSelectOperator(Index).AddItem (">=")
CmbSelectOperator(Index).AddItem ("<=")
CmbSelectOperator(Index).AddItem ("<>")
Case dbByte, dbNumeric, dbBigInt, dbInteger, dbLong
CmbSelectOperator(Index).AddItem ("=")
CmbSelectOperator(Index).AddItem (">")
CmbSelectOperator(Index).AddItem ("<")
CmbSelectOperator(Index).AddItem (">=")
CmbSelectOperator(Index).AddItem ("<=")
CmbSelectOperator(Index).AddItem ("<>")
Case dbSingle, dbCurrency, dbDouble, dbFloat
CmbSelectOperator(Index).AddItem ("=")
CmbSelectOperator(Index).AddItem (">")
CmbSelectOperator(Index).AddItem ("<")
CmbSelectOperator(Index).AddItem (">=")
CmbSelectOperator(Index).AddItem ("<=")
CmbSelectOperator(Index).AddItem ("<>")
Case Else
End Select
End If
End Sub
监视变量: 变量值
Data1.Database.TableDefs(sTable) "数据库中的某个表名"
Data1.Database.TableDefs(sTable).Fields(sField) <这个集合中找不到此项目。>我想,问题因该时出现在下一个变量上,这条语句有什么问题呢?怎么改完善?
请指点,谢谢!
sTable = CmbSelectTable(3).Text
sField = CmbSelectField(Index).Text Set Data1.RecordSource = sTable
Select Case Data1.RecordSet.Fields(sField).Type
......