Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-模块/函数/VBA

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

时 间:2017-11-09 21:08:48
作 者:Big Young   ID:252  城市:襄阳
摘 要:    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交流群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助