กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
295 1
URL.หัวข้อ /
URL
PROJECTING DATES
มีคนถามไว้ที่
http://www.quicktechusa.com/msgboard/wwwboard.pl?read=18217
Let me try explaining this. Maybe a sample table will help.
ACCOUNT --- PRINT FREQUENCY --- DATE --- TO PRINT ON
TKP0000 --- monthly ----------- 3/18/02 ------3/02,4/02,05/02...(the whole year)
TML0000 --- one time ---------- 3/18/02 ------ 03/02
TYL0000 --- quarterly ------------ 3/18/02 ------ 03/02,06/02,09/02...(every 3 months)
TRL0000 --- semi-annually ----- 3/18/02 ------ 03/02, 09/02 (every six months)
TRK0000 --- annually ---------- 3/18/02 ------- 03/02, 03/03 (once a year)
How can I project the "TO PRINT ON" dates from the "DATE"? And then query a list for those only to print in 03/02?
THANK YOU SO MUCH!!
คือมีวันที่มาให้ และระบุว่าต้องการให้พิมพ์ออกมาถี่มากน้อยแค่ไหน โดยกำหนดให้เป็น ทุกเดือน, ทุก 3 เดือน, 1 ครั้ง, ปีละ 2 ครั้ง, ปีละครั้ง แต่ยังบอกรายละเอียดมาไม่ครบ เท่าไหร่ ผมเลยเดาตอบไปดังนี้
Function fPrinting(dte As Date, strFrequent As String) As String
Dim I As Integer, strDate As String
Select Case strFrequent
Case "monthly"
For I = 1 To 12 - Month(dte)
strDate = strDate & Format(DateAdd("m", (I - 1), dte), "mm/yy") & ", "
Next I
Case "one time"
strDate = Format(DateAdd("m", I, dte), "mm/yy") & ", "
Case "quarterly"
For I = 1 To ((12 - Month(dte)) \ 3)
strDate = strDate & Format(DateAdd("m", (3 * I) - 3, dte), "mm/yy") & ", "
Next I
Case "semi-annually"
For I = 1 To ((12 - Month(dte)) \ 6) + 1
strDate = strDate & Format(DateAdd("m", (6 * I) - 6, dte), "mm/yy") & ", "
Next I
Case "annually"
For I = 1 To 5
strDate = strDate & Format(DateAdd("YYYY", (I - 1), dte), "mm/yy") & ", "
Next I
End Select
fPrinting = Left(Trim(strDate), Len(Trim(strDate)) - 1)
End Function
เมื่อนำไช้ใน Query3 จะได้ SQL ดังนี้
SELECT tblPrintAccount.account, tblPrintAccount.print_frequency, tblPrintAccount.mydate, fPrinting([mydate],[print_frequency]) AS [To Be Printed On]
FROM tblPrintAccount;
ผมจะได้ดังนี้
account print_frequency mydate To Be Printed On
TKP0000 monthly 18/3/2002 03/02, 04/02, 05/02, 06/02, 07/02, 08/02, 09/02, 10/02, 11/02
TML0000 one time 18/3/2002 03/02
TRK0000 annually 18/3/2002 03/02, 03/03, 03/04, 03/05, 03/06
TRL0000 semi-annually 18/3/2002 03/02, 09/02
TYL0000 quarterly 18/3/2002 03/02, 06/02, 09/02
ตัวอย่างจริงอยู่ที่ http://agserver.kku.ac.th/basiceng/datetime2.zip ครับ
http://www.quicktechusa.com/msgboard/wwwboard.pl?read=18217
Let me try explaining this. Maybe a sample table will help.
ACCOUNT --- PRINT FREQUENCY --- DATE --- TO PRINT ON
TKP0000 --- monthly ----------- 3/18/02 ------3/02,4/02,05/02...(the whole year)
TML0000 --- one time ---------- 3/18/02 ------ 03/02
TYL0000 --- quarterly ------------ 3/18/02 ------ 03/02,06/02,09/02...(every 3 months)
TRL0000 --- semi-annually ----- 3/18/02 ------ 03/02, 09/02 (every six months)
TRK0000 --- annually ---------- 3/18/02 ------- 03/02, 03/03 (once a year)
How can I project the "TO PRINT ON" dates from the "DATE"? And then query a list for those only to print in 03/02?
THANK YOU SO MUCH!!
คือมีวันที่มาให้ และระบุว่าต้องการให้พิมพ์ออกมาถี่มากน้อยแค่ไหน โดยกำหนดให้เป็น ทุกเดือน, ทุก 3 เดือน, 1 ครั้ง, ปีละ 2 ครั้ง, ปีละครั้ง แต่ยังบอกรายละเอียดมาไม่ครบ เท่าไหร่ ผมเลยเดาตอบไปดังนี้
Function fPrinting(dte As Date, strFrequent As String) As String
Dim I As Integer, strDate As String
Select Case strFrequent
Case "monthly"
For I = 1 To 12 - Month(dte)
strDate = strDate & Format(DateAdd("m", (I - 1), dte), "mm/yy") & ", "
Next I
Case "one time"
strDate = Format(DateAdd("m", I, dte), "mm/yy") & ", "
Case "quarterly"
For I = 1 To ((12 - Month(dte)) \ 3)
strDate = strDate & Format(DateAdd("m", (3 * I) - 3, dte), "mm/yy") & ", "
Next I
Case "semi-annually"
For I = 1 To ((12 - Month(dte)) \ 6) + 1
strDate = strDate & Format(DateAdd("m", (6 * I) - 6, dte), "mm/yy") & ", "
Next I
Case "annually"
For I = 1 To 5
strDate = strDate & Format(DateAdd("YYYY", (I - 1), dte), "mm/yy") & ", "
Next I
End Select
fPrinting = Left(Trim(strDate), Len(Trim(strDate)) - 1)
End Function
เมื่อนำไช้ใน Query3 จะได้ SQL ดังนี้
SELECT tblPrintAccount.account, tblPrintAccount.print_frequency, tblPrintAccount.mydate, fPrinting([mydate],[print_frequency]) AS [To Be Printed On]
FROM tblPrintAccount;
ผมจะได้ดังนี้
account print_frequency mydate To Be Printed On
TKP0000 monthly 18/3/2002 03/02, 04/02, 05/02, 06/02, 07/02, 08/02, 09/02, 10/02, 11/02
TML0000 one time 18/3/2002 03/02
TRK0000 annually 18/3/2002 03/02, 03/03, 03/04, 03/05, 03/06
TRL0000 semi-annually 18/3/2002 03/02, 09/02
TYL0000 quarterly 18/3/2002 03/02, 06/02, 09/02
ตัวอย่างจริงอยู่ที่ http://agserver.kku.ac.th/basiceng/datetime2.zip ครับ
1 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R06527
Time: 0.1589s