编辑:
这就是我所拥有的:一个Access数据库,由3个从SQL Server链接的表组成。我需要通过查询3个源表在这个数据库中创建一个新表。以下是我使用的3个表的示例:
PlanTable1
+------+------+------+------+---------+---------+
| Key1 | Key2 | Key3 | Key4 | PName | MainKey |
+------+------+------+------+---------+---------+
| 53 | 1 | 5 | -1 | Bikes | 536681 |
| 53 | 99 | -1 | -1 | Drinks | 536682 |
| 53 | 66 | 68 | -1 | Balls | 536683 |
+------+------+------+------+---------+---------+
SpTable
+----+---------+---------+
| ID | MainKey | SpName |
+----+---------+---------+
| 10 | 536681 | Wing1 |
| 11 | 536682 | Wing2 |
| 12 | 536683 | Wing3 |
+----+---------+---------+
LocTable
+-------+-------------+--------------+
| LocID | CenterState | CenterCity |
+--- ---+-------------+--------------+
| 10 | IN | Indianapolis |
| 11 | OH | Columbus |
| 12 | IL | Chicago |
+-------+-------------+--------------+
您可以看到表格之间的关系。我需要基于这些创建的NewMasterTable看起来像这样:
NewMasterTable
+-------+--------+-------------+------+--------------+-------+-------+-------+
| LocID | PName | CenterState | Key4 | CenterCity | Wing1 | Wing2 | Wing3 |
+-------+--------+-------------+------+--------------+-------+-------+-------+
| 10 | Bikes | IN | -1 | Indianapolis | 1 | 0 | 0 |
| 11 | Drinks | OH | -1 | Columbus | 0 | 1 | 0 |
| 12 | Balls | IL | -1 | Chicago | 0 | 0 | 1 |
+-------+--------+-------------+------+--------------+-------+-------+-------+
对我来说,困难的部分是使这个新表动态化。将来,可以将行添加到源表中。我需要我的NewMasterTable来反映源的任何更改/添加。如何按照描述构建NewMasterTable?这有什么意义吗?
答案 0 :(得分:0)
由于Access表是必需的,因此可能唯一的方法是创建一组定期执行的Update和Insert查询。 Access没有内置的“动态”功能,可以监控和更新表格。
首先,创建表格。您可以1)通过自己定义列和约束从头开始手动执行此操作,或者2)创建生成大部分模式的生成表查询(即SELECT ... INTO),然后添加任何其他列,编辑必要的细节并添加适当的索引。
定义并保存更新和插入(以及可选的删除)查询以保持表同步。我不是在这里分享实际代码,因为这超出了我认为的主要问题,需要您需要定义的细节。由于您的键值存在一些模糊性(字段名称和样本数据仍不足以显示精确的关系和约束),因此您可能需要多个更新语句。
最后,我认为这是解决问题的关键,您需要定义一些定期运行“同步”查询的Access表单(或其他代码)。访问表单具有[Timer Interval]属性和定期触发的相应Timer事件。在运行所有查询的Form_Timer子中添加VBA代码。我建议在事务中“包装”这样的VBA并添加适当的错误处理和错误记录等。