VBA+SQL-.pdf

上传人:索**** 文档编号:76193890 上传时间:2023-03-08 格式:PDF 页数:43 大小:263.72KB
返回 下载 相关 举报
VBA+SQL-.pdf_第1页
第1页 / 共43页
VBA+SQL-.pdf_第2页
第2页 / 共43页
点击查看更多>>
资源描述

《VBA+SQL-.pdf》由会员分享,可在线阅读,更多相关《VBA+SQL-.pdf(43页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、1SQL语句教程目录SQL语句教程SQL语言教程-序 -SQL语句教程Workbooks对象的Open方法的帮助说明 -SQL语句教程Workbooks对象与Sheets和Worksheets对象的Add方法-SQL语句教程Worksheet对象的Delete方法 -SQL语句教程利用ADO的Connection对象来连接数据库 -SQL语句教程CREATE TABLE-创建数据表的语句-SQL语句教程DROP TABLE-删除数据表的语句-SQL语句教程Alter Table-修改数据表的语句 -SQL语句教程INSERT INTO-向数据库中添加数据 -SQL语句教程UPDATE-修改数据

2、库中已有的数据 -SQL语句教程DELETE FROM-删除数据库的数据 -SQL语句教程CopyFromRecordset方法的使用说明 -SQL语句教程Select-从数据库中检索数据 -SQL语句教程Where-筛选与限制检索的数据 -SQL语句教程SQL函数-预处理检索值的命令 -SQL语句教程Group By-分类汇总检索的数据 -SQL语句教程Having-筛选汇总后的数据 -SQL语句教程Order By-排序检索的数据 -SQL语句教程*(星号)-数据表中所有的列 -SQL语句教程Insert Into Select-批量添加数据到数据库中 -SQL语句教程Select Int

3、o-把检索的数据添加到新的数据表中 -SQL语句教程Top-限制检索结果的数量 -SQL语句教程Distinct-筛选出不重复的数据 -2 3 5 6 7 9 11131517192021232628303234363840422SQL语句教程SQL语言教程-序特此声明本教程作者:bengdeng,来源:Excel吧我作为一学习者,整理了一下,去除一些无用的字句&广告性质的网址。对于不少的朋友来说,Excel可能还是在用最基本的功能,但就是最基本的功能,已能帮助我们完成很多的工作,一般的Excel网站,把Excel知识分成 基础知识,公式与函数,图表与数据透视表和VBA程序开发。其它方面在这不

4、谈,Excel就是因为用VBA,这个平民化的编程平台,而让广大的使用者开发出了相当多的实用小程序,甚至是仅仅用录制宏和稍稍的修改,就可以做成一段非常有用的小程序。就是因为这个吧,连WPS从2005版都不惜重写代码来支持VBA,背着模仿者的骂名。而VBA的强大,还不仅仅如此,Excelhome的VBA程序板块中的这句话,应该更能让你体会到其中的意义认识宏,学习从Excel VBA基础入门到设计制作模板、加载宏,交流各种VBA方法、VBA属性、VBA事件、窗体控件、Excel对象的使用技巧,以及借助API、ADO、SQL构建完整软件系统。把Excel当成是数据库软件是不正确的,也是不公平的。它有它

5、相对于数据库易上手,易处理,可视化,简单易用的优点,但也有数据库没有的对大量数据处理,与数据与数据间关系统和引用不便的缺点。虽然Excel2007版的单个工作表文件已缯加了行与列,但对于大量的数据处理,还是远远不如数据库的。因此,由于最近的工作需要,接触与了解了一点SQL与数据库方面的知识,所以就以Excel为程序的前台,用来录入与输出数据或报表,而利用ACCESS数据库来保存数据,最后用VBA+SQL与ADO来处理数据与联接Excel与数据库,解决了以前对大量数据,多人同时处理数据,数据间统计,对比,引用,关联等诸多以前没办法解决的难题。因此就把自己使用的心得与大家一起分享,一起学习进步。千

6、里之行,始于足下,接下来的时间,我用不是很正规,也不是很专业,也不是很严肃,更不是很深奥的语言,来试着带领大家进入这个看似与Excel无关的世界,而这第一步,我们要认识的,就是要认识SQL语言中各个SQL语法,SQL函数与SQL指令。而下一篇文章,我们要先介绍下,怎么用SQL接连数据库,而同样的方法也可以接连Excel文件。3SQL语句教程Workbooks对象的Open方法的帮助说明下面的这些内容,在Excel的VBA帮助中可以找到,写在这的目的,是为了在说明SQL连接Excel文件时,让来这的网友可以方便的找到,最近在Excel吧的VBA教程栏目里,可能会多了这些文章,目的就是让有一样相同

7、或类似的东西放在一起,让大家横向对比。Workbooks 对象的 Open 方法:作用是打开一个工作簿。其语法为:expression.Open(FileName,UpdateLinks,ReadOnly,Format,Password,WriteResPassword,IgnoreReadOnlyRecommended,Origin,Delimiter,Editable,Notify,Converter,AddToMru,Local,CorruptLoad)其中:expression必选。该表达式返回一个 Workbooks 对象。FileName String 类型,必需。要打开的工作簿的

8、文件名。UpdateLinks Variant 类型,可选。指定文件中链接的更新方式。如果省略本参数,则提示用户选择链接的更新方式。否则,该参数的取值应为下表中的某个值。值 含义0 不更新任何引用。1 更新外部引用,但不更新远程引用。2 更新远程引用,但不更新外部引用。3 同时更新远程引用和外部引用。ReadOnly Variant 类型,可选。如果该值为 True,则以只读模式打开工作簿。Format Variant 类型,可选。如果 Microsoft Excel 正在打开一个文本文件,则该参数用于指定分隔字符,如下表所示。如果省略本参数,则使用当前的分隔符。值 分隔符1 制表符2 逗号3

9、 空格4 分号5 没有分隔符6 自定义字符(请参阅 Delimiter 参数)Password Variant 类型,可选。该字符串指定打开一个受保护工作簿的密码。如果省略该参数并且指定工作簿已设置密码,则提示用户输入密码。WriteResPassword Variant 类型,可选。该字符串为一个写保护工作簿的写入权密码。如果省略该参数并且指定工作簿已设置密码,则提示用户输入密码。IgnoreReadOnlyRecommended Variant 类型,可选。如果该值为 True,则设置 Microsoft Excel 不显示建议只读消息(如果该工作簿以“建议只读”选项保存)。Origin

10、Variant 类型,可选。如果该文件为文本文件,则该参数用于指示该文件来源于何种操作系统(以便正确映射代码页和回车/换行(CR/LF))。可为以下 XlPlatform 常量之一:xlMacintosh、xlWindows 或 xlMSDOS。如果省略本参数,则使用当前操作系统。Delimiter Variant 类型,可选。如果该文件为文本文件并且 Format 参数为 6,则此参数用于指定用作分隔符的字符。例如,可使用 Chr(9)代表制表符,使用“,”代表逗号,使用“;”代表分号或者使用自定义字符。如果该参数为字符串,则只使用该字符串的第一个字符。Editable Variant 类型

11、,可选。如果该文件为 Microsoft Excel 4.0 加载宏,则该参数的值为 True 时可打开该加载宏以便在窗口中看到。如果该参数的值为 False 或者省略该参数,则该加载宏以隐藏方式打开,并且无法设为可见。本选项不能应用于由 Microsoft Excel 5.0 或更高版本的 Microsoft Excel 创建的加载宏。如果该文件是 Excel 模板,则参数的值为 True 时,会打开指定模板用于编辑。参数为 False 时,可4SQL语句教程根据指定模板打开新的工作簿。默认值为 False。Notify Variant 类型,可选。当该文件不能以可读写模式打开时,如果该参数

12、的值为 True,则可将该文件添加到文件通知列表。Microsoft Excel 将以只读模式打开该文件并轮询文件通知列表,当文件通知列表中的该文件可用时通知用户。如果该参数的值为 False 或省略该参数,则不请求任何通知,并且不能打开任何不可用的文件。Converter Variant 类型,可选。打开文件时试用的第一个文件转换器的索引号。首先使用的是指定的文件转换器:如果该转换器不能识别此文件,则试用所有的转换器。转换器索引号由 FileConverters 属性返回的转换器行号组成。AddToMru Variant 类型,可选。如果该值为 True,则将该工作簿添加到最近使用的文件列表

13、中。默认值为 False。Local Variant 类型,可选。如果该值为 True,则以 Microsoft Excel(包括控制面版设置)的语言保存文件。如果该值为 False(默认值),则以 Visual Basic for Applications(VBA)的语言保存文件,其中 Visual Basic for Applications(VBA)为典型安装的美国英语版本,除非 VBA 项目的 Workbooks.Open 来自旧的国际化的 XL5/95 VBA 项目。CorruptLoad Variant 类型,可选。可为以下常量之一:xlNormalLoad、xlRepairFil

14、e 和xlExtractData。如果未指定任何值,则默认值通常为普通状态,但如果 Excel 已尝试打开该文件,则可以是安全加载或数据恢复状态。首选值为普通状态。如果 Excel 在打开文件时停止操作,则为安全加载状态。如果 Excel 再次停止操作,则为数据恢复状态。示例本示例打开 Analysis.xls 工作簿,然后运行 Auto_Open 宏。Workbooks.Open ANALYSIS.XLS看起来Open方法的参数很多,其实经常用的不多,除了必须的FileName外,最常用的就是Password,用来打开包含有打开权限密码的Excel文件,下面的例子就是打开密码为“123”的A

15、NALYSIS.XLS文件:Workbooks.Open ANALYSIS.XLS,Password:=1235SQL语句教程Workbooks对象与Sheets和Worksheets对象的Add方法上个VBA教程中介绍了Workbooks对象的Open方法,目的是在介绍如果用SQL连接Excel带密码中时,需要用到这个方法,而今天也是因为下一篇SQL语言教程的文章需要而介绍Add方法,以便大家对比一下。下面的这些内容,同样也可以在Excel的VBA帮助中找到。一、Workbooks 对象的 Add 方法:新建工作簿,新建的工作簿将成为活动工作簿。语法是:expression.Add(Temp

16、late)expression:必需。该表达式返回一个 Workbooks 对象。Template:Variant 类型,可选。确定如何创建工作簿。1、如果本参数为指定一现有 Microsoft Excel 文件名的字符串,那么创建新工作簿将以该指定的文件作为模板。2、如果本参数为常量,新工作簿将包含指定类型的单张工作表。可为以下 XlWBATemplate 常量之一:xlWBATChart、xlWBATExcel4IntlMacroSheet、xlWBATExcel4MacroSheet 或xlWBATWorksheet。3、如果省略本参数,Microsoft Excel 将创建包含一定数目

17、的空白工作表的工作簿(该数目由SheetsInNewWorkbook 属性设置)。给出一个最常用也最常见的例子就是,本示例新建一个工作簿。Workbooks.Add二、Sheets 和 Worksheets 对象的 Add 方法:新建工作表、图表或宏表。新建的工作表将成为活动工作表。语法是:expression.Add(Before,After,Count,Type)expression:必需。该表达式返回上面的对象之一。Before:Variant 类型,可选。指定工作表对象,新建的工作表将置于此工作表之前。After:Variant 类型,可选。指定工作表对象,新建的工作表将置于此工作表之

18、后。Count :Variant 类型,可选。要新建的工作表的数目。默认值为 1。Type:Variant 类型,可选。指定工作表类型。1、Type 可为以下 XlSheetType 常量之一:xlWorksheet、xlChart、xlExcel4MacroSheet 或xlExcel4IntlMacroSheet。2、如果要基于现有模板插入工作表,则指定该模板的路径。3、默认值为 xlWorksheet。下面的示例是活动工作簿的最后一张工作表之前插入一个新的工作表。ActiveWorkbook.Sheets.Add Before:=Worksheets(Worksheets.Count)6

19、SQL语句教程Worksheet对象的Delete方法上篇上个VBA教程中介绍了Workbooks对象与Sheets和Worksheets对象的Add方法,这一篇就要来说说Delete,相对于Add方法,Delete方法是很简单了,也没有参数,其语法是:expression.Delete(Shift)expression:必需。该表达式返回一个 Worksheet 对象。唯一要说明的是,当要删除一个非空的工作簿或工作表时,此方法将显示提示用户确认删除的对话框。此对话框将按默认方式显示。当调用 Workbook 或 Worksheet 对象时,Delete 会返回一个 Boolean 值,如果用

20、户单击“取消”,则该值将返回“False”;如果用户单击“删除”,则该值将返回“True”。如果我们要让它不出现这个提示,可以把Application对象的DisplayAlerts属性,设定为False即可,下面这段代码,是删除当前工作表,且不出现提示!运行时请注意,当前工作表不要有需要的数据存在!Sub Excelba()Application.DisplayAlerts=FalseActiveSheet.DeleteApplication.DisplayAlerts=TrueEnd Sub关于Delete的说明就是这么简单,应该不会很难理解吧*_*7SQL语句教程利用ADO的Connec

21、tion对象来连接数据库在SQL语言教程-序中我们说到这一篇要介绍利用ADO的Connection对象来连接数据库,目地就是让大家了解后,就可以便于以后的其它SQL语言教程里的代码,大家可以动手运行一下,看一下效果,之后的大部份例子中,这篇文章介绍的都是要用到的,就像我们要使用Excel文件时,要先用Workbooks对象的Open方法打开Excel文件一样。下面进入正题。首先要说的是ADO是什么?ADO的全称是:Microsoft ActiveX Data Objects,它使您的客户端应用程序能够通过 OLE DB 提供者访问和操作数据库服务器中的数据。它的主要优点是易于使用、速度快、内存

22、支出低和占用磁盘空间少。ADO 支持用于建立客户端/服务器和基于 Web 的应用程序的主要功能。第二个问题是如何使用ADO?ADO有不少版本,不同的电脑里可能就有不同的版本,在VBA中使用ADO的方法是,在VBE编辑器中工具菜单的引用项里,引用Microsoft activex date objects x.x,其中x.x为版本号,可能会因为你安装的of?ce的版本不同而不同,我用的例子,大多引用了2.5版。认识了ADO,那开始说Connection 对象,Connection 对象表示数据源的唯一会话。ADO提供这个对象,来让我们连接数据库。而Connection 对象的Connection

23、String 属性,就是用来指示用于建立到数据源的连接的信息。ConnectionString 属性有五个参数:参数|说明Provider=:指定用于连接的提供者的名称。File Name=:指定提供者特有的文件(例如,持久保留的数据源对象)的名称,这些文件中包含预置的连接信息。Remote Provider=:指定当打开客户端连接时使用的提供者的名称。(仅限于远程数据服务。)Remote Server=:指定当打开客户端连接时使用的服务器的路径名称。(仅限于远程数据服务。)URL=:指定连接字符串为标识资源(如文件或目录)的绝对 URL。设置 ConnectionString 属性后,就可以

24、用 Connection 对象Open方法来接连数据库了。能看到这,可能你已有点晕了,不过不要紧,下面的几个例子,就能让你更好地理解上面这样比较无味的文字,首先是一段连接ACCESS数据库的程序。Sub 连接进销存表数据库()*作者:bengdeng功能:连接同一目录下的进销存表数据库文件注意:要在工具/引用中引用microsoft activex date objects x.x 其中x.x为版本号,可能会因为你安装的of?ce的版本不同而不同,本例引用了2.5版*Dim conn As ADODB.ConnectionDim WN As StringDim sSql As StringWN

25、=进销存表.mdbSet conn=New ADODB.Connectionconn.ConnectionString=Provider=Microsoft.Jet.Oledb.4.0;&_ Data Source=&ThisWorkbook.Path&WN _&;Jet OLEDB:Database Password=&123conn.OpenIf conn.State=adStateOpen Then MsgBox 连接成功!conn.CloseEnd IfSet conn=NothingEnd Sub上面程序的红色部分,是为了打开带密码的Access的数据库文件时,需要指定密码的代码,下

26、面再来一段程序,来连接一个Excel文件!8SQL语句教程Sub 连接进销存表()*作者:bengdeng功能:连接同一目录下的进销存表文件注意:要在工具/引用中引用microsoft activex date objects x.x 其中x.x为版本号,可能会因为你安装的of?ce的版本不同而不同,本例引用了2.5版*Dim conn As ADODB.ConnectionDim WN As StringDim sSql As StringWN=进销存表.xlsSet conn=New ADODB.Connectionconn.Open Provider=Microsoft.Jet.Oled

27、b.4.0;&_ Extended Properties=Excel 8.0;&_ Data Source=&ThisWorkbook.Path&WNIf conn.State=adStateOpen Then MsgBox 连接成功!conn.CloseEnd IfSet conn=NothingEnd Sub上面的与第一段程序对比,需要多设定一个参数“Extended Properties”,这是指定Excel文件的版本,现在已经有的版本为5.0、7.0、8.0等,分别对应的是95版,97版与20002003版的XLS文件格式,我用的是2003版,所以设定为=Excel 8.0。最后需要说

28、明的是,第二段程序是不能像第一段程序中,用Jet OLEDB:Database Password=密码来打开与连接带有密码的Excel文件的,如果需要处理这样的文件,就要用Workbooks对象的Open方法先打开这个Excel文件后再处理。下面的这个程序就是这样的例子:Sub 连接带密码进销存表()*作者:bengdeng功能:连接同一目录下的打开文件密码为“123”的进销存表文件注意:要在工具/引用中引用microsoft activex date objects x.x 其中x.x为版本号,可能会因为你安装的of?ce的版本不同而不同,本例引用了2.5版*Dim conn As ADOD

29、B.ConnectionDim WN As StringDim sSql As StringWN=进销存表.xlsWorkbooks.Open ThisWorkbook.Path&WN,Password:=123Set conn=New ADODB.Connectionconn.Open Provider=Microsoft.Jet.Oledb.4.0;&_Extended Properties=Excel 8.0;&_ Data Source=&WNIf conn.State=adStateOpen Then MsgBox 连接成功!conn.CloseEnd IfWorkbooks(WN)

30、.Close FalseSet conn=NothingEnd Sub这篇文章到这就完了,有点长,有三个程序,大家可以复制到VBA编辑器中,运行一下代码,好好的对比与理解一下,相信,很快你就会踏这第一步了,而后面的世界还很多精彩,看到这的你,应该可以看出一点点SQL与ADO与Excel的联系了,那就让我们一起继续向行吧!9SQL语句教程CREATE TABLE-创建数据表的语句数据表是数据库的基本架构,就像Excel文件中的工作表一样,在Excel中我们可以用ADD方法来创建新的工作表,而SQL语言里,CREATE TABLE语句就是用来创建数据表的。在说明CREATE TABLE语句的语法之

31、前,我们再来了解一些相关的知识。Excel工作表中对应有列与行,而在数据库中,对应称为Column与Row,对于这两个单词,应该用过VBA的人都不会陌生,这也是Excel中VBA里列与行的写法。不同的是下面,在数据库中多少列是在创建表时就有设定的,虽然以后还有可能增加,而且在设定时还要规定整列的数据类型,同时也意味者整列的数据类型都是一样的;这个在Excel中是没有这样的规则,而且Excel的最大行与列是由Excel本身决定的,这也是数据库与电子表格对数据约束最大的不同。而数据库具体有哪些数据类型呢?以ACCESS为例,有存贮日期类型的DATETIME;有存贮数值类型的FLOAT,SMALLI

32、NT,INTEGER等,有字符串型的CHAR等等。不同的数据库可能支持不同的数据类型,因此在使用时应该参考一下数据库在这方面的说明。了解了上面的信息,下面开始说下CREATE TABLE语句的语法:CREATE TABLE 表格名(列名1 列名1的数据类型,列名2 列名2的数据类型,.)注意在列名与数据类型中间有一个空格,在VBA中,我们可以利用ADO的Execute方法,来运行SQL语句,下面我们就用CREATE TABLE 来创建一个进销存表数据库的三个数据表 明细表,进仓表与出仓表;其中明细表有5列,分别为物品名称(字符串型),结余日期(日期型),结余数量(双精度型),进仓数量(双精度型

33、),出仓数量(双精度型);进仓表有3列,分别为进仓日期(日期型),物品名称(字符串型),进仓数量(双精度型);出仓表有3列,分别为出仓日期(日期型),物品名称(字符串型),出仓数量(双精度型)。代码如下:Sub 创建进销存表数据库()*作者:bengdeng功能:在程序文件同一目录创建进销表一个进销存表数据库注意:要在工具/引用中引用microsoft activex date objects x.x 其中x.x为版本号,可能会因为你安装的of?ce的版本不同而不同,本例引用了2.5版 由于要创建一个新的数据库,还要引用microsoft ado ext.2.x for ddl and sec

34、urity 利用ADOX的Create方法来创建,其中2.X为版本号,本例引用了2.8版*Dim MyCat As ADOX.CatalogDim conn As ADODB.ConnectionDim WN As StringDim sSql As StringWN=进销存表.mdbSet MyCat=New ADOX.CatalogMyCat.Create Provider=Microsoft.Jet.Oledb.4.0;_Data Source=&ThisWorkbook.Path&WNSet conn=New ADODB.Connectionconn.ConnectionString=

35、MyCat.ActiveConnectionconn.OpenIf conn.State=adStateOpen Then sSql=CREATE TABLE 明细表(物品名称 Char(255),&_ 结余日期 Date,结余数量 Float,&进仓数量 Float,出仓数量 Float)conn.Execute sSql sSql=CREATE TABLE 进仓表(进仓日期 Date,物品名称 Char(255),进仓数量 Float)conn.Execute sSql sSql=CREATE TABLE 出仓表(出仓日期 Date,物品名称 Char(255),出仓数量 Float)co

36、nn.Execute sSql MsgBox 创建数据库成功!&vbCrLf&数据库文件名为:&WN&vbCrLf&_ 保存位置:&ThisWorkbook.Path conn.CloseEnd IfSet conn=NothingEnd Sub10SQL语句教程因为要创表一个新的数据库,所以使用ADOX的Create 方法创建一个新的数据库。下面再给出一段创建类似于上面内容的Excel文件。Sub 创建进销存表文件()*作者:bengdeng功能:在程序文件同一目录创建进销表一个进销存表文件注意:要在工具/引用中引用microsoft activex date objects x.x 其中x

37、.x为版本号,可能会因为你安装的of?ce的版本不同而不同,本例引用了2.5版*Dim conn As ADODB.ConnectionDim WN As StringDim sSql As StringWN=进销存表.xlsSet conn=New ADODB.Connectionconn.Open Provider=Microsoft.Jet.Oledb.4.0;&_ Extended Properties=Excel 8.0;&_ Data Source=&ThisWorkbook.Path&WNIf conn.State=adStateOpen Then sSql=CREATE TAB

38、LE 明细表(物品名称 Char(255),&_ 结余日期 Date,结余数量 Float,&_ 进仓数量 Float,出仓数量 Float)conn.Execute sSql sSql=CREATE TABLE 进仓表(进仓日期 Date,物品名称 Char(255),进仓数量 Float)conn.Execute sSql sSql=CREATE TABLE 出仓表(出仓日期 Date,物品名称 Char(255),出仓数量 Float)conn.Execute sSql MsgBox 创建文件成功!&vbCrLf&数据库文件名为:&WN&vbCrLf&_ 保存位置:&ThisWorkbo

39、ok.Path conn.CloseEnd IfSet conn=NothingEnd Sub有意思的是,创建Excel文件,不需要理会这个文件是否存在,如果存在就会在旧的文件中增加工作表,而不存在则会自动创建,不需要像ACCESS还用利用Create 方法。CREATE TABLE 就介绍说明到这,现在大家动手复制一下上面的两段代码,运行一下,再对比一下,最后再理解一下,相信很快就会明白的哦*_*。11SQL语句教程DROP TABLE-删除数据表的语句上一篇SQL语言教程是说创建数据表的语句CREATE TABLE,而这篇,是要介绍删除数据表的语言DROP TABLE。在Excel中,我们

40、删除工作表的方法是Delete,而DROP TABLE的语法,也比CREATE TABLE 的语法简单多了:DROP TABLE 表格名简单得不需要再说明的吧*_*,下面我们就举个删除由上篇文章生成的进销存表中的出仓表,感受一下DROP TABLE的使用方法:Sub 删除数据库中的出仓表()*作者:bengdeng功能:在程序文件同一目录下进销存表数据库里的出仓表注意:要在工具/引用中引用microsoft activex date objects x.x 其中x.x为版本号,可能会因为你安装的of?ce的版本不同而不同,本例引用了2.5版*Dim conn As ADODB.Connecti

41、onDim WN As StringDim TableName As StringDim sSql As StringWN=进销存表.mdbTableName=出仓表Set conn=New ADODB.Connectionconn.ConnectionString=Provider=Microsoft.Jet.Oledb.4.0;&_ Data Source=&ThisWorkbook.Path&WNconn.OpenIf conn.State=adStateOpen Then sSql=DROP TABLE&TableName conn.Execute sSql MsgBox 成功删除了&

42、WN&中的&TableName conn.CloseEnd IfSet conn=NothingEnd Sub同样,再给出一段删除上篇文章中生成的进销存表的Excel文件中的出仓工作表的代码:Sub 删除出仓表()*作者:bengdeng功能:在程序文件同一目录下进销存表文件里的出仓表注意:要在工具/引用中引用microsoft activex date objects x.x 其中x.x为版本号,可能会因为你安装的of?ce的版本不同而不同,本例引用了2.5版*Dim conn As ADODB.ConnectionDim WN As StringDim TableName As Strin

43、gDim sSql As StringWN=进销存表.xlsTableName=出仓表Set conn=New ADODB.Connectionconn.ConnectionString=Provider=Microsoft.Jet.Oledb.4.0;&_ Extended Properties=Excel 8.0;&_ Data Source=&ThisWorkbook.Path&WNconn.OpenIf conn.State=adStateOpen Then sSql=DROP TABLE&TableName12SQL语句教程 conn.Execute sSql MsgBox 成功删除

44、了&WN&中的&TableName conn.CloseEnd IfSet conn=NothingEnd Sub对于第二段代码,运行后的结果与第一段代码不太一样,我们用Excel打开文件后,会发现出仓表还是存在的,不过里面的数据已被删除,这时,如果再运行第二段代码的话,会发现有表出仓表不存在的提示!看来SQL处理Excel文件时,把没有任何数据的空表会认为是不存在的。最后,动一下手,运行一下这两段代码吧。13SQL语句教程Alter Table-修改数据表的语句通过这几天在SQL语言教程 中介绍SQL的文章,相信对SQL感兴趣的朋友也就会慢慢增加,这两天一直困惑在上篇文章介绍的DROP TA

45、BLE 应用中,为什么不能删除Excel工作表,终于在网上的一些内容中看出一些头绪。DROP 命令并不是物理上把字段删除,而只是简单地把它标记为 SQL 操作中不可见的。随后对该表的插入和更新将在该字段存储一个 NULL。因此,删除一个字段是很快的,但是它不会立即缩减你的表在磁盘上的大小,因为被删除了的字段占据的空间还没有回收。这些空间将随着现有的行的更新而得到回收。看来关于DROP相关的命令还有待继续学习,而今天的Alter Table中也包含DROP,在Excel中也存在与上面类似的现象。Alter Table语言,是用来修改已创建数据表中表格的结构,包括增加列,修改已有列的数据类型和删除

46、已有的列,其语法是:增加列:Alter Table 表格名 Add Column 列名 列名的数据类型修改数据类型:Alter Table 表格名 Alter Column 列名 列名的数据类型删除列:Alter Table 表格名 Drop Column 列名SQL没有直接修改列名的SQL语言,可以用建立新列,再把数据复制到新列中,然后删除旧列的方法来完成列名的更改,还可以利用ADO的Field对象的Name属性来修改,具体大家可以参考一下ADO的帮助,这就不详细介绍了。下面还是给出一段程序来让我们更了解上面说的内容:Sub 修改进销存表数据库中明细表的结构()*作者:bengdeng功能:

47、在程序文件同一目录下进销存表数据库中修改明细表的结构注意:要在工具/引用中引用microsoft activex date objects x.x 其中x.x为版本号,可能会因为你安装的of?ce的版本不同而不同,本例引用了2.5版*Dim conn As ADODB.ConnectionDim WN As StringDim TableName As StringDim ColumnName As StringDim sSql As StringWN=进销存表.mdbTableName=明细表ColumnName=示例栏Set conn=New ADODB.Connectionconn.Co

48、nnectionString=Provider=Microsoft.Jet.Oledb.4.0;&_ Data Source=&ThisWorkbook.Path&WNconn.OpenIf conn.State=adStateOpen Then MsgBox 首先在“&TableName&”中增加一列“文本类型”的“&ColumnName&”sSql=Alter Table&TableName&Add Column&ColumnName&Char(50)conn.Execute sSql MsgBox 成功在“&TableName&”中增加一列“文本类型”的“&ColumnName&_ ”&

49、vbCrLf&您可以打开数据库示例文件查看一下效果&vbCrLf&_ 查看完毕后关闭数据库并按确认继续程序!MsgBox 接着把刚才“&TableName&”中增加的“&ColumnName&_ ”更改为日期类型!sSql=Alter Table&TableName&Alter Column&ColumnName&Date conn.Execute sSql MsgBox 成功把刚才“&TableName&”中增加的“&ColumnName&_14SQL语句教程 ”更改为日期类型!&vbCrLf&_ 您可以打开数据库示例文件查看一下效果&vbCrLf&_ 查看完毕后关闭数据库并按确认继续程序!

50、MsgBox 最后把刚才“&TableName&”中增加的“&ColumnName&”删除!sSql=Alter Table&TableName&Drop Column&ColumnName conn.Execute sSql MsgBox 成功把刚才“&TableName&”中增加的“&ColumnName&_ ”删除!&vbCrLf&_ 您可以打开数据库示例文件查看一下效果 conn.CloseEnd IfSet conn=NothingEnd Sub同样,我们也给出一段操作Excel的代码,不同的是因为Excel本身没有列的数据类型的限制,所以修改数据类型的代码不能正确运行,因此就删除,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 实施方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com