从查询中创建一个新的表/查询

时间:2016-10-06 08:27:54

标签: ms-access access-vba

我在MS-Access中使用ODBC表创建了一个交叉表查询。查询看起来像这样,包含4个包含Date的字段。此查询每天更新,空字段可能填写也可能不填写

ANTRAGSNUMMER    Eingangdata   esigniertdok   Ausgangdata  Policierung

   111            3.10.2016 

   222            3.10.2016      3.10.2016

   333            4.10.2016      5.10.2016      5.10.2016

现在我要解决的是根据以下条件识别具有空字段的记录

  1. 如果记录的字段esigniertdok为空,则必须将记录移动到新的表/查询。它必须在Eingangdata(3.10.2016)字段中检查日期并等待该日期后的3天,如果Field esigniertdok仍为空,则必须移动记录。

  2. 如果Field Ausgangdata为记录为空,则必须将记录移动到新的表/查询。它必须在字段esigniertdok(3.10.2016)中检查日期并等待该日期后的2天,如果Field Ausgangdata仍为空,则必须移动记录。

  3. 如果记录中的Field Policierung为空,则必须将记录移动到新的表/查询。它必须在Ausgangdata(5.10.2016)字段中检查日期并等待该日期后的5天,如果Field Policierung仍为空,则必须移动记录。

  4. 我该怎么做?是否可以在VBA中创建程序并使所有记录通过它并验证上述条件,或者是否可以创建SQL查询来执行此操作?

    不同字段的等待时间不同,因为每个字段由不同的部门处理。上述模式中大约有1000条记录每天都会更新。

    有人可以指导我如何实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

记录集中有1000个记录集或1000条记录吗?

让我们首先尝试了解您的问题。你说比如说:

  

如果记录集的字段esigniertdok为空,则必须将记录集移动到新的表/查询。它必须在Eingangdata(3.10.2016)字段中检查日期并等待该日期后的3天,如果Field esigniertdok仍为空,则必须移动记录集。

如果Field esigniertdok为空,你的意思是记录应该转移到新表吗?如果在Eingangsdata之后3天(让我们说7.10.2016)这个领域" esigniertdok"它仍然是空的,应该在哪里移动?你的意思是删除' ?

更新:

根据您的评论,您可以使用以下代码将数据复制到新表格(让我们将其命名为:ESIGN):

Dim rs As DAO.Recordset
' CLEAR ALL ENTRIES FIRST
CurrentDb.Execute ("DELETE * FROM ESIGN")
Set rs = CurrentDb.OpenRecordset("SELECT * FROM [YOUR TABLE]")
Do Until rs.EOF
  If rs![esigniertdok] = "" Or IsNull(rs![esigniertdok]) Then
    If rs![Eingangdata] <= Date - 3 Then
        CurrentDb.Execute ("INSERT INTO ESIGN (ANTRAGSNUMMER) VALUES (" & rs!ANTRAGSNUMMER & ")")
    End If
  End If
  rs.MoveNext
Loop