Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 带字母的Microsoft Access数字字段_Mysql_Ms Access - Fatal编程技术网

Mysql 带字母的Microsoft Access数字字段

Mysql 带字母的Microsoft Access数字字段,mysql,ms-access,Mysql,Ms Access,目前,我正在创建一个数据库,但我的表遇到了问题 我有一个tblCustomer,其中包括一个CustomerID,它是一个自动编号,格式为Customer-001,但是我有一个tblOrder用于客户订购,这两者之间存在一对多关系。 我有一个orderID字段,带有格式为Order-001的autonumber。问题在于此表中的customerID,它的数据类型是number,但我使用了查找,以便从tblCustomer获取customerID,以便添加到表order。由于格式为Customer

目前,我正在创建一个数据库,但我的表遇到了问题

我有一个
tblCustomer
,其中包括一个
CustomerID
,它是一个
自动编号
,格式为
Customer-001
,但是我有一个
tblOrder
用于客户订购,这两者之间存在一对多关系。

我有一个
orderID
字段,带有格式为
Order-001
autonumber
。问题在于此表中的
customerID
,它的数据类型是
number
,但我使用了查找,以便从
tblCustomer
获取
customerID
,以便添加到表
order
。由于格式为
Customer-001
,其中包含字母,因此,由于数据类型的原因,出现了一个错误。

如果您希望客户编号看起来像此“Customer-001”,您仍然可以在数据库中使用数字字段,只需将此数字格式化即可显示

在Access立即访问窗口中(使用Ctrl-G打开):

产出

客户-001

在Access文本框的
格式
字段中,您将填写
“Customer-”000

切勿将
Customer-001
存储在数据库中,也不得将
Customer-001
用于加入或查询。在Access中,自动编号列的类型为
Number/Long Integer

如果您想要
Customer-001
,您可以查询

SELECT * FROM tblCustomer WHERE CustomerID = 1

无论该列的
Format
属性如何设置,都会为
id
生成
1
(或另一个
Long
值)

例如,格式(与列类型不同)在where子句中与联接操作无关

您可以像这样在orders表中插入customer

INSERT INTO tblOrder (CustomerID, othercolumns)
VALUES (1, othervalues)
不是
值('1',其他值)
值('Customer-001',其他值)


我做了个测试。我的表格如下所示(Access 2002):

这是在我的Access 2002中输入内容之前的外观:

当输入
客户ID

在日期字段中输入
CustomerID
后:

如果无法调整表以使用现有键,则可以创建一个映射表,其中现有键获得唯一的数字id,并相应地映射它们。不过,我会在您构建自动编号时尝试进行协调。在自动编号格式的数据库中,它必须包含字母。customer-001用作自动编号,但在我使用查找时,它在其他表中不起作用。对我来说,让所有内容都是数字会更容易,但不幸的是,对于我必须完成的任务,它必须包含字符。有两条建议:不要使用像ID列那样的混合格式(尤其是嵌入“-”这样的格式),并避免自动编号。理想情况下,您希望将客户编号和订单编号等内容与现实世界中的某些内容联系起来。这样做你会遇到很多麻烦。那么你能在tblOrder中修复customerID吗?使它们相同。您认为将其转换为短文本格式更好吗?这样,我必须手动输入ID,但在其他表格中,使用查找将ID添加到itThanks中,以获得非常有用的响应,看起来它会起作用,但我不确定如何使用我按Ctrl-G时弹出的窗口。我将其粘贴到底部的即时框中。输入
?格式化$(1,“”“Customer-”“000”)
,然后按
Enter
键。
是access文件中
Debug.Print(…)
的同义词,当我尝试添加客户id时,仍然会发现执行此操作时存在数据值错误。1。您是如何尝试添加客户id的?2.相应外键列的类型是什么(在
tblOrder
中)。3.它是Access表还是MySQL表?我有一个Customer表,其中包含CustomerID,这是一个自动编号,它的格式是Customer-001,递增,但我有一个OrderID作为自动编号,CustomerID作为外键的Order表,如果有意义,我使用查找检查将客户ID从客户表添加到此表中。如果有帮助,这里有一些截图。ERD关系-客户表-订单表-
Dim id as Long
id = DLookup("CustomerID", "tblCustomer", "CustomerName='Miller'")
INSERT INTO tblOrder (CustomerID, othercolumns)
VALUES (1, othervalues)