有条件地填写表格字段

时间:2013-12-04 01:08:43

标签: vba ms-access access-vba ms-access-2010

在MS Access 2010数据库中,我有一个名为CommunicationForm的表单,该表单基于CommunicationTable。该数据库包含两个表ClientsCommunicationTableCommunicationForm上的两个文本框需要按如下方式填充:

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来完成上述要求?

1 个答案:

答案 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"