如何检索一个ID字段,该字段是AutoNumber,并已被赋予字母数字Format,例如“do 001”?
我正在为后端和VB 2010使用Access。
到目前为止,我的代码只返回ID列的最后一个编号,例如,1而不是ER001。
Dim SQL As String = "SELECT ID FROM ReqItemList WHERE ReqItem = " & inputin & " "发布于 2015-02-08 09:35:06
我认为这里的混乱是因为AutoNumber字段“具有字母数字格式”。如果表的设计如下

然后ID字段的Format属性"ER"000将导致它以类似于ER001的形式出现在Access窗体和数据表视图中。

但是,在Design (第一个屏幕截图)中,请注意该字段仍然是一个自动数字字段,其“字段大小”为Long Integer。值本身只是数字;它们只是在Access用户界面中被格式化为字母数字。
因此,您在VB.NET应用程序中看到的行为是“正常的”。如果您运行查询
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实际上是一个数字,而不是文本值。
https://stackoverflow.com/questions/28385535
复制相似问题