กระทู้เก่าบอร์ด อ.Yeadram
1,598 6
URL.หัวข้อ /
URL
การตรวจสอบตามจำนวนที่ระบุ
สวัสดีครับอาจารย์
ผมรบกวนสอบถามหน่อยครับ
คือผมต้องการที่จะตรวจสอบจำนวนให้ตรงกับที่กำหนดไว้ครับ
ขยายความคือว่า ผมทำ Text Box ไว้ 2 ตัวคือ
1.Me.txtCase เป็นจำนวนตัวเลขที่ต้องกำหนดไว้เช่น 32
2.Me.txtCountCase เป็นจำนวนตัวเลข ที่ได้จากการนับ
ในที่นี้ผมใช้นับจำนวนลังที่บรรจุตู้คอนเทนเนอร์ครับ
คือถ้าผมสแกนลังเกิน 32 ลังโปรแกรมต้องฟ้องว่า
ตู้เต็มแล้วประมาณนี้ครับ
ผมใช้ตัวนี้มันไม่ได้ครับ
If Me.txtCountCase >= Me.txtCase Then
msgbox"ตู้เต็มแล้วครับ",vbinformation,"แจ้งตู้เต็มแล้ว"
รบกวนท่านอาจารย์ด้วยครับ
ขอพระคุณครับ
ผมรบกวนสอบถามหน่อยครับ
คือผมต้องการที่จะตรวจสอบจำนวนให้ตรงกับที่กำหนดไว้ครับ
ขยายความคือว่า ผมทำ Text Box ไว้ 2 ตัวคือ
1.Me.txtCase เป็นจำนวนตัวเลขที่ต้องกำหนดไว้เช่น 32
2.Me.txtCountCase เป็นจำนวนตัวเลข ที่ได้จากการนับ
ในที่นี้ผมใช้นับจำนวนลังที่บรรจุตู้คอนเทนเนอร์ครับ
คือถ้าผมสแกนลังเกิน 32 ลังโปรแกรมต้องฟ้องว่า
ตู้เต็มแล้วประมาณนี้ครับ
ผมใช้ตัวนี้มันไม่ได้ครับ
If Me.txtCountCase >= Me.txtCase Then
msgbox"ตู้เต็มแล้วครับ",vbinformation,"แจ้งตู้เต็มแล้ว"
รบกวนท่านอาจารย์ด้วยครับ
ขอพระคุณครับ
6 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R08135
ขอโทษครับที่อธิบายไม่ละเอีดย
ผมใช้กับเหตุการณ์ onClick โดยผ่าน Command botton ครับ
โดย Me.txtCase ข้อมูลตัวเลขได้จากการ พิมพ์เข้าไปครับ
ส่วน Me.txtCountCase ได้จำนวนตัวเลขจากการนับ จากข้อมูล
ที่ได้บันทึกแล้วครับ โดยใช้ Me.txtCountCase = DCount("LCCASE", "qryCountCase") ครับผม
ผมไม่แน่ใจว่ามันจะเกี่ยวกับการกำหนดค่าตัวแปรหรือเปล่าครับ
เพราะที่ผมทำไม่ได้ประกาศตัวแปรอะไรครับ
จึงเรียนมาเพื่อขอความอนุเคราะห์อีกครั้งครับ
ขอบคุณมากครับ
ผมใช้กับเหตุการณ์ onClick โดยผ่าน Command botton ครับ
โดย Me.txtCase ข้อมูลตัวเลขได้จากการ พิมพ์เข้าไปครับ
ส่วน Me.txtCountCase ได้จำนวนตัวเลขจากการนับ จากข้อมูล
ที่ได้บันทึกแล้วครับ โดยใช้ Me.txtCountCase = DCount("LCCASE", "qryCountCase") ครับผม
ผมไม่แน่ใจว่ามันจะเกี่ยวกับการกำหนดค่าตัวแปรหรือเปล่าครับ
เพราะที่ผมทำไม่ได้ประกาศตัวแปรอะไรครับ
จึงเรียนมาเพื่อขอความอนุเคราะห์อีกครั้งครับ
ขอบคุณมากครับ
3 @R08138
ผมลองจำลอง คำสั่ง ดังนี้
PRIVATE Sub Command0_Click()
On Error Goto Err_Handler
Me.txtCountCase = DCount("LCCASE", "qryCountCase")
If Me.txtCountCase >= Me.txtCase Then [Red]'Me.txtCase=32[/Color]
msgbox"ตู้เต็มแล้วครับ",vbinformation,"แจ้งตู้เต็มแล้ว"
else
msgbox "ตู้ยังไม่เต็ม"
end if
Err_Handler:
Msgbox Err.Description & " (" & Err.Number & ")"
exit sub
End sub
ที่คุณ Boonme ทดสอบ แล้ว
1 me.txtCountCase ได้ค่าเท่าไหร่ เทียบกับความจริงถูกต้องมั้ย
2 มี ฟ้อง error หรือไม่
3 มันเข้า condition ไหน
[Red]ตอนนี้ใช้ตัวนี้แล้วมันไม่ได้[/Color] แล้วมันปฏิกิริยาอย่างไร ผู้รู้จะได้ช่วยกันตอบครับ
PRIVATE Sub Command0_Click()
On Error Goto Err_Handler
Me.txtCountCase = DCount("LCCASE", "qryCountCase")
If Me.txtCountCase >= Me.txtCase Then [Red]'Me.txtCase=32[/Color]
msgbox"ตู้เต็มแล้วครับ",vbinformation,"แจ้งตู้เต็มแล้ว"
else
msgbox "ตู้ยังไม่เต็ม"
end if
Err_Handler:
Msgbox Err.Description & " (" & Err.Number & ")"
exit sub
End sub
ที่คุณ Boonme ทดสอบ แล้ว
1 me.txtCountCase ได้ค่าเท่าไหร่ เทียบกับความจริงถูกต้องมั้ย
2 มี ฟ้อง error หรือไม่
3 มันเข้า condition ไหน
[Red]ตอนนี้ใช้ตัวนี้แล้วมันไม่ได้[/Color] แล้วมันปฏิกิริยาอย่างไร ผู้รู้จะได้ช่วยกันตอบครับ
4 @R08165
สวัสดีครับอาจารย์
มันไม่ฟ้องอะไรเลยครับ มันหลุดไปทำงานอื่นเฉยเลยครับ
ผมเลยไม่แน่ใจว่าผมเขียน code ให้โปรแกรมมันทำงานไม่ถูก
หรือเปล่าครับ จึงเลยส่งให้อาจารย์ดูเลยครับ
รบกวนด้วยครับท่านอาจารย์
ขอบคุณครับ
Private Sub txtConfirm_Click()
'ans = MsgBox(" คุณยืนยันต้องการบันทึกข้อมูลไม่", vbOKCancel, "กรุณาตรวจสอบข้อมูล")
' If ans = 6 Then
'Dim sql As String
'sql = "Insert into tbdataload (lcdate,lccnno,lctkno,lcslno,lcbkno,lctlcs,lcrpby)"
'sql = sql & " values(" & txtStartHo & "," & txtCont & "," & txtTruck & ",'" & txtSeal & "','" & txtBook & "','" & txtCase & "','" & txtRespond & "')"
'DoCmd.SetWarnings False
'DoCmd.RunSQL sql
'MsgBox "แจ้งการบันทึกข้อมูล", vbInformation, "บันทึกข้อมูลเสร็จแล้วครับ"
'Else
'End
' End If
'ตรวจสอบการสแกนเคสเกิน ต้องเท่าจำนวนที่กำหนดจะโหลดภายในตู้เท่านั้น
Me.txtCountCase = DCount("LCCASE", "qryCountCase")
If Me.txtCountCase > Me.txtCase Then 'Me.txtCase=32
MsgBox "ตู้เต็มแล้วครับ", vbInformation, "แจ้งตู้เต็มแล้ว"
Exit Sub
End If
' If Me.txtCountCase >= Me.txtCase Then
'MsgBox "จำนวน Case ในตู้เกินที่กำหนด", vbInformation, "จำนวนเกินครับ"
'Exit Sub
'End If
'+++++++++++++++++++++++++++++++++++++++++++++++++++
'ตัวสอบการสแกน engine no ซ้ำ
If (Eval("DLookUp(""[LCAENO]"",""[tbDataLoad]"",""[LCAENO] = Form.[txtbcscan] "") is not null")) Then
MsgBox "Engine No" & " " & Chr(10) & Chr(13) & [txtBcScan] & " " & "มีแล้ว", vbInformation, "ข้อมูลซ้ำ"
DoCmd.GoToControl "txtbcscan"
Exit Sub
End If
'+++++++++++++++++++++++++++++++++++++++++++++++++++
If (Eval("DLookUp(""[PKAENO]"",""[actdat]"",""[PKAENO] = Form.[txtbcscan] "") is null")) Then
MsgBox "Engine No" & " " & Chr(10) & Chr(13) & [txtBcScan] & " " & "ไม่มีในระบบ ACL System", vbInformation, "ไม่พบข้อมูล"
DoCmd.GoToControl "txtbcscan"
Exit Sub
End If
'+++++++++++++++++++++++++++++++++++++++++++++++++++
'ตรวจสอบกรณีที่ยังไม่ได้สแกน engine no
DoCmd.GoToControl "txtbcscan"
If IsNull((txtBcScan)) Or txtBcScan = "" Then
MsgBox "ยังไม่ได้ Scan Engine No", vbInformation, "กรุณาบันทึกบ้อมูล"
DoCmd.GoToControl "txtbcscan"
Exit Sub
End If
'ตรวจสอบการบันทึกข้อมูลหน้า ฟอร์ม
If IsNull((txtStartHo)) Or txtStartHo = "" Then
MsgBox "ยังไม่ได้บันทึก Loading Date", vbInformation, "กรุณาบันทึกบ้อมูล"
DoCmd.GoToControl "txtStartHo"
Exit Sub
End If
If IsNull((txtCont)) Or txtCont = "" Then
MsgBox "ยังไม่ได้บันทึก Container No", vbInformation, "กรุณาบันทึกบ้อมูล"
DoCmd.GoToControl "txtcont"
Exit Sub
End If
'+++++++++++++++++++++++++++++++++++++++++++++++++++
If IsNull((txtTruck)) Or txtTruck = "" Then
MsgBox "ยังไม่ได้บันทึก Truck No", vbInformation, "กรุณาบันทึกบ้อมูล"
DoCmd.GoToControl "txttruck"
Exit Sub
End If
'+++++++++++++++++++++++++++++++++++++++++++++++++++
If IsNull((txtSeal)) Or txtSeal = "" Then
MsgBox "ยังไม่ได้บันทึก Seal No", vbInformation, "กรุณาบันทึกบ้อมูล"
DoCmd.GoToControl "txtseal"
Exit Sub
End If
If IsNull((txtBook)) Or txtBook = "" Then
MsgBox "ยังไม่ได้บันทึก Booking No", vbInformation, "กรุณาบันทึกบ้อมูล"
DoCmd.GoToControl "txtbook"
Exit Sub
End If
If IsNull((txtCase)) Or txtCase = "" Then
MsgBox "ยังไม่ได้บันทึก Case Total", vbInformation, "กรุณาบันทึกบ้อมูล"
DoCmd.GoToControl "txtcase"
Exit Sub
End If
If IsNull((txtRespond)) Or txtRespond = "" Then
MsgBox "ยังไม่ได้บันทึก Container No", vbInformation, "กรุณาบันทึกบ้อมูล"
DoCmd.GoToControl "txtrespond"
Exit Sub
End If
'Insret Data to Table
sql = "insert into tbdataload (lcdate,lccnno,lctkno,lcslno,lcbkno,lctlcs,lcrpby"
sql = sql & ",LCEMDL,LCPDTE,LCPCNO,LCCOLR,LCPTYP,LCCASE,LCPYMD,LCFSMD,LCFSTY,LCAENO,LCAFNO,LCRCDT,LCRCTM)"
sql = sql & " values('" & txtStartHo & "','" & txtCont & "','" & txtTruck & "','" & txtSeal & "','" & txtBook & "','" & txtCase & "','" & txtRespond & "'"
sql = sql & ",'" & txtPKEMDL & "','" & txtPKPDTE & "','" & txtPKPCNO & "'"
sql = sql & ",'" & txtPKCOLR & "','" & txtPKPTYP & "','" & txtPKCASE & "','" & txtPKPYMD & "','" & txtPKFSMD & "'"
sql = sql & ",'" & txtPKFSTY & "','" & txtPKAENO & "','" & txtPKAFNO & "','" & txtLCRCDT & "','" & txtLCRCTM & "')"
DoCmd.RunSQL sql
'+++++++++++++++++++++++++++++++++++++++++++++++++++
'Me.txtCountCase = DCount("LCCASE", "qryCountCase")
Refresh
'MsgBox sql
'Debug.Print sql
'DoCmd.SetWarnings False
'_____________________เคลียร์ข้อมูล______
'Dim ctl As Control
'For Each ctl In Controls
'If TypeOf ctl Is TextBox Then ctl.value = ""
'Next
End Sub
สวัสดีครับอาจารย์
มันไม่ฟ้องอะไรเลยครับ มันหลุดไปทำงานอื่นเฉยเลยครับ
ผมเลยไม่แน่ใจว่าผมเขียน code ให้โปรแกรมมันทำงานไม่ถูก
หรือเปล่าครับ จึงเลยส่งให้อาจารย์ดูเลยครับ
รบกวนด้วยครับท่านอาจารย์
ขอบคุณครับ
Private Sub txtConfirm_Click()
'ans = MsgBox(" คุณยืนยันต้องการบันทึกข้อมูลไม่", vbOKCancel, "กรุณาตรวจสอบข้อมูล")
' If ans = 6 Then
'Dim sql As String
'sql = "Insert into tbdataload (lcdate,lccnno,lctkno,lcslno,lcbkno,lctlcs,lcrpby)"
'sql = sql & " values(" & txtStartHo & "," & txtCont & "," & txtTruck & ",'" & txtSeal & "','" & txtBook & "','" & txtCase & "','" & txtRespond & "')"
'DoCmd.SetWarnings False
'DoCmd.RunSQL sql
'MsgBox "แจ้งการบันทึกข้อมูล", vbInformation, "บันทึกข้อมูลเสร็จแล้วครับ"
'Else
'End
' End If
'ตรวจสอบการสแกนเคสเกิน ต้องเท่าจำนวนที่กำหนดจะโหลดภายในตู้เท่านั้น
Me.txtCountCase = DCount("LCCASE", "qryCountCase")
If Me.txtCountCase > Me.txtCase Then 'Me.txtCase=32
MsgBox "ตู้เต็มแล้วครับ", vbInformation, "แจ้งตู้เต็มแล้ว"
Exit Sub
End If
' If Me.txtCountCase >= Me.txtCase Then
'MsgBox "จำนวน Case ในตู้เกินที่กำหนด", vbInformation, "จำนวนเกินครับ"
'Exit Sub
'End If
'+++++++++++++++++++++++++++++++++++++++++++++++++++
'ตัวสอบการสแกน engine no ซ้ำ
If (Eval("DLookUp(""[LCAENO]"",""[tbDataLoad]"",""[LCAENO] = Form.[txtbcscan] "") is not null")) Then
MsgBox "Engine No" & " " & Chr(10) & Chr(13) & [txtBcScan] & " " & "มีแล้ว", vbInformation, "ข้อมูลซ้ำ"
DoCmd.GoToControl "txtbcscan"
Exit Sub
End If
'+++++++++++++++++++++++++++++++++++++++++++++++++++
If (Eval("DLookUp(""[PKAENO]"",""[actdat]"",""[PKAENO] = Form.[txtbcscan] "") is null")) Then
MsgBox "Engine No" & " " & Chr(10) & Chr(13) & [txtBcScan] & " " & "ไม่มีในระบบ ACL System", vbInformation, "ไม่พบข้อมูล"
DoCmd.GoToControl "txtbcscan"
Exit Sub
End If
'+++++++++++++++++++++++++++++++++++++++++++++++++++
'ตรวจสอบกรณีที่ยังไม่ได้สแกน engine no
DoCmd.GoToControl "txtbcscan"
If IsNull((txtBcScan)) Or txtBcScan = "" Then
MsgBox "ยังไม่ได้ Scan Engine No", vbInformation, "กรุณาบันทึกบ้อมูล"
DoCmd.GoToControl "txtbcscan"
Exit Sub
End If
'ตรวจสอบการบันทึกข้อมูลหน้า ฟอร์ม
If IsNull((txtStartHo)) Or txtStartHo = "" Then
MsgBox "ยังไม่ได้บันทึก Loading Date", vbInformation, "กรุณาบันทึกบ้อมูล"
DoCmd.GoToControl "txtStartHo"
Exit Sub
End If
If IsNull((txtCont)) Or txtCont = "" Then
MsgBox "ยังไม่ได้บันทึก Container No", vbInformation, "กรุณาบันทึกบ้อมูล"
DoCmd.GoToControl "txtcont"
Exit Sub
End If
'+++++++++++++++++++++++++++++++++++++++++++++++++++
If IsNull((txtTruck)) Or txtTruck = "" Then
MsgBox "ยังไม่ได้บันทึก Truck No", vbInformation, "กรุณาบันทึกบ้อมูล"
DoCmd.GoToControl "txttruck"
Exit Sub
End If
'+++++++++++++++++++++++++++++++++++++++++++++++++++
If IsNull((txtSeal)) Or txtSeal = "" Then
MsgBox "ยังไม่ได้บันทึก Seal No", vbInformation, "กรุณาบันทึกบ้อมูล"
DoCmd.GoToControl "txtseal"
Exit Sub
End If
If IsNull((txtBook)) Or txtBook = "" Then
MsgBox "ยังไม่ได้บันทึก Booking No", vbInformation, "กรุณาบันทึกบ้อมูล"
DoCmd.GoToControl "txtbook"
Exit Sub
End If
If IsNull((txtCase)) Or txtCase = "" Then
MsgBox "ยังไม่ได้บันทึก Case Total", vbInformation, "กรุณาบันทึกบ้อมูล"
DoCmd.GoToControl "txtcase"
Exit Sub
End If
If IsNull((txtRespond)) Or txtRespond = "" Then
MsgBox "ยังไม่ได้บันทึก Container No", vbInformation, "กรุณาบันทึกบ้อมูล"
DoCmd.GoToControl "txtrespond"
Exit Sub
End If
'Insret Data to Table
sql = "insert into tbdataload (lcdate,lccnno,lctkno,lcslno,lcbkno,lctlcs,lcrpby"
sql = sql & ",LCEMDL,LCPDTE,LCPCNO,LCCOLR,LCPTYP,LCCASE,LCPYMD,LCFSMD,LCFSTY,LCAENO,LCAFNO,LCRCDT,LCRCTM)"
sql = sql & " values('" & txtStartHo & "','" & txtCont & "','" & txtTruck & "','" & txtSeal & "','" & txtBook & "','" & txtCase & "','" & txtRespond & "'"
sql = sql & ",'" & txtPKEMDL & "','" & txtPKPDTE & "','" & txtPKPCNO & "'"
sql = sql & ",'" & txtPKCOLR & "','" & txtPKPTYP & "','" & txtPKCASE & "','" & txtPKPYMD & "','" & txtPKFSMD & "'"
sql = sql & ",'" & txtPKFSTY & "','" & txtPKAENO & "','" & txtPKAFNO & "','" & txtLCRCDT & "','" & txtLCRCTM & "')"
DoCmd.RunSQL sql
'+++++++++++++++++++++++++++++++++++++++++++++++++++
'Me.txtCountCase = DCount("LCCASE", "qryCountCase")
Refresh
'MsgBox sql
'Debug.Print sql
'DoCmd.SetWarnings False
'_____________________เคลียร์ข้อมูล______
'Dim ctl As Control
'For Each ctl In Controls
'If TypeOf ctl Is TextBox Then ctl.value = ""
'Next
End Sub
5 @R08436
สวัสดีครับ รบกวนอาจารย์ด้วยครับ
ยังรอคำตอบอยู่คร๊าบบบบบ
ยังรอคำตอบอยู่คร๊าบบบบบ
6 @R08439
คุณBoonmee
ผมไม่ได้อ่าน code หรอกนะครับ อยากแนะนำว่า
ถ้าให้ถูกต้อง เราจะต้องรู้ว่า คำสั่งไหนได้ run ผ่านไปแล้ว
และมีความถูกต้องหรือไม่
เช่น
Me.txtCountCase = DCount("LCCASE", "qryCountCase")
If Me.txtCountCase > Me.txtCase Then 'Me.txtCase=32
MsgBox "ตู้เต็มแล้วครับ", vbInformation, "แจ้งตู้เต็มแล้ว"
Exit Sub
End If
จะต้องตรวจสอบ ว่า me.txtCountCase มีค่าเท่าไหร่
ถ้ามีค่ามากกว่า Me.txtCase จริง ยังไงก็ต้องขึ้น message box แสดงว่า
ตู้เต็มแล้ว และเด้งออกจาก procedure นี้ไป
แต่ในทางตรงข้าม ถ้าตรวจสอบแล้วว่า มีค่าน้อยกว่า ก็ข้าม if cause นี้ไป
ตรงนี้อยากให้ ช่วยตรวจสอบว่า คำสั่งใน นี้มัน run ไปถึงไป
เพราะผมไม่เข้าใจ ที่มันหลุดไปทำงานอื่นคืออะไร
ปล: นอกจากเรื่องคำสั่ง แล้ว มันยังมีผลของตัวเลข มาเกี่ยวข้องด้วย
ไม่มีข้อมูลว่าตัวเลขถูกต้องหรือไม่ จึงไม่สามารถ บอกได้ ว่า error อยู่ตรงไหน
ครับ
ผมไม่ได้อ่าน code หรอกนะครับ อยากแนะนำว่า
ถ้าให้ถูกต้อง เราจะต้องรู้ว่า คำสั่งไหนได้ run ผ่านไปแล้ว
และมีความถูกต้องหรือไม่
เช่น
Me.txtCountCase = DCount("LCCASE", "qryCountCase")
If Me.txtCountCase > Me.txtCase Then 'Me.txtCase=32
MsgBox "ตู้เต็มแล้วครับ", vbInformation, "แจ้งตู้เต็มแล้ว"
Exit Sub
End If
จะต้องตรวจสอบ ว่า me.txtCountCase มีค่าเท่าไหร่
ถ้ามีค่ามากกว่า Me.txtCase จริง ยังไงก็ต้องขึ้น message box แสดงว่า
ตู้เต็มแล้ว และเด้งออกจาก procedure นี้ไป
แต่ในทางตรงข้าม ถ้าตรวจสอบแล้วว่า มีค่าน้อยกว่า ก็ข้าม if cause นี้ไป
ตรงนี้อยากให้ ช่วยตรวจสอบว่า คำสั่งใน นี้มัน run ไปถึงไป
เพราะผมไม่เข้าใจ ที่มันหลุดไปทำงานอื่นคืออะไร
ปล: นอกจากเรื่องคำสั่ง แล้ว มันยังมีผลของตัวเลข มาเกี่ยวข้องด้วย
ไม่มีข้อมูลว่าตัวเลขถูกต้องหรือไม่ จึงไม่สามารถ บอกได้ ว่า error อยู่ตรงไหน
ครับ
Time: 0.2873s
แล้ว การนับ ที่ใส่ใน Me.txtCountCase ทำอย่างไร อยู่ในเหตุการณ์หรือขั้นตอนไหน