คำสั่ง DMax เริ่มต้นไม่ได้ครับ ระบบฟ้อง Error
กระทู้เก่าบอร์ด อ.Yeadram

 1,667   6
URL.หัวข้อ / URL
คำสั่ง DMax เริ่มต้นไม่ได้ครับ ระบบฟ้อง Error

ผมใช้คำสั่งนี้ครับ
mMax = DMax("Val([No_Document])", "Data", "[No_Document]")

ทราบว่ามัน Error เพราะ ฟิลด์ No_Document มันเริ่มต้น Record แรกเลย ตอนแรกคิดว่าคำสั่งนี้น่าจะได้

If No_Document = Null then
   No_Document = 1
Else
   mMax = DMax("Val([No_Document])", "Data", "[No_Document]")
Endif

แต่ก็ไม่ได้ครับ รบกวนด้วยครับ

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

1 @R14899
มันฟ้องคำนี้ครับ

"Invalid Use of Null"
2 @R14900
If MsgBox("ต้องการเพิ่มrecord ใหม่", vbQuestion + vbYesNo, "แจ้ง") = vbYes Then
If IsNull(DLookup("no_document", "Data")) = True Then
   no_document = 1
Else
    DoCmd.GoToRecord , , acNewRec
   no_document = Nz(DMax("no_Document", "Data") + 1)
End If
End If
ไม่ทราบว่าสิ่งที่ต้องการเพิ่มrecord ใหม่หรือเปล่า กรณีนี้ใช้กับฟอร์มที่ผูกกับตารางครับ ถ้าฟอร์ม unboundช่ก็แก้ที่ elseให้ no_document ขึ้นก่อน จากนั้น run sql
3 @R14919
ขอบคุณ คุณ sorn มากครับ ผมงมอยู่นานเลย
4 @R14920
If No_Document = Null then
   No_Document = NZ(DMax("Val([No_Document])", "Data", "[No_Document]"),0) +1
Endif
5 @R14921
ถ้าค่า No_Document เป็นตัวเลขอยู่แล้วไม่มี Val() ก็ได้
If No_Document = Null then
   No_Document = NZ(DMax("[No_Document]", "Data", "[No_Document]"),0) +1
Endif

ถ้าค่า No_Document เป็นตัวเลขที่เก็บเป็น string (text) ใส่ Val() เพื่อแปลงค่า max ก่อนบวก 1
If No_Document = Null then
   No_Document = Val(NZ(DMax("[No_Document]", "Data", "[No_Document]"),0)) +1
Endif

Code ของคุณ Sorn ได้คำตอบที่ถูกต้อง แต่ใช้ code เปลืองครับ มีการตรวจสอบและวาง function ที่ไม่จำเป็นอยู่ด้วย
6 @R14926
ขอบคุณ คุณ PichaiTC ที่มาช่วยตอบอีกแนวทางครับ

ผมนำรหัสของคุณ Sorn ไปใช้แค่ส่วนนี้
If IsNull(DLookup("no_document", "Data")) = True Then
ก็สมบูรณ์แล้วครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2444s