Excel VBA 连接SQL数据库后的操作。

2024-11-21 16:44:40
推荐回答(4个)
回答1:

呵呵,以前就帮人家解决过这个,请看下面的代码,有注释的!
Private Sub CommandButton5_Click()
Dim Conn As New ADODB.Connection '定义ADODB连接对象
Dim ConnStr As String '定义连接字符串
Dim xiao As String

xiao = ComData.Text

'对于SQL 2008,如果以IP方式访问服务器,必须要启动SQL Server Browser服务,如果是Express版本,要以“IP(计算机名)\实例名”方式访问
ConnStr = txtData.Text

Dim Records As New ADODB.Recordset '定义ADODB对象的记录集
Dim Sheet As Worksheet '定义工作表

Set Sheet = ThisWorkbook.Worksheets("Sheet2") '给变量Sheet赋值,注意:是工作簿中索引为1的那个表(通常一个新的工作簿Sheet1的索引为1)
'Sheet.Name = "Data" '把Sheet名称改为Data
Sheet.Cells.Clear '清空表中原有的数据

'连接状态是打开就不在进行Open操作

Conn.Open ConnStr
Dim SQLStr As String '要执行的SQL语句
SQLStr = "select * from Shift_Code where Club='" + xiao + "'" '可以执行更复杂的SQL语句

Records.Open SQLStr, Conn, adOpenStatic, adLockBatchOptimistic '读取SQL查询结果到Records记录集
'Records.Open
Dim i, j, TotalRows, TotalColumns As Integer
j = 0
TotalRows = Records.RecordCount
TotalColumns = Records.Fields.Count

'下面的循环把表头(即列名)写到Excel表的第一行
For i = 0 To TotalColumns - 1
Sheet2.Cells(1, i + 1) = Records.Fields(i).Name
Next

'下面的循环把查询结果写到Excel表中
Do While Not Records.EOF

For i = 0 To TotalColumns - 1
Sheet2.Cells(j + 2, i + 1) = Records.Fields(i).Value
Next

Records.MoveNext
j = j + 1

Loop
Records.Close '关闭记录集
Conn.Close '关闭连接

Set Records = Nothing '清空对象
Set Conn = Nothing '清空对象

End Sub

有什么不懂的话Hi我!

回答2:

select * from sys.objects where type='u'
查了查资料,说是这个可以查表名.这个我不知道你有没有弄过,对Sql我也在摸索阶段.
没有编写过这样的程序.呵呵
如果表名中含工资字段,查含工资的所有表名语句为:
select * from sys.objects where type='u' and name like N'%工资%'
至于你的第二个问题.
[a4].CopyFromRecordset Cnn.Execute(Sql)
不知道这句话对你有启示没有.请留个信箱.我有一份这方面的资料传给你.
看对你有没有启发.

回答3:

我以前写的一段代码里的一句,可以连接到数据库的表名,只是我是用VB连接到ACCESS的,SQL的没连过
Set db2re = db2.OpenSchema(adSchemaTables)
db2re.MoveNext
If db2re!table_name = "db04" Then
声明:
Dim db2 As New Connection
Dim db2re As New Recordset
连接:
db2.CursorLocation = adUseClient
db2.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\数据库文件;Persist Security Info=False;Jet OLEDB:Database Password=" + dbmm

希望能对你有点帮助

回答4:

http://zhidao.baidu.com/q?ct=24&cm=16&tn=ucframework#task-2