如何简化访问查询

时间:2019-04-26 21:07:35

标签: excel vba ms-access access-vba

我正在建立一个查询,该查询将添加一列用于编辑名称和编辑ID号的列。我目前有10个查询来编辑和添加与宏结合的列。如何将这个查询简化为一个?

我有一个包含以下内容的Excel电子表格: 名称1,新名称1,名称2,新名称2,ID 1,新ID 1,ID 2,新ID 2,ID 3,新ID3。

我填写名称1,名称2,ID 1,ID 2,ID3列,并将此工作表加载到名为Scrub的访问表中。

我还有一个名为NameEdit的电子表格,稍后会参考。

我运行宏,并导出带有其他列的新Excel工作表: 新名称1,新名称2,新ID 1,新ID 2,新ID 3 3

我目前有10个与宏结合的查询

  1. 在新列中:“新ID 1”设置ID 1的格式以添加前导零以使长度至少为7

  2. 如果ID 1的长度小于7,则删除任何新的ID1。

  3. 在新列中:“新ID 2”设置ID 1的格式以添加前导零以使长度至少为7

  4. 如果ID 2的长度小于7,则删除任何新的ID2。

  5. 在新列中,新建ID 3设置ID 3的格式以仅显示数字。 (删除特殊字符和字母)

  6. 如果相应的ID 3小于7,则删除新的ID 3。

  7. 在“新列”中,“新名称1”格式为“名称1”(INNERJOIN与另一个表)

  8. 在“新列”中,“新名称2”,格式为“名称2”(INNERJOIN与另一个表)

  9. 如果新ID 1,新ID 2和新ID 3都为空,则删除行

  10. 以格式导出

我对10个查询有很多代码,这里有一些。一些代码彼此相似。

添加列:新ID 1

    UPDATE Scrub SET NewID1 = format(REPLACE([ID1],"-",""),"0000000");

如果ID1的长度小于7,则删除新的ID 1。

    UPDATE SCRUB SET NEWID1 = "" WHERE LEN(ID1)<7;

添加列:新ID 3

    UPDATE SCRUB SET NEWID3 = "" ID3 Like '*[a-z]*';

添加列:新名称1

    UPDATE Scrub INNER JOIN NameEdit ON SCRUB.[Name1] = NameEdit.[Name] SET SCRUB.NewName1 = NameEdit.[Format];

删除

    DELETE * FROM SCRUB WHERE LEN(NEWID1)=0 AND LEN(NEWID2)=0 AND LEN(NEWID3)=0;

我希望输出结果是一个包含新列的excel电子表格。 我遇到的问题是,NEWID3无法编辑以删除特殊字符。 同样,删除ID后,在excel中仍显示为空白。 最后,我想将所有这些组合到一个查询中。

0 个答案:

没有答案