Access & VBA,对于大型、可扩展的应用程序,什么是最好的 "architecture"
Access & VBA, what is best "architecture" for a large, scalable application
我想知道关于混合 Access SQL 和 VBA 的最佳方法是什么。
因为我目前正在开发一个大型应用程序,它可能会在未来发展,我在问自己是否做对了。
我选择 "hard code" 我的大部分 SQL 查询在独立的 VBA 模块中,只给出标准值(对于 SELECT/DELETE
)或字段(对于 INSERT/UPDATE
) 作为参数。
我首先发现这很方便,因为我所要做的就是在我的表单代码中进行过程调用,只需传递我的控件所需的值。
但问题是,如果我添加一个新字段,重命名我的 table 或重命名一个字段,我将不得不一个接一个地重写与该 table 有关的所有查询...那是很烦人
我想知道是否存在 "standard architecture" 可以方便地在 Access 中处理可扩展应用程序?
我所说的可扩展是指数据库本身和应用程序逻辑。
... the problem is that if I add a new field, rename my table or
rename a field, I will have to rewrite all queries concerning that
table one by one
我建议您使用 QueryDef
对象(保存的查询)而不是在代码模块中保留 SQL 语句文本。
然后,当您有引用 table 或字段名称的查询(稍后会更改)时,您不必手动识别哪些查询需要修改并一次编辑这些查询。你可以使用类似 swapTblNamesInQueryDefs() 的东西。我是为 table 名称写的,但它也应该适用于字段名称。
如果您继续在代码模块中保留 SQL 语句,您可以使用查找和替换执行类似的操作。然而,潜在的并发症是单词替换不会仅限于 SQL 语句文本。当目标词出现在您的 VBA 代码中的其他地方但您不希望替换这些出现时,这将是一个问题。当您的 SQL 在 QueryDef
对象中时,这不是问题。
添加新字段更具挑战性。您可以在 DisplayOnly 模式下使用 swapTblNamesInQueryDefs()
从包含修改后的 table 的名称的查询中检查 SQL。但是,我没有看到任何自动 table 方法来识别应该修改哪些查询并进行所需的更改。
我想知道关于混合 Access SQL 和 VBA 的最佳方法是什么。 因为我目前正在开发一个大型应用程序,它可能会在未来发展,我在问自己是否做对了。
我选择 "hard code" 我的大部分 SQL 查询在独立的 VBA 模块中,只给出标准值(对于 SELECT/DELETE
)或字段(对于 INSERT/UPDATE
) 作为参数。
我首先发现这很方便,因为我所要做的就是在我的表单代码中进行过程调用,只需传递我的控件所需的值。
但问题是,如果我添加一个新字段,重命名我的 table 或重命名一个字段,我将不得不一个接一个地重写与该 table 有关的所有查询...那是很烦人
我想知道是否存在 "standard architecture" 可以方便地在 Access 中处理可扩展应用程序?
我所说的可扩展是指数据库本身和应用程序逻辑。
... the problem is that if I add a new field, rename my table or rename a field, I will have to rewrite all queries concerning that table one by one
我建议您使用 QueryDef
对象(保存的查询)而不是在代码模块中保留 SQL 语句文本。
然后,当您有引用 table 或字段名称的查询(稍后会更改)时,您不必手动识别哪些查询需要修改并一次编辑这些查询。你可以使用类似 swapTblNamesInQueryDefs() 的东西。我是为 table 名称写的,但它也应该适用于字段名称。
如果您继续在代码模块中保留 SQL 语句,您可以使用查找和替换执行类似的操作。然而,潜在的并发症是单词替换不会仅限于 SQL 语句文本。当目标词出现在您的 VBA 代码中的其他地方但您不希望替换这些出现时,这将是一个问题。当您的 SQL 在 QueryDef
对象中时,这不是问题。
添加新字段更具挑战性。您可以在 DisplayOnly 模式下使用 swapTblNamesInQueryDefs()
从包含修改后的 table 的名称的查询中检查 SQL。但是,我没有看到任何自动 table 方法来识别应该修改哪些查询并进行所需的更改。