首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检索具有字母数字格式的AutoNumber ID

检索具有字母数字格式的AutoNumber ID
EN

Stack Overflow用户
提问于 2015-02-07 18:01:57
回答 1查看 1.2K关注 0票数 3

如何检索一个ID字段,该字段是AutoNumber,并已被赋予字母数字Format,例如“do 001”?

我正在为后端和VB 2010使用Access。

到目前为止,我的代码只返回ID列的最后一个编号,例如,1而不是ER001

代码语言:javascript
复制
Dim SQL As String = "SELECT ID FROM ReqItemList WHERE ReqItem = " & inputin & " "
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-08 09:35:06

我认为这里的混乱是因为AutoNumber字段“具有字母数字格式”。如果表的设计如下

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

但是,在Design (第一个屏幕截图)中,请注意该字段仍然是一个自动数字字段,其“字段大小”为Long Integer。值本身只是数字;它们只是在Access用户界面中被格式化为字母数字。

因此,您在VB.NET应用程序中看到的行为是“正常的”。如果您运行查询

代码语言:javascript
复制
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进行搜索,则必须提供未格式化的数值。那是

代码语言:javascript
复制
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,而

代码语言:javascript
复制
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实际上是一个数字,而不是文本值。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28385535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档