首页 > 解决方案 > 如何简化访问查询

问题描述

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

我有一个包含以下列的 Excel 电子表格:名称 1、新名称 1、名称 2、新名称 2、ID 1、新 ID 1、ID 2、新 ID 2、ID 3、新 ID 3。

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

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

我运行宏并导出一个新的 Excel 表,其中包含其他列:新名称 1、新名称 2、新 ID 1、新 ID 2、新 ID3 3

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

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

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

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

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

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

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

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

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

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

  10. 带格式导出

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

添加列:新 ID 1

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

如果 ID1 的长度小于 7,则删除 New 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 中显示为空白。最后,我想将所有这些组合到一个查询中。

标签: excelms-accessvba

解决方案


推荐阅读