检索具有字母数字格式的自动编号 ID
Posted
技术标签:
【中文标题】检索具有字母数字格式的自动编号 ID【英文标题】:Retrieving an AutoNumber ID that has an alphanumeric format 【发布时间】:2015-02-07 18:01:57 【问题描述】:如何检索属于自动编号且已指定字母数字 Format
(例如“ER001”)的 ID 字段?
我将 Access 用于后端和 VB 2010。
到目前为止,我的代码只返回 ID 列的最后一个数字,例如 1
而不是 ER001
。
Dim SQL As String = "SELECT ID FROM ReqItemList WHERE ReqItem = " & inputin & " "
【问题讨论】:
你能解释一下表ReqItemList的结构吗?您要搜索的值存储在哪一列? 该表基本上有 3 列 ID(自动编号数据类型字母数字格式)、ReqItem(文本数据类型)和 DateReq(文本数据类型)。我正在尝试使用我的 ReqItem 作为 WHERE 来检索 ID。 从 ReqItemList 中选择 ID WHERE ReqItem = ... @Ray 抱歉,伙计,这是我做同样输出的第一件事,不过感谢您的回复。 【参考方案1】:我认为这里的混淆是因为自动编号字段“具有字母数字格式”。如果表格设计是这样的
然后,ID 字段的Format
属性"ER"000
将使其在Access 表单和数据表视图中显示为ER001
。
但是,在设计视图(第一个屏幕截图)中,请注意该字段仍然是 AutoNumber 字段,其“字段大小”为 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 实际上是一个数字,而不是文本值。
【讨论】:
感谢大家的回复终于明白我做错了什么 如果这个答案帮助你解决了你的问题,那么请阅读这个How does accepting an answer work?以上是关于检索具有字母数字格式的自动编号 ID的主要内容,如果未能解决你的问题,请参考以下文章