我目前正在尝试用他们的发票Access数据库帮助一位朋友。我很少使用Access,我在确定表单(frmEntry)从中提取数据的位置时遇到了问题。我没有创建这个设置,所以我不确定它是如何工作的。我试图找出在表单下拉列表中选择客户时从哪里获取地址信息。我检查了查询,它只提取了CustomerID和CustomerName,没有地址。该表确实具有地址字段,但表中没有任何客户列出,但是在表单中填写了地址及其名称。
我确实看到哪里有另一个表格(frmCustomer)有客户和地址,但我不确定其他表格是否从这里拉出来,如果是这样,为什么我找不到任何表格中的地址或数据表视图?
任何方向都会非常感激。我的最终目标是获取客户信息(地址等),以便我可以将其插入到我正在处理的新数据库中
答案 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