2014-03-12 29 views
1

我遇到了镜像数据集的问题。出现这种情况是因为数据模型在几个月前被切换,而我刚刚被分配到这个项目中,该项目已经完成了一个新的应用程序和数据模型。如何从MS Access DB中删除镜像数据集?

我的任务是从旧的MS Access应用程序到新导入的所有数据和这里的地方错误的源极。旧数据模型的编写方式是每个数据集都存储为镜像对应的数据集。想象一下这样的数据库表:

pk | A | B

1 |你好|世界

2 |世界|你好

我通过通过Excel和VBA编码一个自制的升级过程中导入的数据和工作的罚款。分段是必要的,因为我想创建插入语句,因此必须将所有旧ID,名称......映射到新闻。

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

我找到了镜像数据中的错误原因,现在想摆脱它。我的第一个想法很长,可能过于复杂,这就是为什么我在这里张贴,希望找到一个更短的解决方案。

所以,我的想法是如下,将完全使用VBA代码:

  1. 灌装记录与SELECT * FROM mirroredDataTable
  2. 写的SQL语句,并检查总记录中的语句结果> 1为记录集中的每个记录从1开始)
  3. 如果resultCount大于1,那么将其中一个ID写入新记录集或数组中
  4. 解析来自4.)的recordSet/array再次为每个ID在那里我创建一个DELETE语句
  5. ???
  6. 利润

现在我已经有2中的SQL语句)的想法,但我开始之前,我只是想确保有,我还没有考虑过没有“简单”的方法还是只是忽略了。

将不胜感激任何帮助/信息/提示,你可以提供。

PS:不是重新设计的台词之间的整个数据模型或东西(不是我的决定)

+0

可能重复的[如何在MS Access中交互?](http://stackoverflow.com/questions/22347535/how-to-intersect-in-ms-访问) –

回答

1

感谢@Gord汤普森我能解决一个纯粹的SQL基础上,这个问题的选项。请参阅此子线程的详细解决方案的答案:How to INTERSECT in MS Access?