กระทู้เก่าบอร์ด อ.Yeadram
5,513 24
URL.หัวข้อ /
URL
ใส่ค่าใน combo box ถ้าไม่มีในรายการ ให้แจ้งเตือน
ใส่ค่าใน combo box ถ้าไม่มีในรายการ ให้แจ้งเตือนว่า "ไม่มีในรายการ คุณต้องการเพิ่มรายการเองหรือไม่"
ต้องเขียนโค๊ด ควบคุมอย่างไรครับ
ต้องเขียนโค๊ด ควบคุมอย่างไรครับ
24 Reply in this Topic. Dispaly 2 pages and you are on page number 1
1 @R13929
คือ จะเขียนแค่ Message box แจ้งเตือนครับ
2 @R13930
ไม่มีในรายการจะเป็น combo box ได้ยังงัยครับ
เพราะค่าที่เลือกมันอยู่ในรายการ
เพราะค่าที่เลือกมันอยู่ในรายการ
3 @R13932
ขอบคุณอาจารย์ Un ครับ
คือ ฟอร์มนี้เป็นข้อมูลของ ตาราง A เฉพาะค่าใน combo box ดึงมาจาก ตาราง B แล้วตั้งค่า combo box
- จำกัดค่าในรายการ = ไม่ใช่
เมื่อเพิ่มข้อมูลแล้วค่าใน combo box ก็จะไปเก็บไว้ ตาราง A ครับ
คือ ฟอร์มนี้เป็นข้อมูลของ ตาราง A เฉพาะค่าใน combo box ดึงมาจาก ตาราง B แล้วตั้งค่า combo box
- จำกัดค่าในรายการ = ไม่ใช่
เมื่อเพิ่มข้อมูลแล้วค่าใน combo box ก็จะไปเก็บไว้ ตาราง A ครับ
4 @R13933
โพสไม่ได้ทดสอบ
5 @R13936
ใช้ event On Not In List ของ combo box ครับ
6 @R13938
โพสไม่ได้ มันขึ้นแบบนี้
Microsoft VBScript runtime error '800a0005'
Invalid procedure call or argument: 'Mid'
/functions/functions_filters.asp, line 37
Microsoft VBScript runtime error '800a0005'
Invalid procedure call or argument: 'Mid'
/functions/functions_filters.asp, line 37
7 @R13939
ลองตัดเป็นช่วงๆ ดูนะครับ
สมมุติ ฟอร์มที่คุณทำชื่อ Form1 คอมโบชื่อ combo1 ฟิลด์ที่เลือกในตารางB ชื่อ Fname
ให้สร้าง Query โดยเลือกตารางB เลือก Fname ใส่เงื่อนไข forms!Form1!combo1 บันทึก Query ชื่อquery1
สมมุติ ฟอร์มที่คุณทำชื่อ Form1 คอมโบชื่อ combo1 ฟิลด์ที่เลือกในตารางB ชื่อ Fname
ให้สร้าง Query โดยเลือกตารางB เลือก Fname ใส่เงื่อนไข forms!Form1!combo1 บันทึก Query ชื่อquery1
8 @R13940
ไปที่ฟอร์ม ที่ combo1 เลือก Event Afterupdate แล้วใส่โคตรนี้ไป
9 @R13941
โพสไม่ได้
10 @R13942
11 @R13943
ขอบคุณครับ
1. ของ คุณPichaiTC ใส่ msgbox ใน event On Not In List ใช้ไม่ได้ msgbox ไม่ขึ้นมาเตือนครับ
2. ของ คุณUn ครับ
2.1 ตรงที่ใส่เงื่อนไข forms![ชื่อForm]!ชื่อcombobox
มันจะขึ้นรายการมาชื่อเดียวครับ คือชื่อที่มันมีอยู่
2.2 ใส่ if dcount ฯลฯ ไป msgbox ก็ไม่ขึ้นมาเตือนครับ
ขอบคุณ คุณอัน ครับ โพสไม่ได้ยังอุตส่าห์พิมพ์ใส่รูปมาโพสให้
น้ำใจงามทั้ง คุณPichaiTC คุณUn ครับ
1. ของ คุณPichaiTC ใส่ msgbox ใน event On Not In List ใช้ไม่ได้ msgbox ไม่ขึ้นมาเตือนครับ
2. ของ คุณUn ครับ
2.1 ตรงที่ใส่เงื่อนไข forms![ชื่อForm]!ชื่อcombobox
มันจะขึ้นรายการมาชื่อเดียวครับ คือชื่อที่มันมีอยู่
2.2 ใส่ if dcount ฯลฯ ไป msgbox ก็ไม่ขึ้นมาเตือนครับ
ขอบคุณ คุณอัน ครับ โพสไม่ได้ยังอุตส่าห์พิมพ์ใส่รูปมาโพสให้
น้ำใจงามทั้ง คุณPichaiTC คุณUn ครับ
12 @R13944
Function CheckExistCode() As Long
Dim DS As ADODB.Recordset
Dim MySQL AS String
Set DS = New ADODB.Recordset
MySQL = "SELECT * FROM ชื่อตาราง WHERE ชื่อฟิลด์ = " & "'" & Trim(ชื่อcombo) & "'" & " ORDER BY ชื่อฟิลด์ที่ต้องการจัดเรียง"
DS.CursorLocation = adUseClient
DS.Open MySQL, CurrentProject.Connection, adOpenForwardOnly, adLockOptimistic, adCmdText
CheckExistCode = DS.RecordCount
DS.Close: Set DS = Nothing
ที่ combobox เหตุการณ์ AfterUpdate
IF CheckExistCode<=0 then
MsgBox "ใส่คำเตือนที่ต้องการ"
End if
ลองทดสอบดูครับ อาจต้องปรับ ตรง sqlStatement บ้าง
Function CheckExistCode() As Long
Dim DS As ADODB.Recordset
Dim MySQL AS String
Set DS = New ADODB.Recordset
MySQL = "SELECT * FROM ชื่อตาราง WHERE ชื่อฟิลด์ = " & "'" & Trim(ชื่อcombo) & "'" & " ORDER BY ชื่อฟิลด์ที่ต้องการจัดเรียง"
DS.CursorLocation = adUseClient
DS.Open MySQL, CurrentProject.Connection, adOpenForwardOnly, adLockOptimistic, adCmdText
CheckExistCode = DS.RecordCount
DS.Close: Set DS = Nothing
ที่ combobox เหตุการณ์ AfterUpdate
IF CheckExistCode<=0 then
MsgBox "ใส่คำเตือนที่ต้องการ"
End if
ลองทดสอบดูครับ อาจต้องปรับ ตรง sqlStatement บ้าง
13 @R13945
ผมลืมปิด Function ด้วย End Function ใส่ต่อท้าย
DS.Close: Set DS = Nothing
End Function
DS.Close: Set DS = Nothing
End Function
14 @R13946
1. กำหนด จำกัดค่าในรายการ = ใช่
2. สร้าง code ใน event On Not In List ดังนี้
Private Sub Combo1_NotInList(NewData As String, Response As Integer)
MsgBox ("ไม่มีในรายการ คุณต้องการเพิ่มรายการเองหรือไม่")
Response = False 'เพื่อยกเลิก message ปกติของ combo box
End Sub
2. สร้าง code ใน event On Not In List ดังนี้
Private Sub Combo1_NotInList(NewData As String, Response As Integer)
MsgBox ("ไม่มีในรายการ คุณต้องการเพิ่มรายการเองหรือไม่")
Response = False 'เพื่อยกเลิก message ปกติของ combo box
End Sub
15 @R13981
1. ของคุณ PichaiTC
มี msgbox เตือนครับ แต่มันไม่ยอมให้ใส่ค่าที่ไม่มีในรายการ
2. ของคุณ ditasilk
มันไม่รู้จักตัวแปรนี้
Dim DS As ADODB.Recordset
ไม่ทราบผมทำอะไรผิดไปไหมทั้ง 2 กรณี
มี msgbox เตือนครับ แต่มันไม่ยอมให้ใส่ค่าที่ไม่มีในรายการ
2. ของคุณ ditasilk
มันไม่รู้จักตัวแปรนี้
Dim DS As ADODB.Recordset
ไม่ทราบผมทำอะไรผิดไปไหมทั้ง 2 กรณี
16 @R13982
ลองเล่นแบบนี้ดูนะคะ
สมมติว่า Text1 คือ Cobbo box
แล้วก็สมมติว่าใน Text1 มันมีอยู่ 5 รายการให้เลือก
โค้ดน่าจะใช้ประมาณนี้ได้นะคะ
Private Sub Text1_AfterUpdate()
If [Text1] = ("รายการที่1") Then GoTo Run
If [Text1] = ("รายการที่1") Then GoTo Run
If [Text1] = ("รายการที่1") Then GoTo Run
If [Text1] = ("รายการที่4") Then GoTo Run
If [Text1] = ("รายการที่5") Then GoTo Run
MsgBox (" ไม่มีในรายการ คุณต้องการเพิ่มรายการเองหรือไม่ "), 0, "คำเตือน"
Me.[Text1].SetFocus
Run:
ไปคำสั่งอื่นๆต่อไป
ลองดัดแปลงเล่นดูนะคะ หนูก็ยังไม่ได้ทดลองเหมือนกัน
สมมติว่า Text1 คือ Cobbo box
แล้วก็สมมติว่าใน Text1 มันมีอยู่ 5 รายการให้เลือก
โค้ดน่าจะใช้ประมาณนี้ได้นะคะ
Private Sub Text1_AfterUpdate()
If [Text1] = ("รายการที่1") Then GoTo Run
If [Text1] = ("รายการที่1") Then GoTo Run
If [Text1] = ("รายการที่1") Then GoTo Run
If [Text1] = ("รายการที่4") Then GoTo Run
If [Text1] = ("รายการที่5") Then GoTo Run
MsgBox (" ไม่มีในรายการ คุณต้องการเพิ่มรายการเองหรือไม่ "), 0, "คำเตือน"
Me.[Text1].SetFocus
Run:
ไปคำสั่งอื่นๆต่อไป
ลองดัดแปลงเล่นดูนะคะ หนูก็ยังไม่ได้ทดลองเหมือนกัน
17 @R13983
เรียนคุณมาลีครับ ผมไม่รู้จะใส่ End if ตรงบรรทัดไหน
if มีหลายตัว หรือต้องใส่ให้ครบทุกตัว
if มีหลายตัว หรือต้องใส่ให้ครบทุกตัว
18 @R13984
ขอโทษครับ ก็ต้องใช้ Elseif สิครับ
แต่ปัญหาคือ
1. ข้อมูลใน รายการ combo box มีมากกว่า 1,000 รายการ
จะทำอย่างไร
2. ข้อมูลใน combo box ดึงมาจากอีกตารางซึ่งค่าอาจเปลี่ยนแปลงได้เสมอ
แต่ปัญหาคือ
1. ข้อมูลใน รายการ combo box มีมากกว่า 1,000 รายการ
จะทำอย่างไร
2. ข้อมูลใน combo box ดึงมาจากอีกตารางซึ่งค่าอาจเปลี่ยนแปลงได้เสมอ
19 @R13985
-ตามวิธีนี้ หนูลองทำแล้วไม่ต้องใส่ End if เลยค่ะ ไม่ทราบว่ามันผ่านได้อย่างไร
-รายการของคุณ กิติศักดิ์ มีมากกว่า 1.000 รายการ(ทำไมมากจัง) แถมยังมีการเปลี่ยนแปลงได้เสมออีก วิธี้นี้ ถึงแม้ได้ ก็คงจะไม่ไหวกระมัง
ต้องคิดหาวิธีอื่นแล้วละค่ะ
-รายการของคุณ กิติศักดิ์ มีมากกว่า 1.000 รายการ(ทำไมมากจัง) แถมยังมีการเปลี่ยนแปลงได้เสมออีก วิธี้นี้ ถึงแม้ได้ ก็คงจะไม่ไหวกระมัง
ต้องคิดหาวิธีอื่นแล้วละค่ะ
20 @R13986
-ความเข้าใจของหนูคิดว่า คุณกิติศักดิ์ น่าจะต้องการเพียงแค่ตรวจสอบค่าในฟีลด์ Combo box ที่อยู่ในตารง B ว่ามีตามที่เราคีย์เข้าไปหรือไม่
-หากไม่มี ก็ให้เพียงขึ้น msg แจ้งให้ทราบเท่านั้น
-หากเป็นตามที่หนูเ้ข้าใจ ลองเปลี่ยนมาใช้วิธีตรวจสอบค่าแทนจะดีกว่าไหมคะ
-สมมติว่าที่ฟอร์ม มี Text1 สำหรับคีย์ข้อมูล
-หากไม่มี ก็ให้เพียงขึ้น msg แจ้งให้ทราบเท่านั้น
-หากเป็นตามที่หนูเ้ข้าใจ ลองเปลี่ยนมาใช้วิธีตรวจสอบค่าแทนจะดีกว่าไหมคะ
-สมมติว่าที่ฟอร์ม มี Text1 สำหรับคีย์ข้อมูล
Private Sub Text1_AfterUpdate()
If IsNull(DLookup("[ฟิลด์คอมโบในตารางB]", "[ตารางB]", "[ฟิลด์คอมโบในตารางB] Like '" & Text1 & "'")) Then
MsgBox (" ไม่มีในรายการ คุณต้องการเพิ่มรายการเองหรือไม่ "), 0, "คำเตือน"
End If
Time: 0.3231s