PROJECTING DATES
กระทู้เก่าบอร์ด อ.สุภาพ ไชยา

 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 ครับ

1 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R06527
   
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.1589s