我今天編寫了一些代碼用於工作,並且遇到了一個問題,我通過VBA提供SQL服務器的命令沒有請求相同數量的信息,就像我要執行相同的確切命令在服務器上。如果我在VBA中執行下面的代碼,我會得到大約25行的68列。如果我在服務器本身上執行相同的命令,我會得到超過1500行的68列。我正在做的是在表單中選擇一個訂單號或日期,並將數據的高峯剝離到我的客戶希望找到的地方。我確定這不是通過電子表格分發數據的最佳方式。我正在尋找建議和錯誤更正!分發單元格數據
由於提前,
亞當
Set conn = New ADODB.Connection
Set cmd = New ADODB.Command
constr = "Provider=REMOVEDFORPRIVACY"
If (ComboBox1.Value <> "" And ComboBox2.Value <> "") Or (ComboBox1.Value = "" And ComboBox2.Value = "") Then
MsgBox "Please select one search method.", vbOKOnly
ComboBox2.Value = ""
ComboBox1.Value = ""
ElseIf (ComboBox1.Value <> "" And ComboBox2.Value = "") Then
cmd.CommandText = "SELECT * FROM [Run_Data].[dbo].[RunLog_Data] WHERE SnapShot_Date = '" & ComboBox1.Value & "'"
conn.Open constr
cmd.ActiveConnection = conn
Set rst = cmd.Execute()
Do While Not rst.EOF
o = o + 1
If o > 67 Then
o = 1 'Column Position
n = n + 1 'Row Position
End If
Range(Cells(n, o), Cells(n, o)).Value = rst(o)
rst.MoveNext
Loop
rst.Close
conn.Close
ElseIf (ComboBox1.Value = "" And ComboBox2.Value <> "") Then
cmd.CommandText = "SELECT * FROM [Run_Data].[dbo].[RunLog_Data] WHERE OrderNumber = '" & ComboBox2.Value & "'"
conn.Open constr
cmd.ActiveConnection = conn
Set rst = cmd.Execute()
Do While Not rst.EOF
'Duplicate above and consolidate code
rst.MoveNext
Loop
rst.Close
conn.Close
End If
而不是'rst而不是rst.EOF' ...'Loop',你可能只是說'Cells(n,o).CopyFromRecordSet rst'。 (我認爲)(例如'Cells(2,1).CopyFromRecordSet rst'應該[希望]複製從單元格A2開始的記錄集) – YowE3K
Dang,謝謝。不知道我是如何錯過的。也清理它。 – Flibertyjibbet