ต้องการให้ข้อมูลนับหนึ่งใหม่ตามเดือนที่กำหนด
กระทู้เก่าบอร์ด อ.Yeadram

 1,408   2
URL.หัวข้อ / URL
ต้องการให้ข้อมูลนับหนึ่งใหม่ตามเดือนที่กำหนด

Private Sub Command3_Click()
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
If MsgBox("abcd", vbQuestion + vbYesNo, "1234") = vbYes Then
If DCount("a", "tblRun") = 0 Then
Me.txta = Date
Me.txtb = 1
ElseIf DCount("b", "tbRun", "year(a)=" & Year(Now)) = 0 Then
DoCmd.GoToRecord , , acNewRec
Me.txta = Date
Me.txtb = 1
Else
DoCmd.GoToRecord , , acNewRec
Me.txta = Date
Me.txtb = DMax("b", "tblRun", "year(a)=" & Year(Now)) + 1
End If
End If
End Sub

สวัสดีค่ะ มือใหม่มากๆ ค่ะ เพิ่งเข้ามาศึกษาเว็บนี้ได้ไม่นานค่ะ ได้ความรู้มากๆ แต่ก็ยังมีหลายๆ หัวข้อที่อ่านดูแล้วก็ยังไม่ค่อยเข้าใจ พอดีไปเจอตัวอย่างจากในเว็บนี้มาอันหนึ่ง ก็เอามาทดลองทำดู จากตัวอย่างเขาให้ข้อมูลใน b เริ่นต้นนับ 1 ใหม่เมื่อเปลี่ยนวันใหม่ หนูก็เอามาหัดทำจนสามารถให้ข้อมูลใน b เริ่มต้นนับ 1 ใหม่เมื่อเปลี่ยนเดือนใหม่ได้ค่ะ จากตัวอย่างด้านบนให้ข้อมูลใน b เริ่มต้นนับ 1 ใหม่เมื่อเปลี่ยนปีใหม่ แต่ถ้าเราต้องการให้ข้อมูลใน b เริ่มนับ 1 ใหม่ จากเดือนที่เรากำหนดเอง เช่น เริ่มนับ 1 จากเดือนเมษายน แทนเดือนมกราคม จะต้องแก้ไขคำสั่งด้านบนยังไงบ้างค่ะ พยายามหลายรอบแล้ว ทำไม่ได้สักทีค่ะ รบกวนช่วยแนะนำด้วยนะคะ ขอบพระคุณมากค่ะ

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

1 @R06995
ตามตัวอย่างที่ให้มา
- จุดตรวจสอบแรก ถ้ายังไม่มีรายการใดๆ เลย ให้ b =1
แต่ถ้าเริ่มมีรายการอยู่แล้วให้เช็คเงื่อนไขที่ 2
- จุดตรวจสอบที่สอง มองหาวันที่ในฟิลด์ a ดูว่าเป็นวันที่ของปีนี้หรือไม่ (เงื่อนไขคือ ปีของฟิลด์ a เป็นปีนี้หรือไม่)
ถ้าไม่มี (แสดงว่ายังไม่เคยมีข้อมูลของปีนี้อยู่เลย) ให้ b = 1
- ถ้ามีแล้ว (แสดงว่ารายการของปีนี้เริ่มมีบันทึกไปบ้างแล้ว) ให้ทำการรันเลขที่อัตโนมัติ โดยเอาลำดับสุดท้าย ของข้อมูลปีนี้ (เงื่อนไขคือ ปี ของฟิลด์ a ต้องเป็นปีนี้) มาบวกด้วย 1

ถ้าจะแก้ไขตามที่คุณต้องการคือให้เริ่มนับปีจาก เดือนเมษายน ก็ต้องแก้สองจุดครับ คือในเงื่อนไขที่สอง กับเงื่อนไขของการหาเลขที่สุดท้าย

การเพิ่มเงื่อนไขในการตรวจสอบจุดที่สอง
จากปกติ
ElseIf DCount("b", "tbRun", "year(a)=" & Year(Now)) = 0 Then
อาจต้องเพิ่มเป็น
ElseIf DCount("b", "tbRun", "year(a)=" & Year(Now) & " and month(a) >=4") = 0 Then

การเพิ่มเงื่อนไขในการหาเลขที่สุดท้าย
จากปกติ
Me.txtb = DMax("b", "tblRun", "year(a)=" & Year(Now)) + 1
อาจต้องแก้โดยซ้อน if เข้าไปอีกรอบ เป็น

If DCount("b", "tbRun", "year(a)=" & Year(Now)) = 0 Then
Me.txtb = DMax("b", "tblRun", "year(a)=" & Year(Now)-1) + 1
else
Me.txtb = DMax("b", "tblRun", "year(a)=" & Year(Now)) + 1
end if
2 @R07043
เรียน อ.yeadram ขอบพระคุณมากค่ะ ที่กรุณาแนะนำ วันนี้หนูมีอีกตัวอย่าง อยากให้ อ.yeadram ช่วยสอนและอธิบายด้วยนะคะ ว่าทำไมถึงเป็นแบบนี้ ตามรูปที่แนบมาค่ะ
จากตัวอย่างนี้ หนูให้ข้อมูล b เริ่มนับหนึ่งที่เดือน 3 และเรียงต่อเนื่องไปเรื่อยๆ แต่พอเริ่มเดือน 3 ใหม่ ข้อมูล b กลับเรียงต่อจากเลขเดิมไปเลย ทำไมมันไม่ยอมเป็น 1 ตามที่เรากำหนดไว้ล่ะค่ะ


Private Sub Command3_Click()

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
If MsgBox("abcd", vbQuestion + vbYesNo, "testcommand") = vbYes Then

If DCount("a", "run_tbl") = 0 Then
Me.txta = Date
Me.txtb = 1

ElseIf DCount("b", "run_tbl", "month(a)=" & Month(Now) >= 3) = 0 Then
DoCmd.GoToRecord , , acNewRec
Me.txta = Date
Me.txtb = 1

Else
DoCmd.GoToRecord , , acNewRec
Me.txta = Date
Me.txtb = DMax("b", "run_tbl") + 1


End If
End If
End Sub

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