检索具有字母数字格式的自动编号 ID
Retrieving an AutoNumber ID that has an alphanumeric format
如何检索作为自动编号且已指定字母数字 Format
的 ID 字段,例如 'ER001'?
我在后端使用 Access 和 VB 2010。
我的代码目前只有 returns ID 列的最后一个数字,例如 1
而不是 ER001
。
Dim SQL As String = "SELECT ID FROM ReqItemList WHERE ReqItem = " & inputin & " "
我认为这里的混淆是因为自动编号字段 "has alphanumeric format"。如果 table 设计看起来像这样
然后 ID 字段的 Format
属性 "ER"000
将导致它在 Access 表单和数据表视图中显示为类似于 ER001
。
但是,在设计视图(第一个屏幕截图)中,请注意该字段仍然是一个自动数字 字段并且它的"Field Size" 是Long Integer
。值本身只是数字;它们只是在 Access 用户界面中被格式化为字母数字。
所以您在 VB.NET 应用程序中看到的行为是 "normal"。如果您 运行 查询
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
将 return 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
将失败并返回 "Data type mismatch in criteria expression",因为 ID 实际上是一个数字,而不是文本值。
如何检索作为自动编号且已指定字母数字 Format
的 ID 字段,例如 'ER001'?
我在后端使用 Access 和 VB 2010。
我的代码目前只有 returns ID 列的最后一个数字,例如 1
而不是 ER001
。
Dim SQL As String = "SELECT ID FROM ReqItemList WHERE ReqItem = " & inputin & " "
我认为这里的混淆是因为自动编号字段 "has alphanumeric format"。如果 table 设计看起来像这样
然后 ID 字段的 Format
属性 "ER"000
将导致它在 Access 表单和数据表视图中显示为类似于 ER001
。
但是,在设计视图(第一个屏幕截图)中,请注意该字段仍然是一个自动数字 字段并且它的"Field Size" 是Long Integer
。值本身只是数字;它们只是在 Access 用户界面中被格式化为字母数字。
所以您在 VB.NET 应用程序中看到的行为是 "normal"。如果您 运行 查询
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
将 return 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
将失败并返回 "Data type mismatch in criteria expression",因为 ID 实际上是一个数字,而不是文本值。