在EXCEL VBA中的MS SQL查詢語法,如何用輸入的方式產生?
- 帖子
- 8
- 主題
- 2
- 精華
- 0
- 積分
- 15
- 點名
- 0
- 作業系統
- XP
- 軟體版本
- XP
- 閱讀權限
- 10
- 性別
- 男
- 註冊時間
- 2012-11-8
- 最後登錄
- 2012-12-12
|
回復 2# stillfish00
非常感謝大大,我按照大大的方式程式碼改了,但是我想要任意輸入日期範圍該怎麼改呢?我設計兩個輸入文字方塊日期起點TextBox1和日期結束 TextBox2,
我目前VBA語法是將MS SQL查詢資料讀取到EXCEL sheet上,如果按照大大方式是可以讀取,但是我加入TextBox1,TextBox2就有問題了。
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sub 按鈕2_Click() '定義過程名稱
Dim i As Integer, j As Integer, sht As Worksheet 'i,j為整數變數;sht 為excel工作表物件變數,指向某一工作表
Set cn = New ADODB.Connection '定義資料連結物件 ,保存連接資料庫資訊;請先引用ADO
Dim rs As New ADODB.Recordset '定義記錄物件
Dim strCn As String, strSQL As String '字符串變量
Dim sStartDate As String, sEndDate As String '字符串變量
sStartDate = "20120101" <====我改成sStartDate = "TextBox1"
sEndDate = "20121231" <====我改成sEndDate = "TextBox2" 會有錯誤訊息(從字元字串轉換到datetime時轉換失敗)
strCn = ("driver={SQL Server};server=10.0.X.X;uid=XX;pwd=XXXXXXXX;database=XXXX_XXXX;") '定義資料庫連結字串
strSQL = "SELECT ApplyerDeptName,ApplyName,HR10day,sum(HRdays)as UsedDay,(HR10day-sum(HRdays))as UnusedDay FROM afu_form_HR10 inner join TEST on afu_form_HR10.ApplyName=TEST.HR10name where ApplyDateTime Between '" & sStartDate & " 'AND' " & sEndDate & "' and Excuse='特休假' group by ApplyerDeptName,ApplyName,HR10day"
cn.Open strCn '與資料庫建立連接,如果成功,返回連線物件cn
rs.Open strSQL, cn '執行strSQL所含的SQL命令,結果保存在rs記錄集物件中
i = 2
Set sht = ThisWorkbook.Worksheets("sheet1") '把sht指向當前工作簿的sheet1工作表
Do While Not rs.EOF
sht.Cells(i, 1) = rs("ApplyerDeptName")
sht.Cells(i, 2) = rs("ApplyName")
sht.Cells(i, 3) = rs("HR10day")
sht.Cells(i, 4) = rs("UsedDay")
sht.Cells(i, 5) = rs("UnusedDay")
rs.MoveNext
i = i + 1
Loop
rs.Close
End Sub
---------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
聶風
|
|
|
|
|
- 帖子
- 1018
- 主題
- 15
- 精華
- 0
- 積分
- 1058
- 點名
- 0
- 作業系統
- win7 32bit
- 軟體版本
- Office 2016 64-bit
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 桃園
- 註冊時間
- 2012-5-9
- 最後登錄
- 2022-9-28
|
2#
發表於 2012-12-7 15:09
| 只看該作者
回復 1# badboy01
因為沒給前後的程式碼 , 假設你這段為字串..........
"......where ApplyDateTime Between '20120101' and '20121231' and Excuse='特休假'......"
'宣告字串變數
Dim sStartDate as string , sEndDate as string
sStartDate = "20120101"
sEndDate = "20121231"
'上面的那段字串改為
"......where ApplyDateTime Between '" & sStartDate & "' and '" & sEndDate & "' and Excuse='特休假'......" |
|
|
|
|
|
|
|