在EXCEL VBA中的MS SQL查詢語法,如何用輸入的方式產生?
- 帖子
- 8
- 主題
- 2
- 精華
- 0
- 積分
- 15
- 點名
- 0
- 作業系統
- XP
- 軟體版本
- XP
- 閱讀權限
- 10
- 性別
- 男
- 註冊時間
- 2012-11-8
- 最後登錄
- 2012-12-12
|
在EXCEL VBA中的MS SQL查詢語法,如何用輸入的方式產生?
我的EXCEL VBA 中有一段查詢MS SQL語法 (............where ApplyDateTime Between '20120101' and '20121231' and Excuse='特休假'...........),該如何將日期與假別的部分用VBA文字方塊方式輸入日期範圍和假別可查詢出我要的結果?謝謝!
PS:因為在VBA中可以執行SQL語法,查詢資料,所以我想要這段SQL語法在VBA中可以用變數方式去查詢。 |
|
|
聶風
|
|
|
|
|
- 帖子
- 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='特休假'......" |
|
|
|
|
|
|
|
- 帖子
- 8
- 主題
- 2
- 精華
- 0
- 積分
- 15
- 點名
- 0
- 作業系統
- XP
- 軟體版本
- XP
- 閱讀權限
- 10
- 性別
- 男
- 註冊時間
- 2012-11-8
- 最後登錄
- 2012-12-12
|
3#
發表於 2012-12-7 15:38
| 只看該作者
回復 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
|
4#
發表於 2012-12-7 16:31
| 只看該作者
回復 3# badboy01
sStartDate =TextBox1.Text
sEndDate =TextBox2.Text |
|
|
|
|
|
|
|
- 帖子
- 2035
- 主題
- 24
- 精華
- 0
- 積分
- 2031
- 點名
- 0
- 作業系統
- Win7
- 軟體版本
- Office2010
- 閱讀權限
- 100
- 性別
- 男
- 註冊時間
- 2012-3-22
- 最後登錄
- 2024-2-1
|
5#
發表於 2012-12-7 16:40
| 只看該作者
本帖最後由 c_c_lai 於 2012-12-7 16:42 編輯
回復 3# badboy01 - where ApplyDateTime Between '" & Format(TextBox1.Text, "yyyymmdd") & "' AND '" & Format(TextBox2.Text, "yyyymmdd") & "' and Excuse='特休假'
複製代碼 |
|
|
|
|
|
|
|
- 帖子
- 8
- 主題
- 2
- 精華
- 0
- 積分
- 15
- 點名
- 0
- 作業系統
- XP
- 軟體版本
- XP
- 閱讀權限
- 10
- 性別
- 男
- 註冊時間
- 2012-11-8
- 最後登錄
- 2012-12-12
|
6#
發表於 2012-12-7 16:55
| 只看該作者
回復 badboy01
sStartDate =TextBox1.Text
sEndDate =TextBox2.Text
stillfish00 發表於 2012-12-7 16:31 
我大概發現問題在哪裡了。我都是用模組方式來設計,我是直接在EXCEL上設計文字方塊,所以一直有錯誤,但是我插入表單在按照大大的方式就成功了,只是如果我在EXCEL sheet 上就有問題~~找不出原因= =",不過還是感謝大大,終於搞定了,感恩! |
|
|
聶風
|
|
|
|
|
- 帖子
- 8
- 主題
- 2
- 精華
- 0
- 積分
- 15
- 點名
- 0
- 作業系統
- XP
- 軟體版本
- XP
- 閱讀權限
- 10
- 性別
- 男
- 註冊時間
- 2012-11-8
- 最後登錄
- 2012-12-12
|
7#
發表於 2012-12-7 17:10
| 只看該作者
回復 5# c_c_lai
我按照大大方式好像不行(模組方式),不過還是謝謝提供方法。 |
|
|
聶風
|
|
|
|
|
- 帖子
- 1018
- 主題
- 15
- 精華
- 0
- 積分
- 1058
- 點名
- 0
- 作業系統
- win7 32bit
- 軟體版本
- Office 2016 64-bit
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 桃園
- 註冊時間
- 2012-5-9
- 最後登錄
- 2022-9-28
|
8#
發表於 2012-12-7 17:27
| 只看該作者
本帖最後由 stillfish00 於 2012-12-7 17:28 編輯
回復 6# badboy01
OK , 所以你是程式寫在模組內 ,
假設你是直接在工作表1 (工作表名稱) , 插入ActiveX的文字方塊
這樣的話你的Textbox1要指定是哪個工作表 ,
也就是把原本的 Textbox1.Text 改寫成 sheets("工作表1").Textbox1.Text
Textbox2同理 |
|
|
|
|
|
|
|
- 帖子
- 8
- 主題
- 2
- 精華
- 0
- 積分
- 15
- 點名
- 0
- 作業系統
- XP
- 軟體版本
- XP
- 閱讀權限
- 10
- 性別
- 男
- 註冊時間
- 2012-11-8
- 最後登錄
- 2012-12-12
|
9#
發表於 2012-12-7 18:08
| 只看該作者
回復 8# stillfish00
感謝~~大大成功了~之前搞好久都搞不定,模組也可以用了~~感恩^____^ |
|
|
聶風
|
|
|
|
|
- 帖子
- 8
- 主題
- 2
- 精華
- 0
- 積分
- 15
- 點名
- 0
- 作業系統
- XP
- 軟體版本
- XP
- 閱讀權限
- 10
- 性別
- 男
- 註冊時間
- 2012-11-8
- 最後登錄
- 2012-12-12
|
10#
發表於 2012-12-7 18:13
| 只看該作者
回復 8# stillfish00
另請教大大,我在EXCEL sheet中設計的按鈕要怎麼鎖定無法按右鍵去編輯巨集的原始碼?謝謝!(正常下一般滑鼠右鍵可以選擇指定巨集) |
|
|
聶風
|
|
|
|
|