如何检索一个自动编号并已经赋予字母数字格式的ID字段,例如'ER001'?
我正在使用Access作为后端和VB 2010。
到目前为止,我的代码只返回ID列的最后一个数字,例如1
而不是ER001
。
Dim SQL As String = "SELECT ID FROM ReqItemList WHERE ReqItem = " & inputin & " "
如何检索一个自动编号并已经赋予字母数字格式的ID字段,例如'ER001'?
我正在使用Access作为后端和VB 2010。
到目前为止,我的代码只返回ID列的最后一个数字,例如1
而不是ER001
。
Dim SQL As String = "SELECT ID FROM ReqItemList WHERE ReqItem = " & inputin & " "
Dim SQL As String = "SELECT ID FROM ReqItemList WHERE ReqItem=?"
Using cmd = New OleDbCommand(SQL, con)
cmd.Parameters.Add("?", OleDbType.VarWChar).Value = "foo"
Dim rtn = cmd.ExecuteScalar()
End Using
那么你将获得整数值1
,而不是字符串值"ER001"
。如果你想在VB.NET表单中显示值为ER001
,你需要在VB.NET代码中应用格式。
同样地,如果你想按ID搜索,则必须提供未经格式化的数字值。也就是说,
Dim SQL As String = "SELECT ReqItem FROM ReqItemList WHERE ID=?"
Using cmd = New OleDbCommand(SQL, con)
cmd.Parameters.Add("?", OleDbType.Integer).Value = 1
Dim rtn As String = cmd.ExecuteScalar()
End Using
会返回foo
,而
Dim SQL As String = "SELECT ReqItem FROM ReqItemList WHERE ID=?"
Using cmd = New OleDbCommand(SQL, con)
cmd.Parameters.Add("?", OleDbType.VarWChar).Value = "ER001"
Dim rtn As String = cmd.ExecuteScalar()
End Using
由于ID实际上是数字而不是文本值,因此"数据类型在条件表达式中不匹配"将导致失败。