您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > VBA环境下ACCESS、EXCEL、SQL-SERVER互相访问
实例7-1判断SQLServer数据库是否存在(ADO)引用:microsoftactivexdataobjects2.xlibraryPublicSub7_1()DimcnnAsADODB.ConnectionDimcnnStrAsStringDimmydataAsStringmydata=商品信息‘创建与SQLServer数据库服务器连接的Connection对象Setcnn=NewADODB.Connection‘设置建立与SQLServer数据库服务器中指定数据库连接的字符串cnnStr=Provider=SQLOLEDB.1;_&UserID=sa;_&DataSource=THTFCOMPUTER;_&InitialCatalog=&mydatacnn.ConnectionString=cnnStr‘试图打开指定的数据库OnErrorResumeNextcnn.OpenOnErrorGoTo0‘判断数据库是否存在Ifcnn.State=adStateOpenThenMsgBox数据库&mydata&存在cnn.CloseSetcnn=NothingElseMsgBox数据库&mydata&不存在EndIfEndSub·分析:判断在SQLServer数据库服务器上是否存在指定的某个数据库,方法就是度图去打开SQLServer数据库服务器的某个数据库,如能打开则表明该数据库存在,否则就不存在。利用ADODB.Connection对象的State属性即可实现。State属性用于检查Connection对象是打开还是关闭,或处于连接状态。如返回值为adstateopen,则表明已打开,如返回adstateclosed,则表明关闭,如返回adstateconnecting,表明是在连接。例:cnnStr=Provider=SQLOLEDB.1;_‘SQLOLEDB.1表示数据库类型为SQLServer&”Password=12345;”_‘指定打开数据库的密码,可省略&UserID=sa;_‘指定访问为数据库的用户名&DataSource=THTFCOMPUTER;_‘指定数据库服务器名称或IP地址&InitialCatalog=&mydata‘指定要访问的数据库名·实例7-2检查数据表是否存在(ADOX)引用:microsoftadoext.2.xforddlandsecurityPublicSub7_2()DimmyCatAsADOX.CatalogDimmtbAsADOX.TableDimcnnStrAsStringDimmydataAsString,myTableAsStringmydata=商品信息myTable=商品名录‘建立与SQLServer数据库服务器指定数据库的连接cnnStr=Provider=SQLOLEDB.1;_&UserID=sa;_&DataSource=THTFCOMPUTER;_&InitialCatalog=&mydataSetmyCat=NewADOX.CatalogmyCat.ActiveConnection=cnnStr‘判断数据表是否存在ForEachmtbInmyCat.TablesIfLCase(mtb.Name)=LCase(myTable)ThenMsgBox数据表&myTable&存在!GoTohhhEndIfNextMsgBox数据表&myTable&不存在!hhh:Setmtb=NothingSetmyCat=NothingEndSub·实例7-3创建新的SQLServer数据库和数据表(ADO)PublicSub7_3()DimcnnAsADODB.ConnectionDimcnnStrAsString,SQLAsStringDimmydataAsString,myTableAsStringmydata=商品信息myTable=商品名录‘创建与SQLServer数据库服务器中指定数据库连接的connection对象Setcnn=NewADODB.ConnectioncnnStr=Provider=SQLOLEDB.1;_&UserID=sa;_&DataSource=THTFCOMPUTER;_&InitialCatalog=&mydatacnn.ConnectionString=cnnStrOnErrorResumeNextcnn.OpenOnErrorGoTo0‘判断数据库是否存在Ifcnn.State=adStateOpenThenMsgBox数据库已经存在,请重新命名数据库名!,vbCriticalcnn.CloseSetcnn=NothingExitSubEndIf‘建立与SQLServer数据库服务器的连接cnnStr=Provider=SQLOLEDB.1;_&UserID=sa;_&DataSource=THTFCOMPUTERcnn.ConnectionString=cnnStrcnn.Open‘执行SQL语句创建数据库SQL=createdatabase&mydatacnn.ExecuteSQLMsgBox数据库创建成功!,vbInformation,创建数据库‘关闭与SQLServer数据库服务器的连接cnn.Close‘重新建立与SQLServer数据库服务器的连接cnnStr=Provider=SQLOLEDB.1;_&UserID=sa;_&DataSource=THTFCOMPUTER;_&InitialCatalog=&mydatacnn.ConnectionString=cnnStrcnn.Open‘执行SQL语句创建数据表SQL=createtable&myTable_&(商品编号varchar(10)notnullprimarykey,_&商品名称varchar(20)notnull)cnn.ExecuteSQLMsgBox数据表创建成功!,vbInformation,创建数据表cnn.CloseSetcnn=NothingEndSub·分析:SQL=”createtable表名(字段字段类型[(字段长度)][是否允许空值][是否为主键]”‘创建数据表·实例7-4在已有的SQLServre数据库中创建数据表(ADO)引用:microsoftactivedataobjects2.xlibrary和microsoftadoext.2.xforddlandsecurityPublicSub实例7_4()DimcnnAsADODB.ConnectionDimmyCatAsADOX.CatalogDimmtbAsADOX.TableDimcnnStrAsString,SQLAsStringDimmydataAsString,myTableAsStringmydata=商品信息myTable=商品价格信息‘建立与SQLServer数据库服务器中指定数据库的连接Setcnn=NewADODB.ConnectionWithcnn.ConnectionString=Provider=SQLOLEDB.1;_&UserID=sa;_&DataSource=THTFCOMPUTER;_&InitialCatalog=&mydata.OpenEndWith‘判断在数据库中是否有同名的数据表SetmyCat=NewADOX.CatalogSetmyCat.ActiveConnection=cnnForEachmtbInmyCat.TablesIfLCase(mtb.Name)=LCase(myTable)ThenMsgBox数据表&myTable&已经存在!请重新命名数据表!,vbCriticalGoTohhhEndIfNext‘执行SQL语句创建数据表SQL=createtable&myTable_&(商品编号varchar(10)notnullprimarykey,_&商品单价decimalnotnull)cnn.ExecuteSQLMsgBox数据表创建成功!,vbInformation,创建数据表hhh:cnn.CloseSetmyCat=NothingSetcnn=NothingEndSub·实例7-5从SQLServer数据库服务器中删除数据库(ADO)引用:microsoftactivexdataobjects2.xlibraryPublicSub7_5()OnErrorGoTohhhDimcnnAsADODB.ConnectionDimcnnStrAsString,SQLAsStringDimmydataAsString,myTableAsString‘指定要删除的数据库名称mydata=商品信息‘建立与SQLServer数据库服务器的连接Setcnn=NewADODB.ConnectionWithcnn.ConnectionString=Provider=SQLOLEDB.1;_&UserID=sa;_&DataSource=THTFCOMPUTER.OpenEndWith‘执行SQL语句删除指定的数据库SQL=dropdatabase&mydatacnn.ExecuteSQLMsgBox数据库删除成功!,vbInformation,删除数据库GoToxxxhhh:MsgBoxErr.Description,vbCriticalxxx:cnn.CloseSetcnn=NothingEndSub·分析:SQL=”dropdatabase数据库名1,数据库名2,……”‘删除指定的数据库·实例7-6从SQLServer数据库中删除数据表(ADO)引用:microsoftactivexdataobjects2.xlibraryPublicSub7_6()OnErrorGoTohhhDimcnnAsADODB.ConnectionDimcnnStrAsString,SQLAsStringDimmydataAsString,myTableAsStringmydata=商品信息myTable=商品名录,商品价格信息‘建立与SQLServer数据库的连接Setcnn=NewADODB.ConnectionWithcnn.ConnectionString=Provider=SQLOLEDB.1;_&UserID=sa;_&DataSource=THTFCOMPUTER;_&InitialCatalog=&mydata.OpenEndWith‘执行SQL语句删除指定的数据表SQL=droptable&myTablecnn.ExecuteSQLMsgBox数据表删除成功!,vbInformation,删除数据表GoToxxxhhh:MsgBoxErr.Description,vbCriticalxxx:cnn.CloseSetcnn=NothingEndSub·实例7-7将SQLServer数据库中的数据导入到Excel工作表(ADO)引用:microsoftactivexdataobjects2.xlibraryPublicSub7_7()DimcnnAsADODB.ConnectionDimrsAsADODB.RecordsetDimiAsLongDimmydataAsString,myTableAsStringmydata=工资管理myTable=基本信息‘建立与SQLServer数据库的连接Setcnn=NewADODB.ConnectionWithcnn.ConnectionString=Provider=SQLOLEDB.1;_&UserID=sa;_&DataSource=THTFCOMPUTER;_&InitialCatalog=&mydata.OpenEndWith‘打开查询数据集Setrs=NewADODB.Recordsetrs.OpenmyTable,cnn,adOpenKeyset,adLockOptimistic‘清除工作表数据Cells.Clear‘准备复制数据Withrs‘复制字段名Fori
本文标题:VBA环境下ACCESS、EXCEL、SQL-SERVER互相访问
链接地址:https://www.777doc.com/doc-4479478 .html