Combo เป็นค่าว่าง อ้างอิงยังงัยครับ
กระทู้เก่าบอร์ด อ.Yeadram

 8,765   9
URL.หัวข้อ / URL
Combo เป็นค่าว่าง อ้างอิงยังงัยครับ

คือ Combo Box ผมเป็นค่าว่างอยู่ ผมเขียนคำสั่งว่า

If Me.ชื่อคอมโบ = Null Then
            MsgBox "ให้เลือกค่าของคอมโบก่อน...", vbOKCancel, "Un"
    Me.ชื่อคอมโบ.SetFocus
Else

แล้วก็ลองอีกคือ

If (Me.ชื่อคอมโบ) Is Null Then
            MsgBox "ให้เลือกค่าของคอมโบก่อน...", vbOKCancel, "Un"
    Me.ชื่อคอมโบ.SetFocus
Else

แล้วก็ลองอีกคือ

If Me.ชื่อคอมโบ="" Then
            MsgBox "ให้เลือกค่าของคอมโบก่อน...", vbOKCancel, "Un"
    Me.ชื่อคอมโบ.SetFocus
Else

ทั้ง 3 อย่างมันส่งค่า Else หมดเลยครับ ใครพอจะทราบมั้ยครับว่า
ต้องใช้อย่างไรมันถึงจะเข้าใจว่า Combo เป็นค่าว่าง

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

1 @R05718
isnull(me.ชื่อคอมโบ) then
2 @R05751
ทดสอบ
3 @R05752
ผมเข้ามาตอบกระทู้นี้หลายวันแล้วมันตอบไม่ได้ แปลกใจ วันนี้ตอบได้
4 @R05753
แบบของคุณรักน้องบิวท์ ผมก็ทดสอบแล้วไม่ได้เหมือนกันครับ
5 @R05756
ลอง
if isnull(me.ชื่อคอมโบ) =true or me.ชื่อคอมโบ="" then
6 @R05758
เราจะแน่ใจได้อย่างไรว่า control นั้นๆ เป็นค่าว่าง

ทดสอบ.....
me.combo.setfocus
debug.print "text? = " & me.combo.text
debug.print "len? = " & lent(me.combo)
debug.print "value? = " & me.combo.value
debug.print "is null? = " & isnull(me.combo)
debug.print "is no null? = " & (me.combo="")
debug.print "is not null? = " & (not isnull(me.combo))
msgbox "Debug Now"

7 @R05759
ผมลองใช้ของคุณ Nova แล้วใช้ได้ครับ ขอบพระคุณทุกท่านที่สละเวลา
มาตอบ ร่วมคิดกันครับ ผมรู้สึกสนุกมากขึ้นเวลาติดอะไรนิดๆ หน่อยๆ
แล้วทำได้ บอร์ดนี้เป็นบอร์ดที่ดีมากๆ ครับ

คุณ yeadram ครับคำสั่งนี้ผมไม่เคยใช้ มันคือให้ปริ้นค่าใน Combo
ใช่มั้ยครับ พอดีเครื่องไม่ได้ต่อ ปริ้นเตอร์ เลยไม่ได้ลองครับ
8 @R05769
การ Debug เป็นของคู่กาย กับการเขียนโปรแกรมนะครับ
ควรใช้ให้เป็นประโยชน์
เมื่อเราต้องการทราบคำตอบแบบชั่วคราว อาจจะเพื่อการทดสอบโค้ดหรือทดสอบผลลัพธ์จากการคำนวนใดๆ มือใหม่ๆ มักจะใช้ msgbox เพื่อให้โปรแกรมแจ้งผลออกมา ซึ่งพอใช้บ่อยๆ ก็มักจะรำคาญที่ต้องคอยกดปุ่ม OK

อย่างเช่นเราเขียนโค้ด ให้มีการวนลูป แล้วผลไม่ปรากฎตามที่เราคาดการณ์
เราจึงอยากรู้ว่า แต่ละรอบของลูป มันเกิดอะไรขึ้น ค่าตัวแปรแต่ละตัว มีอะไรผิดเพี้ยนไปหรือเปล่า เราก็อาจจะแทรกบรรทัดคำสั่ง เพื่อจะดูว่าค่าของแปรในแต่ละรอบของลูป มันถูกต้องตามที่คาดการหรือไม่
x = 0
for i = 1 to 10
if y < 10 then x = x+1
msgbox x
next

การใช้ msgbox เพื่อตรวจสอบค่าของ x ในแต่ละรอบ จะทำให้รำคาญ
เราควรใช้ การ Debug แทน

x = 0
for i = 1 to 10
if y < 10 then x = x+1
debug.print x
next

ซึ่งการ Debug ก็คือมันจะปริ๊นท์คำตอบมาไว้ให้เรา (ข้อมูลชั่วคราว เมื่อปิดโปรแกรม ค่าเหล่านี้จะหายโดยอัตโนมัติ)
เมื่อเราต้องการแสดงผล ที่มันปริ๊นท์ ออกมา ก็กดปุ่ม Ctl+G หรือ
ถ้าคุณเปิดหน้าต่าง VBA อยู่ให้เลือกเมนู View > Immediate window
จะเห็นค่าเหล่านั้นครับ

เหมาะสำหรับการตรวจสอบ ผลการคำนวนแบบชั่วคราว
เมื่อนำโปรแกรมไปใช้จริง "ควร" หรือ "ต้อง" ลบบรรทัดคำสั่ง debug ทั้งหลายออกให้หมดเสียก่อนครับ

ไม่ได้ใช้ปริ๊นท์เ??อร์ใดๆ หรอกครับ
9 @R05770
ขอบคุณมากครับ ผมใช้ msgbox จริงๆ ครับ เวลามัน Err เอา msgbox ไปใส่ในแต่ละบรรทัด เพื่อจะดูว่า Err บรรทัดไหน แล้วมาหาอีกที

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