MS ACCESS中也可以运行SQL脚本文件-Big Young
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-模块/函数/VBA


MS ACCESS中也可以运行SQL脚本文件

发表时间:2017/11/9 21:08:48 评论(1) 浏览(10500)  评论 | 加入收藏 | 复制
   
摘 要:    MS ACCESS中利用自定义过程实现SQL脚本的运行。
正 文:
    ACCESS的查询中只能执行一条SQL语句,并不支持存储过程,不能直接运行SQL脚本,但我们可以利用VBA自定义一个子程序,用它来执行文本文件中的SQL语句,模拟大型数据库中的存储过程。
    1、新建一个文本文件,每行一条SQL语句,其格式如以下示例所示:
    Insert INTO 缺考信息 (XM,ZKZH,QKKM) values ("张丹丹","32061721400071","301");
    Insert INTO 缺考信息 (XM,ZKZH,QKKM) values ("刘本华","32061721400089","301");
    Insert INTO 缺考信息 (XM,ZKZH,QKKM) values ("柳小双","32061721400076","301");
    Insert INTO 缺考信息 (XM,ZKZH,QKKM) values ("谢清靓","42061721300106","301");
    Insert INTO 缺考信息 (XM,ZKZH,QKKM) values ("魏二丽","42061721300107","301");
    Insert INTO 缺考信息 (XM,ZKZH,QKKM) values ("龚倩怡","42061721600318","301");
    Insert INTO 缺考信息 (XM,ZKZH,QKKM) values ("江寒梦","42061721300129","301");
    Insert INTO 缺考信息 (XM,ZKZH,QKKM) values ("邓兆俊","42061721300099","301");
    Insert INTO 缺考信息 (XM,ZKZH,QKKM) values ("有雪梅","42061721300120","301A");
    Insert INTO 缺考信息 (XM,ZKZH,QKKM) values ("刘立平","42061721300115","301");
    Insert INTO 缺考信息 (XM,ZKZH,QKKM) values ("丁长荣","42061721300122","301A");
    Insert INTO 缺考信息 (XM,ZKZH,QKKM) values ("肖瑞芳","42061721300130","301A");
    Insert INTO 缺考信息 (XM,ZKZH,QKKM) values ("刘静坤","42061721300110","301A");

    当然,这只是个示例,不一定语句都相同,只要是ACCESS支持的SQL语句就行了,只要一行一句就可以了。
    2、把文本文件保存为名为sql.txt的文件,与运行代码的数据数据库放在同一个文件夹下,如果放在其它目录下,就必须修改VBA代码中的打开文件路径了。

    3、打开数据库,按ALT+F11打开VBE窗口,插入一个标准模块,在代码窗口在输入以下VBA代码,只要其中一个子程序就可以了,因为这两个子程序的功能是一样的。


Sub SqlScripts()
   Dim vSql       As Variant
   Dim vSqls      As Variant
   Dim strSql     As String
   Dim intF       As Integer

   intF = FreeFile()
   Open CurrentProject.Path & "\sql.txt" For Input As #intF
   strSql = StrConv(InputB(LOF(intF), intF), vbUnicode) '含有中文
   Close intF
   vSql = Split(strSql, ";")

   On Error Resume Next
   For Each vSqls In vSql
      CurrentDb.Execute vSqls
   Next
End Sub


Public Sub ExecSQLScriptFile()
    Dim TextLine As Variant
    Dim intF As Integer
    intF = FreeFile()
    Open CurrentProject.Path & "\sql.txt" For Input As #intF    ' 打开文件。
    Do While Not EOF(intF)    ' 循环至文件尾。
        Line Input #intF, TextLine    ' 读入一行数据并将其赋予某变量。
        CurrentDb.Execute TextLine    ' 在立即窗口中显示数据。
    Loop
    Close #intF    ' 关闭文件。
End Sub

    4、在VBE的立即窗口中输入子程序的名称,然后回车就会依次执行文本文件中的每条SQL语句,跟运行存储过程类似。

Access软件网交流QQ群(群号:198465573)
 
 相关文章
一个用于远程执行SQL脚本的函数  【红尘如烟  2010/8/19】
SQL SERVER脚本生成器-维护非常有用!  【赵文斌  2012/5/3】
执行SQL脚本文件(.sql)的两种方法.doc  【赵文斌  2012/5/12】
[转载]分享一个SQLSERVER脚本(计算数据库中各个表的数据量...  【金宇转载  2015/3/3】
用于校验 SQL Server 数据库备份的脚本  【缪炜  2017/9/15】
常见问答
技术分类
相关资源
文章搜索
关于作者

Big Young

文章分类

文章存档

友情链接