【问题标题】:Microsoft Access Number Field with letters带有字母的 Microsoft 访问号码字段
【发布时间】:2017-12-15 02:53:16
【问题描述】:

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

我有一个tblCustomer,其中包括一个autonumber 格式为Customer-001CustomerID,但是我有一个用于客户订购的tblOrder,并且这之间存在一对多的关系。
我有一个orderID 字段和autonumber,格式为Order-001。问题在于此表中的customerID,它的数据类型是number,但我使用查找来从tblCustomer 中获取CustomerID,以便添加到表Order。由于格式为Customer-001,其中有字母,因此数据类型有误。

【问题讨论】:

  • 如果您无法调整表以使用现有键,您可以创建一个映射表,其中现有键获取唯一的数字 id 并相应地映射它们。不过,我现在会在您构建它时尝试调和。
  • 在自动编号格式的数据库中,它必须包含字母。 customer-001 用作自动编号,但当我使用查找时它不会在其他表中工作。对我来说,让所有东西都只是数字会更容易,但不幸的是,我必须完成的任务也必须包含字符
  • 两条建议:不要对 ID 列使用像这样的混合格式(尤其是像这样嵌入“-”),并避免使用自动编号。理想情况下,您希望将客户编号和订单编号等内容与现实世界中的某些事物联系起来。这样做你会遇到麻烦。
  • 那么你能修复 tblOrder 中的 customerID 吗?使它们相同。
  • 您认为将其转换为短文本格式会更好吗?这样我必须手动输入 ID,但在其他表中使用查找将 ID 添加到它

标签: mysql ms-access


【解决方案1】:

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

在 Access Immediate 窗口中(使用 Ctrl-G 打开):

?Format$(1, """Customer-""000")

产生输出

客户-001

在 Access 文本框的 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'")

无论该列的 Format 属性是如何设置的,id 的结果为 1(或另一个 Long 值)。

即格式(与列类型不同)在 where 子句和连接操作中无关紧要。

您可以像这样在订单表中插入客户

INSERT INTO tblOrder (CustomerID, othercolumns)
VALUES (1, othervalues)

不是VALUES ('1', othervalues)VALUES ('Customer-001', othervalues)


我做了一个测试。我的表看起来像这样(Access 2002):

这是在我的 Access 2002 中输入内容之前的样子:

输入CustomerID时:

在日期字段中输入CustomerID后:

【讨论】:

  • 感谢您提供非常有用的回复,看起来它会起作用,但我不确定如何使用按 Ctrl-G 时弹出的窗口。我将其粘贴到底部的即时框中。之后我该怎么办?
  • 输入?Format$(1, """Customer-""000") 并按Enter 键。 ? ...Debug.Print( ... ) 的同义词
  • 当我尝试添加客户 ID 时,在访问文件中仍然会出现数据值错误。
  • 1.您如何尝试准确添加客户 ID? 2.对应的外键列的类型是什么(在tblOrder中)。 3、是Access表还是MySQL表?
  • 我有一个客户表,其中有一个自动编号的 CustomerID,它采用 Customer-001 的格式,它会递增,但是我有一个订单表,其中有一个 OrderID 作为自动编号并且有CustomerID 作为外键,如果有意义,我使用查找检查将客户 ID 从客户表添加到此表中。如果他们有帮助,这里有一些屏幕截图。 ERD 关系 - gyazo.com/9a0df458c4ce1bdf833c5727fd3afd62 客户表 - gyazo.com/19c333ece22085d3305a747d3dde31ca 订单表 -gyazo.com/8bb735d8d5d9a869194d730959a1ff1c
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-15
  • 1970-01-01
  • 1970-01-01
  • 2019-08-26
  • 1970-01-01
  • 1970-01-01
  • 2016-09-23
相关资源
最近更新 更多