在MS Access 2010数据库中,我有一个名为CommunicationForm
的表单,该表单基于CommunicationTable
。该数据库包含两个表Clients
和CommunicationTable
。 CommunicationForm
上的两个文本框需要按如下方式填充:
If IsNull(CommunicationTable.LastName):
CommunicationForm.FirstName = Clients.FirstName
CommunicationForm.LastName = Clients.LastName
Else:
CommunicationForm.FirstName = CommunicationTable.FirstName
CommunicationForm.LastName = CommunicationTable.LastName
我怎样才能做到这一点?
我上传了一个简化版的数据库,其中包含足以在this file sharing site重新创建问题的内容。
如果有人需要知道,这个奇怪要求的基本原理是这是旧的非规范化数据结构和新的规范化数据结构之间的过渡期。最终,我们将摆脱CommunicationTable中的名称字段。但是对于时间安排,我如何以及在何处使用vba来完成上述要求?
答案 0 :(得分:1)
使用带有INNER JOIN或LEFT JOIN的SQL字符串创建查询qryClients:
SELECT IIF(ISNULL(CommunicationTable.LastName), Clients.LastName,
CommunicationTable.LastName) AS LastName,
IIF(ISNULL(CommunicationTable.FirstName), Clients.FirstName,
CommunicationTable.FirstName) AS FirstName
FROM CommunicationTable
INNER JOIN Clients
ON CommunicationTable.ClientID = Clients.ClientID;
然后
CommunicationForm.RecordSource = "qryClients"
CommunicationForm.LastName.ControlSource = "LastName"
CommunicationForm.FirstName.ControlSource = "FirstName"