|
|
สอบถามปัญหา คำสั่ง SQL มีโจย์ อยู่ว่า ทุกวันที่ 26 ของเดือนต้องนับวันมาทำงานใหม่ |
|
|
|
|
|
|
|
ใช้ DateAdd + 1 Month ครับ
|
|
|
|
|
Date :
2011-07-26 11:13:24 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ของ ท่าน ไม่เข้าใจ ช่วยอธิบายด้วย ผมไม่รู้ว่าโค๊ดผิดตรงไหน หรือ มีวิธีเขียนที่ สั้น กว่า ดีกว่านี้ไหมครับ
Code (VB.NET)
YY1 = NowToYM1
YY2 = NowToYM2
Sq1 = "SELECT IDTeacher, ComeInStatus "
Sq1 = Sq1 & " From TTeacherComeToschool WHERE (IDTeacher = '" & IDT & "') AND (YMDRecord >= '" & YY1 & "') AND (YMDRecord <= '" & YY2 & "') AND ( ComeInStatus = 81 )"
RS1.Open Sq1, cnString, 3, 1
Sq2 = "SELECT IDTeacher, ComeInStatus "
Sq2 = Sq2 & " From TTeacherComeToschool WHERE (IDTeacher = '" & IDT & "') AND (YMDRecord >= '" & YY1 & "') AND (YMDRecord <= '" & YY2 & "') "
RS2.Open Sq2, cnString, 3, 1
Sq3 = "SELECT IDTeacher, ComeInStatus "
Sq3 = Sq3 & " From TTeacherComeToschool WHERE (IDTeacher = '" & IDT & "') AND (YMDRecord >= '" & YY1 & "') AND (YMDRecord <= '" & YY2 & "') AND ( ComeInStatus = 70 )"
RS3.Open Sq3, cnString, 3, 1
Sq4 = "SELECT IDTeacher, ComeInStatus "
Sq4 = Sq4 & " From TTeacherComeToschool WHERE (IDTeacher = '" & IDT & "') AND (YMDRecord >= '" & YY1 & "') AND (YMDRecord <= '" & YY2 & "') AND ( ComeInStatus = 30 )"
RS4.Open Sq4, cnString, 3, 1
strFileName = App.Path & "\pic\" & IDT & ".jpg"
If Dir$(strFileName) <> "" Then
picBox.Picture = LoadPicture(strFileName)
Else
picBox.Picture = LoadPicture(App.Path & "\pic\dinga.jpg")
End If
lbss = "มา " & RS2.RecordCount & " วัน " & "สาย " & RS1.RecordCount & " วัน " & " ขาด " & RS3.RecordCount & " วัน " & " ÅÒ " & RS4.RecordCount & " Çѹ "
RS1.Close
RS2.Close
RS3.Close
RS4.Close
ElseIf InOut > 1 Then
lbInOut.Caption = "ŧàÇÅÒÍÍ¡"
lbTName.Caption = TName
lbTime.Caption = HMS
YY1 = NowToYM1
YY2 = NowToYM2
Sq1 = "SELECT IDTeacher, ComeInStatus "
Sq1 = Sq1 & " From TTeacherComeToschool WHERE (IDTeacher = '" & IDT & "') AND (YMDRecord >= '" & YY1 & "') AND (YMDRecord <= '" & YY2 & "') AND ( ComeInStatus = 81 )"
RS1.Open Sq1, cnString, 3, 1
Sq2 = "SELECT IDTeacher, ComeInStatus "
Sq2 = Sq2 & " From TTeacherComeToschool WHERE (IDTeacher = '" & IDT & "') AND (YMDRecord >= '" & YY1 & "') AND (YMDRecord <= '" & YY2 & "') "
RS2.Open Sq2, cnString, 3, 1
Sq3 = "SELECT IDTeacher, ComeInStatus "
Sq3 = Sq3 & " From TTeacherComeToschool WHERE (IDTeacher = '" & IDT & "') AND (YMDRecord >= '" & YY1 & "') AND (YMDRecord <= '" & YY2 & "') AND ( ComeInStatus = 70 )"
RS3.Open Sq3, cnString, 3, 1
Sq4 = "SELECT IDTeacher, ComeInStatus "
Sq4 = Sq4 & " From TTeacherComeToschool WHERE (IDTeacher = '" & IDT & "') AND (YMDRecord >= '" & YY1 & "') AND (YMDRecord <= '" & YY2 & "') AND ( ComeInStatus = 30 )"
RS4.Open Sq4, cnString, 3, 1
strFileName = App.Path & "\pic\" & IDT & ".jpg"
If Dir$(strFileName) <> "" Then
picBox.Picture = LoadPicture(strFileName)
Else
picBox.Picture = LoadPicture(App.Path & "\pic\dinga.jpg")
End If
lbss = "ÁÒ " & RS2.RecordCount & " Çѹ " & "ÊÒ " & RS1.RecordCount & " Çѹ " & " ¢Ò´ " & RS3.RecordCount & " Çѹ " & " ÅÒ " & RS4.RecordCount & " Çѹ "
RS1.Close
RS2.Close
RS3.Close
RS4.Close
Else
lbTName.Caption = TName
lbTime.Caption = HMS
lbInOut.Caption = "«éÓ"
YY1 = NowToYM1
YY2 = NowToYM2
Sq1 = "SELECT IDTeacher, ComeInStatus "
Sq1 = Sq1 & " From TTeacherComeToschool WHERE (IDTeacher = '" & IDT & "') AND (YMDRecord >= '" & YY1 & "') AND (YMDRecord <= '" & YY2 & "') AND ( ComeInStatus = 81 )"
RS1.Open Sq1, cnString, 3, 1
Sq2 = "SELECT IDTeacher, ComeInStatus "
Sq2 = Sq2 & " From TTeacherComeToschool WHERE (IDTeacher = '" & IDT & "') AND (YMDRecord >= '" & YY1 & "') AND (YMDRecord <= '" & YY2 & "') "
RS2.Open Sq2, cnString, 3, 1
Sq3 = "SELECT IDTeacher, ComeInStatus "
Sq3 = Sq3 & " From TTeacherComeToschool WHERE (IDTeacher = '" & IDT & "') AND (YMDRecord >= '" & YY1 & "') AND (YMDRecord <= '" & YY2 & "') AND ( ComeInStatus = 70 )"
RS3.Open Sq3, cnString, 3, 1
Sq4 = "SELECT IDTeacher, ComeInStatus "
Sq4 = Sq4 & " From TTeacherComeToschool WHERE (IDTeacher = '" & IDT & "') AND (YMDRecord >= '" & YY1 & "') AND (YMDRecord <= '" & YY2 & "') AND ( ComeInStatus = 30 )"
RS4.Open Sq4, cnString, 3, 1
strFileName = App.Path & "\pic\" & IDT & ".jpg"
If Dir$(strFileName) <> "" Then
picBox.Picture = LoadPicture(strFileName)
Else
picBox.Picture = LoadPicture(App.Path & "\pic\dinga.jpg")
End If
lbss = "ÁÒ " & RS2.RecordCount & " Çѹ " & "ÊÒ " & RS1.RecordCount & " Çѹ " & " ¢Ò´ " & RS3.RecordCount & " Çѹ " & " ÅÒ " & RS4.RecordCount & " Çѹ "
RS1.Close
RS2.Close
RS3.Close
RS4.Close
End If
End Sub
Public Function TimeToHHMMSS(ByVal strTime As String) As String 'StrTime = 00:00:00
Dim HH As String, MM As String, SS As String
If Len(strTime) = 7 Then strTime = "0" + strTime
HH = Left(strTime, 2)
MM = Mid(strTime, 4, 2)
SS = Right(strTime, 2)
TimeToHHMMSS = HH & MM & SS
End Function
Public Function NowToYMD() As String
Dim D As Byte, M As Byte, Y As Long
D = Day(Now)
M = Month(Now)
Y = Year(Now)
If Y < 2400 Then
Y = Y + 543
End If
NowToYMD = Format(Y, "0000") + Format(M, "00") + Format(D, "00")
End Function
Public Function NowToYM1() As String
Dim D1 As String, M1 As Byte, Y1 As Long
D1 = 25
M1 = Month(Now)
Y1 = Year(Now)
If Y1 < 2400 Then
Y1 = Y1 + 543
End If
If M1 = Month(Now) Then
M1 = M1 - 1
End If
NowToYM1 = Format(Y1, "0000") + Format(M1, "00") + Format(26, "00")
End Function
Public Function NowToYM2() As String
Dim D2 As String, M2 As Byte, Y2 As Long
D2 = 25
M2 = Month(Now)
Y2 = Year(Now)
If Y2 < 2400 Then
Y2 = Y2 + 543
End If
NowToYM2 = Format(Y2, "0000") + Format(M2, "00") + Format(25, "00")
End Function
|
|
|
|
|
Date :
2011-07-26 18:47:07 |
By :
chowarin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่มีคนตอบ เหรอครับ เท่าที่เขียนมันก็โอเคนะครับแต่พอถึงวันที 26 เราต้องไป บวกเดือนเพิ่มนะครับ แต่พอถึงเดือนใหม่มันกลับไม่คำนวนอีกนะคับ ไม่รู้ผมเข้าใจอะไรผิดตรงไหนฃ
|
|
|
|
|
Date :
2011-08-02 15:20:19 |
By :
chowarin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คุณจะเขียนอะไรมากมายครับ แต่ใช้ DateAdd บวก +1 Month แล้วใช้ Loop for ก็ได้แล้วครับ
ตัวอย่าง
Code (VB.NET)
For i = Date.Now To DateAdd(DateInterval.Month, 1, Date.Now)
Next
Go to : ASP.NET DateAdd()
|
|
|
|
|
Date :
2011-08-02 21:13:59 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สงสัยจะต้อบไม่ตรงประเด็นเข้าของกระทู้
|
|
|
|
|
Date :
2011-08-03 17:01:21 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ก็ต้องขอโทษ ด้วยนะครับ ที่ไม่เข้าใจอยู่ จะว่าโง่ก็ยอมรับครับ มันเป็นโปรแกรมสแกนลายนิ้วมือเข้าทำงานนะครับแล้วจะแสดงผลการทำงานตามช่วงเวลาที่กำหนด โดย ใช้คำสั่ง recordcount ซึ่ง ในฐานข้อมูล มีฟอร์เมตวันที่ เป็นแบบ yyyymmdd = 25540826 ประมาณนี้ครับ โปรแกรม จะคำนวน เป็น 0 วัน ทันที เมื่อถึงวันที 25540726.....25540731 แต่พอวันที 25540801 ก็จะคำนวนได้ตามปกติ หน้าตาโปรแกรม ประมาณนี้คับ
เหมือนเครื่อตอกบัตร นะคับ ผมความนำคำสั่งที่ท่านแนะนำไปว่างไว้แล้ววนลูปอย่างไร อย่างที่โค๊ดได้ให้ไป ถ้าเขียนรูปแบบใหม่ เขียนอย่างไร ช่วยจัดเต็มให้ด้วย ขอมากไปหรือเปล่าครับ พอดีเป็นโปรแกรมเมอร์ใหม่คับ ยังไม่เก่ง
|
|
|
|
|
Date :
2011-08-13 14:16:00 |
By :
ต้น |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมแก้ปัญหาได้แล้ว ครับ โดยการ
ให้
D1=Day(Now)
If D1 < 26 Then
M1 = M1 - 1
End If
|
|
|
|
|
Date :
2011-08-17 08:01:38 |
By :
chowarin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|