目前,我正在创建一个数据库并遇到了我的桌面问题。
我有一个tblCustomer
,其中包含一个CustomerID
autonumber
,其格式为Customer-001
,但我有一个tblOrder
用于客户订购和这之间有一对多的关系
我有orderID
字段,其autonumber
格式为Order-001
。问题在于此表中的customerID
,其数据类型为number
,但我使用了查找以从CustomerID
获取tblCustomer
以便添加到Order
表Customer-001
。由于格式为index()
,因此存在字母,因此,由于数据类型而出现错误。
答案 0 :(得分:1)
如果您希望客户编号看起来像这样" Customer-001",您仍然可以在数据库中使用数字字段,只需格式化这样的数字即可显示。
在Access Immediate窗口中(使用Ctrl-G打开):
?Format$(1, """Customer-""000")
产生输出
客户-001
在Access TextBox的Format
字段中填写"Customer-"000
。
永远不要将Customer-001
存储在数据库中,也不要使用Customer-001
进行加入或查询。在Access中,自动编号列的类型为Number / Long Integer
。
如果您需要Customer-001
,则可以查询
SELECT * FROM tblCustomer WHERE CustomerID = 1
并且
Dim id as Long
id = DLookup("CustomerID", "tblCustomer", "CustomerName='Miller'")
1
产生Long
(或其他id
值),无论该列的Format
属性如何设置。
即。格式(与列类型不同)在where子句的连接操作中无关紧要。
您可以将客户插入订单表中,如下所示
INSERT INTO tblOrder (CustomerID, othercolumns)
VALUES (1, othervalues)
不是VALUES ('1', othervalues)
或VALUES ('Customer-001', othervalues)