Jas*_*asu 0 sql sql-server excel vba
我是 VBA 的新手,我试图将数据从 SQL 服务器数据库上的特定表中提取到 Excel 上的特定单元格。我有以下表单类型:
应根据用户键入的 ID(在单元格 B2 中)提取数据。例如,我使用以下 VBA 代码从数据库表中获取用户名:
Sub Get_Data()
Set objMyconn = New ADODB.Connection
Set objMyCmd = New ADODB.Command
Set objMyRecordset = New ADODB.Recordset
Dim rc As Long
objMyconn.ConnectionString = "Provider=SQLOLEDB;Data Source=IP_ADDRESS;Initial Catalog=My_Database; Integrated Security=SSPI;"
objMyconn.Open
Set objMyCmd.ActiveConnection = objMyconn
objMyCmd.CommandText = "select User_Name from My_Database WHERE User_ID = '" & Range("B2").Value & "'"""
objMyCmd.CommandType = adCmdText
objMyCmd.Execute
Set objMyRecordset.ActiveConnection = objMyconn
objMyRecordset.Open objMyCmd
ActiveSheet.Range("B3").CopyFromRecordset (objMyRecordset)
End Sub
Run Code Online (Sandbox Code Playgroud)
运行代码时出现此错误:
另外,关于如何在各个单元格中提取会话信息的数据数组的任何想法(再次使用基于用户 ID 的 Select 查询)?例如小区B8、C8、D8、B9、C9、D9等。一个用户可能有多个会话。
在这一行:最后objMyCmd.CommandText = "select User_Name from My_Database WHERE User_ID = '" & Range("B2").Value & "'"""有一个双引号。去掉它。
objMyCmd.CommandText = "select User_Name from My_Database WHERE User_ID = '" & Range("B2").Value & "'"
在第二部分,我采用的方法是检索所有必要的数据项以将字段填充到记录集中。然后,我将遍历记录集,直到到达末尾并将记录集![Field] 值填充到适当的位置(我还没有测试过这段代码,但你应该能够跟随:)
objMyCmd.CommandText ="SELECT User_Name, Session_ID, Sesssion_Date, Session_Date " & _
"FROM [My_Database] Where User_ID = '" & range("b2").value & "';"
objMyRecordset.Open objMyCmd
'objMyRecordset.MoveLast
'objMyRecordset.MoveFirst
Dim Offset as Integer
Offset = 0
While Not objMyRecordset.EOF
ActiveSheet.Cells(8, 2+Offset).Value = objMyRecordset.Fields("Session_ID").Value
ActiveSheet.Cells(9, 2+Offset).Value = objMyRecordset.Fields("Sesssion_Date").Value
ActiveSheet.Cells(10, 2+Offset).Value = objMyRecordset.Fields("Session_Date").Value
Offset = Offset + 1
objMyRecordset.MoveNext
Wend
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1504 次 |
| 最近记录: |