กระทู้เก่าบอร์ด อ.Yeadram
1,405 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 จากเดือนเมษายน แทนเดือนมกราคม จะต้องแก้ไขคำสั่งด้านบนยังไงบ้างค่ะ พยายามหลายรอบแล้ว ทำไม่ได้สักทีค่ะ รบกวนช่วยแนะนำด้วยนะคะ ขอบพระคุณมากค่ะ
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
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
จากตัวอย่างนี้ หนูให้ข้อมูล 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
Time: 0.2100s
- จุดตรวจสอบแรก ถ้ายังไม่มีรายการใดๆ เลย ให้ 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