VBA连接SQLSERVER数据库实例
VBA 连接 SQL SERVER 数据连连例
VBA中用ADO连连SQL SERVER数数据连,据连连
连了更好的解连~特提供连例,使用据连象两个数ADO连连SQL数从数并将据连~而连行据连连~连连的
数据返回到EXCEL中~由于此程序需用到SQL数参运据连~所以只供大家考~不便行~但大
家可以看出其精连,
====================================================连例1,
====================================================
Private Sub CommandButton1_Click()
Dim cn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim R, C, F, I As Integer
Dim Sql_text, day1, linenumber, box As String
Const cnnstr = "Provider = SQLOLEDB;" & _
"Data Source = apsgszml04;" & _
"Initial Catalog = bhl2ken;User ID =sa;Password =;"
'连接据连数
' 默连SQL Server服连器,LOCAL
'用连,sa
'密连,空
'数据连,Northwind
'表源,Customers
day1 = UserForm1.TextBox1.Text
linenumber = UserForm1.ComboBox1.Text
box = UserForm1.ComboBox2.Text
cn.Open cnnstr
Sql_text = Sql_text & "SELECT CONVERT(Char,dbo.TRY123.[day],101) as date1,"
Sql_text = Sql_text & "
dbo.TRY123.linenumber,dbo.TRY123.box_no,dbo.TRY123.serialnumber,dbo.TRY123.lotnum
ber"
Sql_text = Sql_text & " FROM dbo.TRY123"
Sql_text = Sql_text & " WHERE (CONVERT(Char,dbo.TRY123.[day],101)= '" & day1 & "'
and dbo.TRY123.linenumber= '" & linenumber & "' and dbo.TRY123.box_no= '" & box & "')"
Sql_text = Sql_text & " ORDER BY dbo.TRY123.serialnumber "‘使用SQL数据连连连连言连连
'SELECT CONVERT(Char,dbo.TRY123.[day],101) as date1,dbo.TRY123.linenumber,dbo.TRY123.box_no,dbo.TRY123.serialnumber,dbo.TRY123.l
otnumber
'vba数据库编程
'FROM dbo.TRY123
'WHERE (CONVERT(Char,dbo.TRY123.[day],101)= " & day1 & " and dbo.TRY123.linenumber= " & linenumber & " and dbo.TRY123.box_no= '" & box & "'
'ORDER BY dbo.TRY123.serialnumber
rst.Open Sql_text, cn, adOpenStatic, adLockBatchOptimistic '用adOpenStatic +
adLockBatchOptimistic打连连快~且占用连源小
R = 5 'Excel表的行序号
C = 3 'Excel表的列序号
I = 0 'SQL表的字段序号
F = rst.Fields.Count - 1
Worksheets("sheet1").Unprotect
Worksheets("sheet1").Cells.ClearContents
While Not rst.EOF
For I = 0 To F
Sheet1.Cells(R, I + 3).Rows.Value = rst.Fields(I).Value
Next I
R = R + 1
rst.MoveNext ’将数数据连的据返回到EXCEL表中
Wend
Worksheets("sheet1").Protect
UserForm1.Hide
'MsgBox ("连取完连")
rst.Close '完成后要连连
cn.Close '完成后要连连
'注意,以上连直接连接SQL Server 的方法~不用建ODBC数据源
Worksheets("sheet1").Activate
End Sub
====================================================
连例2,
====================================================
sub test() '定连连程名称
Dim i As Integer, j As Integer, sht As Worksheet 'i,j连整连量~数sht 连excel工作表连象连量~指向某一工作表
Dim cn As New ADODB.Connection '定连据连接连象 ~保存连接据连信息~连先添加数数ADO引用Dim rs As New ADODB.Recordset '定连连连集连象~保存据表数
Dim strCn As String ,strSQL as String '字符串连量
strCn = "Provider=sqloledb;Server=服连器名或称IP地址;Database=数称据连名;Uid=用连登连名;Pwd=密连;" '定连据连连接字符串数
'下面的连句连取据表据~保存到将数数并将它excel工作表中,连表想像一下~工作表连一连画两两
连表~连连集也是一连连表两
strSQL = "select 字段1,字段2 from 表名称" '定连SQL连连命令字符串
cn.Open strCn '与数据连建立连接~如果成功~返回连接连象cn
rs.Open strSQL, cn '连行strSQL所含的SQL命令~连果保存在rs连连集连象中i = 1
Set sht = ThisWorkbook.Worksheets("sheet1") '把sht指向前工作簿的当sheet1工作表Do While Not rs.EOF '当数据指连未移到连连集末尾连~循连下列操作
sht.Cells(i, 1) = rs("字段1") '把前连连的字段当1的连保存到sheet1工作表的第i行第1列
sht.Cells(i, 2) = rs("字段2") '把前字段当2的连保存到sheet1工作表的第i行第2列
rs.MoveNext '把指连移向下一连连条
i = i + 1 'i加1~准连把下一连连相连字段的连保存到工作表的下一行Loop '循连
rs.Close '连连连连集~至此~程序把某据表的字段将数1和字段2保存在excel工作表sheet1的第1、2列~行等于据表的连连数数数
'下面的连句连取将excel工作表据~之连连连算后存入据连~连里使用上面程序中的一些连量数并将数
'假连分连连取工作表sheet1第5行至第500行的第8列和第9列已存在的据~然后连相乘~数将它并将数个连存入据连的某表
strSQL="" '清空上面定连的连量
for i=5 to 500 '循连连始~i从5到500s

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。