资源描述:
《VBA连接 SQL SERVER 数据库 实例.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、VBA中用ADO访问SQLSERVER数据库:数据查询为了更好的解释,特提供两个实例:使用数据对象ADO访问SQL数据库,从而进行数据查询,并将查询的数据返回到EXCEL中,由于此程序需用到SQL数据库,所以只供大家参考,不便运行,但大家可以看出其精华!====================================================实例1:==================================================== PrivateSubComm
2、andButton1_Click() DimcnAsNewADODB.ConnectionDimrstAsNewADODB.RecordsetDimR,C,F,IAsIntegerDimSql_text,day1,linenumber,boxAsStringConstcnnstr="Provider=SQLOLEDB;"&_ "DataSource=apsgszml04;"&_ "Initi
3、alCatalog=bhl2ken;UserID=sa;Password=;"'连接数据库'默认SQLServer服务器:LOCAL'用户:sa'密码:空'数据库:Northwind'表源:Customersday1=UserForm1.TextBox1.Textlinenumber=UserForm1.ComboBox1.Textbox=UserForm1.ComboBox2.Textcn.OpencnnstrSql_text=Sql_text&"SELECTCONVERT(Char,dbo.TR
4、Y123.[day],101)asdate1," Sql_text=Sql_text&"dbo.TRY123.linenumber,dbo.TRY123.box_no,dbo.TRY123.serialnumber,dbo.TRY123.lotnumber" Sql_text=Sql_text&"FROMdbo.TRY123" Sql_text=Sql_text&"WHERE(CONVERT(Char,dbo.TRY123.[day],101)='"&day1&"'anddbo.TRY1
5、23.linenumber='"&linenumber&"'anddbo.TRY123.box_no='"&box&"')" Sql_text=Sql_text&"ORDERBYdbo.TRY123.serialnumber"‘使用SQL数据库查询语言查询 'SELECT CONVERT(Char,dbo.TRY123.[day],101)asdate1,dbo.TRY123.linenumber,dbo.TRY123.box_no,d
6、bo.TRY123.serialnumber,dbo.TRY123.lotnumber''FROM dbo.TRY123'WHERE (CONVERT(Char,dbo.TRY123.[day],101)="&day1&"anddbo.TRY123.linenumber="&linenumber&"anddbo.TRY123.box_no='"&box&"''ORDERBY dbo.TRY123.serialnumberrst.OpenSql_text,cn,adOpenSta
7、tic,adLockBatchOptimistic'用adOpenStatic+adLockBatchOptimistic打开较快,且占用资源小R=5 'Excel表的行序号C=3 'Excel表的列序号I=0 'SQL表的字段序号F=rst.Fields.Count-1Worksheets("sheet1").UnprotectWorksheets("sheet1").Cells.ClearContentsWhileNotrst.EOF ForI=0ToF Sheet1.Ce
8、lls(R,I+3).Rows.Value=rst.Fields(I).Value NextI R=R+1 rst.MoveNext ’将数据库的数据返回到EXCEL表中WendWorksheets("sheet1").ProtectUserForm1.Hide'MsgBox("读取完毕")rst.Close '完成后要关闭cn.Close '完成后要关闭'注意:以上为直接连接SQLServer的方法,不用建ODBC数据源Workshee