Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何从MS Access数据库中删除镜像数据集?_Sql_Vba_Ms Access - Fatal编程技术网

Sql 如何从MS Access数据库中删除镜像数据集?

Sql 如何从MS Access数据库中删除镜像数据集?,sql,vba,ms-access,Sql,Vba,Ms Access,我遇到镜像数据集的问题。发生这种情况的原因是数据模型在几个月前被切换,而我最近刚刚被分配到这个项目,这个项目已经完成了一个新的应用程序和数据模型 我的任务是将所有数据从旧的MS Access应用程序导入到新的MS Access应用程序,下面是错误的来源。旧的数据模型是以这样一种方式编写的,即每个数据集也存储为其镜像对应项。设想这样一个数据库表: pk | A | B 1 |你好|世界 2 |世界|你好 我通过Excel和VBA编码通过自制的暂存过程导入数据,效果很好。登台是必要的,因为我想创建i

我遇到镜像数据集的问题。发生这种情况的原因是数据模型在几个月前被切换,而我最近刚刚被分配到这个项目,这个项目已经完成了一个新的应用程序和数据模型

我的任务是将所有数据从旧的MS Access应用程序导入到新的MS Access应用程序,下面是错误的来源。旧的数据模型是以这样一种方式编写的,即每个数据集也存储为其镜像对应项。设想这样一个数据库表:

pk | A | B

1 |你好|世界

2 |世界|你好

我通过Excel和VBA编码通过自制的暂存过程导入数据,效果很好。登台是必要的,因为我想创建insert语句,因此必须映射所有旧ID、名称。。。去看新闻

在导入完成后测试应用程序时,我意识到GUI会两次显示所有数据集。(以镜像形式显示两次而不是一次又一次的原因是我们填充显示结果的列表框的方式)

我在镜像数据中找到了该错误的原因,现在希望将其清除。我的第一个想法相当长,可能过于复杂,这就是为什么我在这里发布,希望找到一个更短的解决方案

因此,我的想法如下,并且只使用VBA编码:

  • 使用SELECT*FROM MIRROREDDATABLE填充记录集
  • 编写一条SQL语句,并检查记录集中每个记录的记录计数结果是否大于1,从1开始。)
  • 如果resultCount大于1,则该结果中的一个ID将写入新的记录集或数组
  • 再次解析4.)中的记录集/数组,并为其中的每个ID创建一个DELETE语句
  • 利润
  • 现在我已经对2.)中的SQL语句有了一个想法,但在开始之前,我只想确保没有一种“简单”的方法是我没有考虑过的或只是忽略了的

    非常感谢您提供的任何帮助/信息/提示


    PS:这不是一个重新设计整个数据模型的选项,也不是我的决定)

    多亏了@Gord Thompson,我才能够在纯SQL的基础上解决这个问题。有关详细解决方案,请参阅此子线程的答案:

    的可能重复项