Access表单数据从何处填充数据

时间:2017-08-06 20:37:18

标签: database forms ms-access-2016

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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),则可以使用表的oldname创建一个查询,其行为类似于旧表。

SELECT *
  , newCustomerName & vbCrLf & newCustomerStreet & vbCrLf & newCustomerCity as CustomerName 
FROM newTable
相关问题