autoruncode
กระทู้เก่าบอร์ด อ.Yeadram

 1,543   5
URL.หัวข้อ / URL
autoruncode

เรียนถาม
ผมมีปัญหาเรือง autoruncode รบกวนดูให้ห่อยครับว่าผิดตรงไหนเพราะว่ามันไม่เริ่มต้นใหม่เมือเปลี่ยนเดือนใหม่
1. Table ประกอบด้วย ID , Date , LabNo (ส่วนนี้เริมต้นนับ 1 ใหม่เมื่อเปลี่ยนเดือน)
2 Form---- Code
    Option Compare Database
    Dim T_LabNo_Rst as recodset
Private Sub Form_Open(Cancel As Integer)
    tDate = Date
    Set dbs = CurrentDb
    Set T_LabNo_Rst = dbs.OpenRecordset("T_LabNo")
    'ให้คำสั่งตรวจสอบ วัน เดือน ปี ในตาราง เพื่อตรวจสอบหมายเลขสุดท้าย
    If DCount("LabNo", "T_TPT_LabNo", "Year(tDate)=" & Year(Now()) & " And Month(tDate)=" & Month(Now()) & "") > 0 Then
        tLabNo = DMax("LabNo", "T_TPT_LabNo", "Year(tDate)=" & Year(Now()) & " And Month(tDate)=" & Month(Now()) & "") + 1
        'เริ่มนับ 1 ใหม่เมื่อเปลี่ยนเดือน
    Else
        tLabNo = 1
    End If
End sub
Private Sub CMD_SaveRecord_Click()
    With T_TPT_LabNo_Rst
        .AddNew
            .Fields("Date") = tDate
            .Fields("LabNo") = tLabNo
        .UpDate
    'ให้คำสั่งตรวจสอบ วัน เดือน ปี ในตาราง เพื่อตรวจสอบหมายเลขสุดท้าย
    If DCount("LabNo", "T_TPT_LabNo", "Year(tDate)=" & Year(Now()) & " And Month(tDate)=" & Month(Now()) & "") > 0 Then
        tLabNo = DMax("LabNo", "T_TPT_LabNo", "Year(tDate)=" & Year(Now()) & " And Month(tDate)=" & Month(Now()) & "") + 1
        'เริ่มนับ 1 ใหม่เมื่อเปลี่ยนเดือน
    Else
        tLabNo = 1
    End If

    End With
คำถามคือ LabNo เมื่อเปลี่ยนเดือนกลับไม่เริ่มนับ 1 ใหม่ แต่กลับปรากฎ LabNo ต่อเนื่องไป
เมื่อไม่ set date ในฟอร์ม กลับ นับ 1 ให้ เมื่อ set date กลับให้เลขที่ต่อเนื่อง ไมนับ 1 ใหม่
แก้มาหลายวันแล้วไม่สำเร็จครับ

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

1 @R06688
ขอโทษด้วยครับ T_LabNo ต้องเป็น T_TPT_LabNo นะครับ พิมพ์ผิดไป
2 @R06692
คุณใช้เงื่อนไขใน Dmax กับ Dcount ผิดครับ
เท่าที่ดู เห็นว่าตารางของคุณ ไม่มีฟิลด์ที่ชื่อ tDate
แต่คุณเขียนให้มันเข้าไปค้นข้อมูลโดยตรวจสอบเงื่อนไขจากฟิลด์ชื่อ tDate ดังนั้นผลการตรวจสอบเงื่อนไข มันจึงออกมาเป็น Null ไม่ใช่ True หรือ False

จริงๆ แล้วคุณควรจะเช็คฟิลด์ที่ชื่อ [Date] ไม่ใช่ tDate
แล้วสิ่งที่จะให้มาเปรียบเทียบที่คุณต้องการ มันคือค่าใน textbox หรือเปล่า หรือว่าจะเป็นวันเวลาปัจจุบันของเครื่อง อันนี้ต้องตรวจสอบความต้องการของตัวเองอีกที

,"format([DATE],'mmyy' = " & format(tDate,'mmyy')

3 @R06693
ในตารางมี field ที่เก็บวันที่ อยู่ในตารางชื่อ field Date แต่ในส่วนคำสั่งผมใช้ผิด   
If DCount("LabNo", "T_TPT_LabNo", "Year(tDate)=" & Year(Now()) & " And Month(tDate)=" & Month(Now()) & "") > 0 Then
        tLabNo = DMax("LabNo", "T_TPT_LabNo", "Year(tDate)=" & Year(Now()) & " And Month(tDate)=" & Month(Now()) & "") + 1
        'เริ่มนับ 1 ใหม่เมื่อเปลี่ยนเดือน
    Else
        tLabNo = 1
    End If

หากต้องเป็น (แก้ไข)

If DCount("LabNo", "T_TPT_LabNo", "Year(Date)=" & Year(Now()) & " And Month(Date)=" & Month(Now()) & "") > 0 Then
        tLabNo = DMax("LabNo", "T_TPT_LabNo", "Year(Date)=" & Year(Now()) & " And Month(Date)=" & Month(Now()) & "") + 1
        'เริ่มนับ 1 ใหม่เมื่อเปลี่ยนเดือน
    Else
        tLabNo = 1
    End If

แสดงว่า ใช้คำสั่งในการตรวจสอบวันที่ ใน DCount และ Dmax แทนที่จะเป็นการไปตรวจสอบวันที่จากตาราง เพื่อหาวันที่ครั้งสุดท้ายของเดือน ที่จะได้ค่าจำนวนครั้งสุดท้ายมากที่สุด กลับกลายเป็นการตรวจสอบวันที่ในส่วนของ Form แทน เพราะ tDate เป็นชื่อ textbox ใน Form ทำให้ไม่สามารถนับเริ่มต้น 1 ใหม่เมื่อเปลี่ยนเดือน ถูกหรือเปล่าครับ
ขอบคุณครับ
4 @R06694
ความเข้าใจของคุณ น่าจะใกล้เคียงแล้วล่ะ (เมื่อเทียบเคียงกับโค้ดที่คุณได้ลองปรับแก้

เพิ่มเติมอีกนิดครับ
ตัวอย่างโค้ดสั้นๆ ที่ผมให้ไป มองให้ดีๆ นะครับ
ฝั่งข้างหน้า (อยู่ก่อนเครื่องหมายเท่ากับ) จะเป็นชื่อฟิลด์ในตาราง (หากใช้ตรงกับคำสงวน เช่นคำว่า Date ที่คุณใช้อยู่นั้น ต้องมีเครื่องหมายสี่เหลี่ยมคร่อมไว้ด้วย) และฝั่งด้านหลัง จะเป็นชื่อ textbox ที่อยู่ในฟอร์ม

ความหมายคร่าวๆ คือ ให้ไปค้นข้อมูล (เลขที่) จากตาราง โดยให้มองหาเฉพาะเรคคอร์ดที่มีวันที่ = ค่าที่อยู่ใน textbox

สรุปง่ายๆ คือให้เปรียบเทียบข้อมูลของตารางกับข้อมูลในฟอร์มปัจจุบัน
5 @R06696
ครับผม code ที่ยกตัวอย่างที่ให้มาก้อดีครับ สั้นกระทัดรัด ของปรับดูแล้วครับ อย่างก้อขอขอบคุณมากครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3214s