自动化 SQL 查询 [关闭]

Posted

技术标签:

【中文标题】自动化 SQL 查询 [关闭]【英文标题】:Automate SQL Queries [closed] 【发布时间】:2015-01-21 15:19:39 【问题描述】:

我有一个要转移到 SQL 服务器数据库的访问数据库。但是我有一个 VBA 程序,我仍然想在 SQL 数据库中使用它。有没有办法像 VBA 在访问中那样自动化 SQL 查询?任何帮助将不胜感激。

编辑:

这是我的 VBA 代码的 sn-p。

deleteVerifTable = "DELETE * FROM VerifiedFormularies"

verifiedForm = "INSERT INTO VerifiedFormularies ([CLIENT ID], [CLIENT NAME], [MARKET SEGMENT], [FORMULARY ID], [FORMULARY NAME], [FORMULARY VERSION], [APPROVAL STATE], [ARCHIVED]) " & _
"SELECT DD.[CLIENT ID], DD.[CLIENT NAME], DD.[MARKET SEGMENT], DD.[FORMULARY ID], DD.[FORMULARY NAME], DD.[FORMULARY VERSION], DD.[APPROVAL STATE], [ARCHIVED] " & _
"FROM " & tableName & " as DD " & _
"Where DD.[APPROVAL STATE] IN (""APPROVED AND PUBLISHED"", ""APPROVED"", ""APPROVED WITH CHANGES"", ""APPROVED WITH POSTED CHANGES"") " & _
"AND DD.[Client ID] NOT IN (SELECT Exclusions.[Client ID] FROM Exclusions)" & _
"AND DD.[ARCHIVED] NOT IN(""YES"")" & _
"AND DD.[CLIENT ID] NOT IN(SELECT Exclusions.[Client ID] FROM Exclusions)" & _
"AND YEAR(DD.[APPROVED DATE]) >= " & year & " AND MONTH(DD.[APPROVED DATE]) > 1 AND DAY(DD.[APPROVED DATE]) > 1"

【问题讨论】:

自动化是什么意思? 你的 vba 代码是做什么的? 我的 VBA 代码允许用户输入某些日期并运行针对他们输入的信息量身定制的 SQL 查询。 喜欢搜索查询?这些不是自动的。 VBA 中有一些代码可以捕获用户事件(如单击按钮)并执行查询。这同样适用,但查询现在从 sql server 中提取而不是访问。 【参考方案1】:

Access 是一个带有集成前端(表单、报表)的 DBMS,而 SQL-Server 是一个纯 DBMS。您可以像在 Access 中一样定义表值函数,但是您必须在 SQL 中完成所有操作。 SQL-Server 总体上比 Access 更强大。多用户访问开始。但是,您必须为用户创建一个前端,例如带有实体框架的 .net c# WPF。

如果您已经是 Visual Basic 方面的专家,VB.net 也是一种选择。

或者使用 Access 作为 Frontend 并使用 ADO 或 DAO 从 sql-server 数据库中获取数据。您还可以通过 ODBC 连接 Access。但是我不建议在大规模应用中这样做。

【讨论】:

我在编辑中添加了我的代码的 sn-p。基本上,它会删除先前创建的表中的所有记录,然后根据用户提供的信息插入新记录。这在 .Net 中是否可行? 你可以用一点力气实现这些语句(SQL方言有点偏离,很确定你可以在网上找到关于差异的参考)到存储过程中,并在使用实体框架时挂钩。 (推荐用于批量更新/插入/删除操作) 如果您使用 access many id 的报告,建议使用访问前端。表单(Winforms 或 WPF)的学习曲线应该不会造成太大问题【参考方案2】:

如果您的表已经迁移到 SQL Server,您需要执行以下操作: 删除 Access 数据库中的所有表(先备份!)。

将您的 SQL Server 表链接回 Access。它们应与迁移前的原始表具有相同的名称和结构。

如果它们没有相同的名称和结构,那么您必须创建视图并链接它们。

然后,您现有的代码应该可以像它期望存在的所有对象一样工作,现在就可以了。

【讨论】:

以上是关于自动化 SQL 查询 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 Sql Server Management Studio Express 中自动缩进查询? [关闭]

每个页面加载 20 个 SQL 查询真的被认为很多吗? [关闭]

关闭SQL Server管理器(SSMS)拖动时大括号及dbo(架构)的办法

oracle游标的使用

Oracle 游标简介

在sqlserver2008企业管理器中批量导入数据时,提示内存不足,然后自动关闭。帮忙看看啥问题?