如何检索一个 ID 字段,它是一个自动编号并且已被赋予字母数字 Format
,例如“ER001”?
我在后端使用 Access 和 VB 2010。
到目前为止,我的代码只返回 ID 列的最后一个数字,例如 1
而不是 ER001
。
Dim SQL As String = "SELECT ID FROM ReqItemList WHERE ReqItem = " & inputin & " "
最佳答案
我认为这里的混淆是因为自动编号字段“具有字母数字格式”。如果表格设计是这样的
然后 ID 字段的 Format
属性 "ER"000
将导致它在 Access 表单和数据 TableView 中显示为类似于 ER001
。
但是,在设计 View (第一个屏幕截图)中,请注意该字段仍然是一个自动数字字段,并且它的“字段大小”是长整型
。值本身只是数字;它们只是在 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 实际上是一个数字,而不是文本值。
关于sql - 检索具有字母数字格式的自动编号 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28385535/