访问& VBA,什么是大型可扩展应用程序的最佳“架构”

时间:2016-07-19 08:35:15

标签: sql vba ms-access architecture access-vba

我想知道有关混合Access,SQL& amp;的最佳方法是什么? VBA。 因为我目前正在开发一个大型应用程序,这可能会在未来发展,我问自己是否做得对。

我选择在独立的VBA模块中“硬编码”我的大多数SQL查询,只给出条件值(对于SELECT/DELETE)或字段(对于INSERT/UPDATE)作为参数。 我首先发现这很方便,因为我所要做的就是在我的表单代码中进行过程调用,只传递我控件的所需值。

但问题是,如果我添加一个新字段,重命名我的表或重命名一个字段,我将不得不一个一个地重写有关该表的所有查询...这很烦人

我想知道是否存在“标准架构”以方便地在Access中的可伸缩应用程序上工作?

通过可扩展,我指的是数据库本身和应用程序逻辑。

1 个答案:

答案 0 :(得分:3)

  

...问题是如果我添加一个新字段,重命名我的表或   重命名一个字段,我将不得不重写有关该字段的所有查询   表一个接一个

我建议你使用QueryDef个对象(保存的查询),而不是将SQL语句文本保存在代码模块中。

然后,如果您有查询引用后来更改的表或字段名称的查询,则无需手动识别哪些查询需要修订并一次编辑这些查询。您可以使用swapTblNamesInQueryDefs()之类的内容。我为表名写了这个,但它也适用于字段名称。

如果继续将SQL语句保留在代码模块中,则可以使用find& amp;更换。然而,潜在的复杂性是替换词不仅限于SQL语句文本。当目标词存在于您的VBA代码中的其他地方但是您不希望替换这些事件时,这将是一个问题。当您的SQL位于QueryDef个对象中时,这不是问题。

添加新字段更具挑战性。您可以在 DisplayOnly 模式下使用swapTblNamesInQueryDefs()来检查包含已修改表名称的查询中的SQL。但是,我没有看到任何可自动化的方法来确定哪些查询应该被修改并进行必要的更改。