【问题标题】:Where is Access form data populating data fromAccess 表单数据从哪里填充数据
【发布时间】:2017-08-06 20:37:18
【问题描述】:

我目前正在尝试帮助一位朋友处理他们的发票 Access 数据库。我很少使用 Access,并且在确定表单 (frmEntry) 从中提取数据的位置时遇到问题。我没有创建这个设置,所以我不确定它是如何工作的。我试图弄清楚在表单的下拉列表中选择客户时从哪里提取地址信息。我检查了查询,它只提取了 CustomerID 和 CustomerName,没有地址。该表确实有地址字段,但表中没有列出任何客户,但在表单中填充了地址及其姓名。

我确实看到哪里有另一个表格 (frmCustomer) 有客户和地址,但我不确定另一个表格是否从这里提取,如果是,为什么我在任何表格中都找不到地址或数据表视图?

非常感谢任何方向。我的最终目标是获取客户信息(地址等),以便我可以将其插入到我正在处理的新数据库中

【问题讨论】:

  • 您检查了换行符(增加表格数据表视图中的行高)?
  • 啊,非常感谢。就是这样!如果有办法为您标记答案,请告诉我

标签: database forms ms-access-2016


【解决方案1】:

您的数据包含换行符,并且组合框每条记录仅显示一行。

要显示数据,您可以替换行源中的换行符。

SELECT Replace([CustomerName],vbCrLf, " ") as CName FROM table 
' vbCrLf is the VBA constant for linebreaks (Cr - Carrige Return, Lf - LineFeed) 

这是糟糕的数据库规范化(假设您要搜索与城市相同的客户名称,例如巴黎)。每行应该是表中的一个单独字段(以及邮政编码)。如果每个数据都有换行符(例如没有街道 -> 空行),您可以将数据拆分到新字段中。

'Put this code in a module
'Split function
Public function splitCustomerName(ByVal strCustomerName as String, ByVal index as long) as String
  Dim arrCustomerName As Variant ' or declare a fixed array if you know the number of lines

  arrCustomerName = Split(strCustomername,vbCrLf)

  splitCustomerName = arrCustomerName(index)
End Function

查询

UPDATE table SET newCustomerName = splitCustomerName([table].[CustomerName],0)
  , newCustomerStreet = splitCustomerName([table].[CustomerName],1)
  , newCustomerCity = splitCustomerName([table].[CustomerName],2);

只需为名称、街道和城市创建必要的列,然后运行查询。 如果您删除 CostumerName 列并重命名表(例如 newTable),您可以使用表的旧名称创建查询,其行为类似于旧表。

SELECT *
  , newCustomerName & vbCrLf & newCustomerStreet & vbCrLf & newCustomerCity as CustomerName 
FROM newTable

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-27
    • 2018-02-27
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多