Misal, disediakan cell A1 untuk tanggal awal, dan cell A2 untuk tanggal akhir yang keduanya bertipe datetime.
tambahkan sebelum With
dim sDAw as string, sDAk as string
dim sSQL as string
sdaw=format$(range("a1").value,"YYYY-MM-DD")
sdak=format$(range("a2").value,"YYYY-MM-DD")
'jika format number A1 dan A2 adalah YYYY-MM-DD
'sdaw=range("a1").text
'sdak=range("a2").text
sSQL="SELECT dt1.LOCID, dt1.STATUS, dt1.INVOICE_DATE, dt1.INVOICE_NO, dt1.SERVICE_ORDER, dt1.CUSTOMER_TYPE, " & _
"dt1.REPAIR_TYPE, dt1.CUSTOMER_CODE, dt1.LABOR, dt1.PART, dt1.OIL, dt1.MATERIAL, dt1.SUBLET, dt1.DISCOUNT, " & _
"dt1.TURN_OVER, dt1.TAX, dt1.METERAI, dt1.TOTAL, dt1.DIFFERENT, dt1.POLICE_NO, dt1.CUSTOMER, dt1.ADDRESS, dt1.CITY, " & _
"dt1.TAX_NO, dt1.TAX_DATE, dt1.TRANS_DATE, dt1.NPWP, dt1.RATE, dt1.MODEL " & _
"FROM MIGRASI.dbo.SALES as dt1 WHERE " & _
"dt1.INVOICE_DATE between {ts '" & sdaw & "'} And {ts '" & sdak & "'}"
'jika yang akan ditampilkan adalah seluruh fields dari tabel tersebut pada from,
'ganti yang warna biru menjadi "Select dt1.* "
'jika odbc tidak support klausa between,
'ganti yang di-bold menjadi
' "dt1.INVOICE_DATE>= {ts '" & sdaw & "'} And dt1.INVOICE_DATE<= {ts '" & sdak & "'}"
'kemudian bagian .commandtext = blabla sampai :00'})" diganti menjadi
.commandtext = ssql
Jika isi cell A1 dan A2 bukan bertipe datetime, maka akan terjadi error.
Pasang fitur data validation dengan batasan allow date, set tanggal min dan max yang boleh diisikan ke cell A1 dan A2. Kemudian, lebih baik cell A1 dan A2 di format number :
YYYY-MM-DD HH:mm:ss
setidaknya cukup dengan : YYYY-MM-DD
Regards.
Kid.
Dear pakar excel,
Kami punya record macro excel seperti ini;
Sub Macro2()
'
' Macro2 Macro
'
' Keyboard Shortcut: Ctrl+m
'
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"ODBC;DSN=Report Bulanan;UID=cms;;APP=2007 Microsoft Office system;WSID=URIP;DATABASE=MIGRASI" _
, Destination:=Range("$A$1")).QueryTable
.CommandText = Array( _
"SELECT SALES.LOCID, SALES.STATUS, SALES.INVOICE_DATE, SALES.INVOICE_NO, SALES.SERVICE_ORDER, SALES.CUSTOMER_TYPE, SALES.REPAIR_TYPE, SALES.CUSTOMER_CODE, SALES.LABOR, SALES.PART, SALES.OIL, SALES.MATE" _
, _
"RIAL, SALES.SUBLET, SALES.DISCOUNT, SALES.TURN_OVER, SALES.TAX, SALES.METERAI, SALES.TOTAL, SALES.DIFFERENT, SALES.POLICE_NO, SALES.CUSTOMER, SALES.ADDRESS, SALES.CITY, SALES.TAX_NO, SALES.TAX_DATE, S" _
, _
"ALES.TRANS_DATE, SALES.NPWP, SALES.RATE, SALES.MODEL" & Chr(13) & "" & Chr(10) & "FROM MIGRASI.dbo.SALES SALES" & Chr(13) & "" & Chr(10) & _
"WHERE (SALES.INVOICE_DATE>={ts '2010-07-01 00:00:00'} And SALES.INVOICE_DATE<={ts '2010-07-10 00:00:00'})" _
)
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Table_Query_from_Report_Bulanan_1"
.Refresh BackgroundQuery:=False
End With
End Sub
Record macro diatas dipergunakan setiap kali kami melakukan penarikan data dari server kami, kesulitannya adalah user selalu melakukan penggantian tanggal pada record macro diatas
("WHERE (SALES.INVOICE_DATE>={ts '2010-07-01 00:00:00'} And SALES.INVOICE_DATE<={ts '2010-07-10 00:00:00'})")
setiap saat sesuai range data yg dibutuhkan, apakah ada jalan pembuatan semacam sortcut agar user tidak perlu membuka visualbasic nya dan tanggal bisa diubah,
Terima kasih atas bantuannya
| "if you are the most valuable assets, you will show up on the |
| balance sheet..." - oNo Wiqe |
| http://www.facebook.com/group.php?gid=37671048001&ref=mf |
+-------------------------------------------------------------------+
| DILARANG : MLM, money game, OOT, iklan tanpa izin, SARA, testing, |
| pembicaraan pribadi, one line message, melecehkan, tidak sopan. |
+-------------------------------------------------------------------+
| Buat subjek yang kreatif, jangan : "tanya", "help", "mohon bantu" |
| Usahakan besar attachment < 200 kb. Gunakan winzip jika perlu. |
+-------------------------------------------------------------------+
| Ajak teman-teman Anda bergabung dengan mengirim e-mail kosong ke |
| XL-mania-subscribe@yahoogroups.com atau kirimkan mereka file dari |
| http://groups.yahoo.com/group/XL-mania/files/Promotion/ |
+-------------------------------------------------------------------+
| Berikan testimoni di : http://www.friendster.com/xlmania atau... |
| http://www.xl-mania.com/2008/06/testimoni-xl-mania.html |
+-------------------------------------------------------------------+
| Message lama ada di : |
| http://groups.yahoo.com/group/XL-mania/messages [perlu yahoo id] |
| http://www.mail-archive.com/xl-mania@yahoogroups.com |
+-------------------------------------------------------------------+
Nenhum comentário:
Postar um comentário