sql - 检索具有字母数字格式的自动编号 ID

标签 sql vb.net ms-access

如何检索一个 ID 字段,它是一个自动编号并且已被赋予字母数字 Format,例如“ER001”?

我在后端使用 Access 和 VB 2010。

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

Dim SQL As String = "SELECT ID FROM ReqItemList WHERE ReqItem = " & inputin & " "

最佳答案

我认为这里的混淆是因为自动编号字段“具有字母数字格式”。如果表格设计是这样的

DesignView.png

然后 ID 字段的 Format 属性 "ER"000 将导致它在 Access 表单和数据 TableView 中显示为类似于 ER001

DatasheetView.png

但是,在设计 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/

相关文章:

vb.net - 在 vb.net 中引用未实例化的对象

python - 如何用python处理.mdb Access 文件

SQL - 将非空邻接列表转换为路径

asp.net - aspnet 中全局变量的缓存或共享类

Mysql:使用从另一列复制的值创建一个新列,但移动一行

mysql - 将 PNG 或 JPG 插入 MySQL 会损坏图像

sql-server - SQL Server 允许列中存在多个值

excel - 从 Excel 导入到 Access 备注字段时数据被截断

mysql - SQL查询以获取指定月份的记录

sql - 如何在 SQL Server 2005 中的一条语句中更新两个表?