สอบถาม Run number ครับ
กระทู้เก่าบอร์ด อ.Yeadram

 4,072   26
URL.หัวข้อ / URL
สอบถาม Run number ครับ

ผมเขียน Code Run Number ตามนี้ครับ


Private Sub zzz_Click()
        Dim AddNo As String
        Dim AAA As Integer
        Dim CCC As String
        Dim ANT As String
       
        CCC = DMax("zzz", "Qr")
'หาค่ามากที่สุดในฟิว ZZZ ตาราง QR

        AAA = "Select Count (ZZZ) From Qr Where zzz=CCC "
'ให้นับจำนวน Record ที่มีค่าเหมือนหรือเท่ากับ CCC ที่ฟิว ZZZ ตาราง Qr ว่ามีจำนวนเท่าไร่

If AAA > 5 Then
'เช็คเงื่อนไข AAA มีค่ามากกว่า 5 ราการคือ 0001/56 จำนวน 5 รายการเป็นต้น
       
        If Right(AAA, 2) <> Format(Now(), "YY") Then
'รูปแบบ 0001/56 ถ้าตัวเลข 56 ไม่เท่ากับ Format
               AddNo = 1
'ให้บวก YY ได้ 56+1 = 57
        Else
        AddNo = Left(AAA, 4) + 1
'จำนวนทางซ้าย +1
       End If
               If AddNo < 10 Then
                         ANT = "000" & AddNo & "/" & Format(Now(), "YY")
                    ElseIf AddNo < 100 Then
                          ANT = "00" & AddNo & "/" & Format(Now(), "YY")
                    ElseIf AddNo < 1000 Then
                         ANT = "0" & AddNo & "/" & Format(Now(), "YY")
                     Else
                        ANT = AddNo & AddNo & "/" & Format(Now(), "YY")
               End If

Else
        ANT = CCC
' ให้คำตอบเท่ากับค่าเดิม

       zzz.Value = ANT
'Text ZZZ ให้มีค่าเท่ากับ ANT
       
   End If


คำถามของผมคือ พอผม Run ใช้งานโปรแกรมโปรแกรมแจ้งว่าType Mismatch
ตรงบรรทัด AAA = "Select Count (ZZZ) From Qr Where zzz=CCC "

แต่พอผมเปลี่ยน AAA As String มันก็ขึ้นเหมือนเดิมแต่เป็นที่บรรทัด If AAA > 5

และผมลองใส่ " " ที่ If AAA > 5 เป็น If AAA > "5" โปรแกรม Run ไม่เจอ Error อะไรเลย แต่ก็ไม่ขึ้นอะไรครับ
ผมรบกวนอาจารย์ หรือผู้รู้ช่วยแนะนำการแก้ไขให้ถูกต้องหรือแก้ไขให้ผมด้วยครับ
ขอขอบคุณมากครับ

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

1 @R16198
อาจจะอธิบายเยอะหน่อย แต่ผมก็พยายามอธิบายในส่วนที่ผมติดอย่างเต็มที่แล้วครับ
ช่วยรบกวนทุกท่านด้วยครับ หรือจะให้ผมส่ง File หรืออธิบายตรงไหนช่วยแจ้งด้วยครับ

ขอบคุณครับ
2 @R16199
เพิ่มเกติมครับผมเปลี่ยน

AAA = "Select Count (ZZZ) From Qr Where zzz=CCC "   
เป็น
AAA = DCount("[ZZZ]", "[QR]", "[ZZZ] = 'AAA'")

ตอนนี้ติดตรงที่พอตัวเลข Run ไปเช่น
0001/56
0001/56
0001/56
0001/56
0001/56
พอเกิน 5 Record แล้วแทนที่จะเป็น 0002/56 แต่ยังเป็นตัวเดิมครับ
3 @R16200
ความต้องการคุณหมายถึงเรคคอร์ดใหม่ ให้รันเลขซ้ำกัน 5 เรคคอร์ดแล้วค่อยเพิ่มที่ละ 1 ส่วน ปีหลังเครื่องหมาย / คือเปลี่ยนเมื่อขึ้นปีใหม่ใช่ไหมครับ

0001/56
0001/56
0001/56
0001/56
0001/56
0002/56
0002/56
0002/56
0002/56
0002/56
0003/56
เมื่อขึ้นปีใหม่
0003/57
0003/57
0003/57
0003/57
0004/57
อย่างนี้หรือเปล่าครับ หรือเมื่อขึ้นปีใหม่จะให้เป็นยังไง
4 @R16201
ลองเขียนอย่างนี้ดูครับ

'Private Sub zzz_Click()
   If IsNull(zzz) Or zzz & "" = "" Then
        Dim CCC As String
        CCC = DCount("zzz", "Qr") + 1
        zzz.value = Format(Int((CCC + (5 - 1)) / 5), "0000") & "/" & Format(Date, "yy")
    End If
'End Sub
5 @R16202
ขอขอบคุณคุณTTT ครับ
6 @R16207
เรียนคุณ TTT ครับ ผมอยากเช็คเงื่อนไขเพิ่มคือ

ให้เช็คก่อนว่า Dcount ต้องเป็นข้อมูลของวันนี้ หากไม่ใช่ของวันนี้เป็นของเมื่อวานหรือไม่ใช่วันนี้
ให้ Run เลขใหม่เลยโดยไม่ต้องรอให้ครบ 5 ก่อนผมจะต้องทำอย่างไรครับ

วันเก่า

   วันที่              ลำดับ
1/6/2556       0001/56
1/6/2556       0001/56

แต่พอวันที่ 1/6/2556 จบวัน ก็ให้จบแค่นั้นครับ พอขึ้นวันใหม่
ให้ลำดับเป็น 0002/56 เลยได้ไหมครับโดยไม่ต้องให้ครบ 5 ลำดับ

ขึ้นวันใหม่
วันที่              ลำดับ
2/6/2556       0002/56
2/6/2556       0002/56
2/6/2556       0002/56
2/6/2556       0002/56
2/6/2556       0002/56
2/6/2556       0003/56
2/6/2556       0003/56
2/6/2556       0003/56
2/6/2556       0003/56
2/6/2556       0003/56

ขอบคุณครับ
7 @R16212
ลองอย่างนี้ครับ ผมให้ชื่อฟิลด์ วันที่ ในตารางชื่อ aDate นะครับ

'Private Sub zzz_Click()
    If IsNull(zzz) Or zzz & "" = "" Then
        If DCount("aDate", "Qr", "aDate = #" & Format(Date, "yyyy/m/d") & "#") > 0 Then
            Dim AAA As Long, CCC As Long
            AAA = DMax("Left([zzz],4)", "Qr", "aDate < #" & Format(Date, "yyyy/m/d") & "#") * 5
            CCC = DCount("zzz", "Qr", "aDate = #" & Format(Date, "yyyy/m/d") & "#") + AAA + 1
            zzz.value = Format(Int((CCC + (5 - 1)) / 5), "0000") & "/" & Format(Date, "yy")
        End If
    End If
'End Sub

ปล. วิธีเขียนแบบนี้ใช้กับเรคคอร์ดใหม่ ที่มีลงวันที่ปัจจุบันที่ฟิลด์ aDate ก่อนเท่านั้นนะครับ
8 @R16213
ขอขอบคุณครับ

เมื่อกี่ลองโพทใหม่ไปอีกอันกลัวอาจารย์ไม่เห็นครับ

ขอบคุณอีกครั้งครับเดียวผมรองดูแล้วจะกลับมาแจ้งครับ

ขอบคุณอย่างสูงครับ
9 @R16214
เรียนอาจารย์ TTT

ผมลองนำ code ไปวางไม่ขึ้นอะไรเลยครับ
แต่ Record เพิ่มครับ
ผมเพิิ่่่มวันที่ไปก่อนตามอาจารย์แนะนำที่ Record ใหม่
แต่ลำดับไม่ขึ้นครับ เป็นค่าว่างครับ


Private Sub zzz_Click()

aDate.Value = Form_Ma.Text8.Value

    If IsNull(zzz) Or zzz & "" = "" Then
        If DCount("aDate", "Qr", "aDate = #" & Format(Date, "yyyy/m/d") & "#") > 0 Then
            Dim AAA As Long, CCC As Long
            AAA = DMax("Left([zzz],4)", "Qr", "aDate < #" & Format(Date, "yyyy/m/d") & "#") * 5
            CCC = DCount("zzz", "Qr", "aDate = #" & Format(Date, "yyyy/m/d") & "#") + AAA + 1
            zzz.value = Format(Int((CCC + (5 - 1)) / 5), "0000") & "/" & Format(Date, "yy")
        End If
    End If
'End Sub
10 @R16215
ผมส่งตัวอย่างไปที่ Email Board ครับ

accboard@gmail.com
password:accgmail

ชื่อเมลย์ RunNumberแบบมีเงื่อนไข อาจารย์TTT

รบกวนอาจารย์ช่วยดูให้หน่อยครับ
ขอบคุณครับ

11 @R16216
อันนี้ใส่เพื่ออะไรครับ ไม่เข้าใจ
aDate.Value = Form_Ma.Text8.Value

งั้นผมบอกขั้นตอนการทดสอบให้ทำดูนะครับ
1. คุณกำหนดค่าใน Property ของ Textbox ตัวที่แสดง วันที่ ในหัวข้อ Default value: Date() เพื่อให้ New Record เป็นค่าวันที่ปัจจุบัน
2. คำสั่งนี้จะใช้กับ New Record และวันที่ปัจจุบันเท่านั้นนะครับ จากนั้นคุณการคลิ๊กที่ Textbox zzz ได้เลยครับ
3. ใส่ค่าไปเรื่อยๆ จากนั้นปิดฟอร์มไป แล้วลองตั้งค่าวันที่ใน Windows ใหม่เป็นวันพรุ่งนี้ แล้วเปิดฟอร์มอีกครั้ง ลองดูใหม่ หากไม่พลาด เลขใหม่ก็จะรันตามที่คุณต้องการ routine มันเป็นแบบนี้อ่ะครับ
12 @R16217
ใส่โค๊ดเหลือเท่านี้พอครับ

'Private Sub zzz_Click()
    If Me.NewRecord Then
        Dim AAA As Long, CCC As Long
        AAA = DMax("Left([zzz],4)", "Qr", "aDate < #" & Format(Date, "yyyy/m/d") & "#") * 5
        CCC = DCount("zzz", "Qr", "aDate = #" & Format(Date, "yyyy/m/d") & "#") + AAA + 1
        zzz.Value = Format(Int((CCC + (5 - 1)) / 5), "0000") & "/" & Format(Date, "yy")
    End If
'End Sub
13 @R16218
อาจารย์ครับ

ผมลองนำ Code ใส่ ตามตัวอย่างที่ส่งให้ มัน Run ตัวเลขในวันที่เดียวกันตลอดครับ


0001/56
0002/56
0003/56

ในวันที่เดียวกันผมต้องเป็น

0001/56
0001/56
0001/56
0001/56
0001/56
0002/56
0002/56
0002/56
0002/56
0002/56
0003/56
0003/56
0003/56
0003/56
0003/56

ถ้าขึ้นของวันใหม่ถึงจะไม่นับ 5 Record ครับ
ขอรบกวนอีกนะครับ ผมก็พยายามแก้อยู่ครับ
ขอขอบคุณอาจารย์มากๆครับ
14 @R16219
โหลดตัวอย่างกลับไปดูครับ
ตัวอย่าง

วิธีทำก็ทำอย่างที่ผมเขียนทุกประการณ์อ่ะครับ เลยไม่รู้ว่าคุณทำผิดตรงไหน
15 @R16228
ขอบคุณครับอาจารย์
ขอโทษที่กระผมเข้ามาดูช้าครับ พอดีรีบกลับบ้านต่างจังหวัดครับ

จากตัวอย่างที่อาจารย์แนะนำมา ตอนนี้ติดเพียง
มันไม่ Run 5 Record ก่อนครับ ผมอาจจะสอบถามคำถามไม่ครบจะขอ
ถามอาจารอีกครั้งครับ

ผมมีตาราง Qr
มี ฟิวส์
1. อยากให้ตัวเลข Run Number ประมาณ
คือ   0001/56
       0001/56
       0001/56
       0001/56
       0001/56
แล้วค่อยเปลี่ยนครับ
       0002/56
       0002/56
       0002/56
       0002/56
       0002/56
2. เช็ควันที่หากขึ้นวันใหม่ สมมุติ Run 0002/56 ได้ 4 Record หากเป็นวันใหม่แล้วให้เป็น 0003/56 เลยครับและ Run 5 Record ไปตามปกติครับ

3.เปลี่ยนปี 56 เป็น 57 เมื่อปี พ.ศ.เปลี่ยน

ถึง ณ ตอนนี้ที่อาจารย์กรุณาผมมา ติดตรงข้อ 2 ครับตอนนี้เลขมันเปลี่ยนทุกครั้งเมื่อขึ้น Record ใหม่ครับ
ตอนนี้              ความต้องการ
0001/56           0001/56
0002/56           0001/56
0003/56           0001/56
                        0001/56
                        0001/56
                        0002/56
                        0002/56
                        0002/56
                        0002/56
                        0002/56
                        0003/56
                        0003/56 ....

ตอนนี้ก็ติดตรงข้อ2 ละครับ

ขอบคุณอาจารย์มากครับ
16 @R16229
เรียนอาจารย์ TTT และทุกท่านครับ
ผมลองแก้ไขโดยใส่เงื่อนไขเช็ควันที่แบบงมๆ ปรากฎว่าตอนนี้พอเวลาวันที่เปลี่ยน เช่นเดิม 0002/56 พอเปลี่ยนวัน ก็จะเป็น 0003/56 แล้วแต่ตัวต่อมาเป็น 0001/56 แทน รบกวนอาจารย์ช่วยดูให้ด้วยครับ ตอนนี้ติดตรง Run ตรงนี้ไปไหนต่อไม่ได้เลยครับ
ขอบพระคุณครับ


Private Sub zzz_Click()
If IsNull(A_NoCh) Or A_NoCh & "" = "" Then
        Dim AAA As Long, CCC As Long, BBB As Long
        AAA = DMax("Left([zzz],4)", "Qr", "aDate < #" & Format(Date, "d/m/yyyy") & "#") * 5
          BBB = DMax("aDate", "Qr")
        If Form_Ma.Text8.Value > BBB Then
           CCC = DCount("zzz", "Qr", "aDate = #" & Format(Date, "yyyy/m/d") & "#") + AAA + 1
          Else
        CCC = DCount("zzz", "Qr") + 1   
End If
        zzz.Value = Format(Int((CCC + (5 - 1)) / 5), "0000") & "/" & Format(Date, "yy")   
End If
End Sub
17 @R16230
คุณได้โหลดไฟล์ที่ผมแก้กลับไปดูหรือยังครับ ผมว่ามันได้แล้วนะ งงอ่ะ

http://cloudbox.3bb.co.th/share3/NzUzOXw0YWFkZDY2MTkwOGIxODFkMDU5YTExN2YwMmZiYzllY3wzNTMwOA==
18 @R16235
ขอขอบคุณอาจารย์อีกครั้งครับ
ต้องขอประทานโทษอาจารย์ด้วยครับ พอดีคอมผมมันมีปัญหา พอลง Windows ใหม่แล้ว ลองRun ของอาจารย์ดูตอนนี้สำเร็จแล้วครับ

ตอนนี้ได้แล้วครับ งานผมเริ่มไปได้แล้วครับ
เป็นความกรุณาอย่างสูงครับ

ขอขอบคุณท่านอาจารย์อีกครั้งครับ
19 @R16236
เพิ่มเติมให้นิดหน่อยนะครับ ลองทำดูก็ได้ ไม่ทำก็ได้
คือจริงๆแล้วผมว่า เราอาจไม่จำเป็นต้องเทียบกับวันปัจจุบันอย่างเดียวก็ได้ครับ เทียบกับวันที่ในเรคคอร์ดฟิลด์ aDate ไปเลยน่าจะยืดหยุ่นกว่า ประมาณนี้

    If Me.zzz & "" = "" Then
        Dim AAA As Long, CCC As Long
        AAA = Nz(DMax("Left([zzz],4)", "Qr", "aDate < #" & Format(Me.aDate, "yyyy/m/d") & "#"), 0) * 5
        CCC = DCount("zzz", "Qr", "aDate = #" & Format(Me.aDate, "yyyy/m/d") & "#") + AAA + 1
        zzz.Value = Format(Int((CCC + (5 - 1)) / 5), "0000") & "/" & Format(Date, "yy")
    End If
20 @R16237
เรียนอาจารย์ครับ ตอนแรกโปรแกรม Run ได้นะครับ
แต่ ลองอีกทีมันก็เป็นประมาณ
จากตัวอย่างที่ผมส่งกลับไปประมาณตรงที่ 0005/56 ลงมา

มันจะต้องเป็น
RunNum
0005/56
0005/56
0005/56
0005/56
0005/56
0006/56
0006/56
0006/56
0006/56
0006/56

แต่ตอนนี้ Run แล้วได้

0005/56
0006/56
0007/56
ตามตัวอย่างที่ส่งกลับมาครับ


มันเกิดจากอะไรครับ ขอรบกวนอาจารญด้วยครับขอบคุณครับ

http://www.ziddu.com/download/22311819/Test1.rar.html
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2691s