ปัญหาเกี่ยวกับ checkbox ครับ
กระทู้เก่าบอร์ด อ.Yeadram

 2,005   5
URL.หัวข้อ / URL
ปัญหาเกี่ยวกับ checkbox ครับ

สวัสดีครับทุกท่าน

คือตอนนี้ผมมีปัญหาเพิ่มเติมคือว่า ผมต้องการทำฟอร์ม export ข้อมูลโดยมีการทำเป็น checkbox ให้เลือกความต้องการ

ผมเคยได้ฟอร์มจากท่าน yeadram มาก่อนแล้วครับ ซึ่งท่าน yeadram ได้ใช้ คำสั่งแบบนี้ครับ
If check_name Then sql = sql & ", [type], [name]"

If check_section Then sql = sql & ", section"


ผลปรากฎว่า ถ้าผมเลือก check_name แต่ไม่ได้เลือก check_section มันจะเิกิด error ฟ้องขึ้นมา่ว่า

"Invalid uses of null"

อ่ะครับ

ไม่เข้าใจ error อ่ะครับ และอีกอย่าง ถ้าผมใส่ end if ลงไป มันก็จะเกิด error เหมือนกัน หรือว่า เมื่อมีการใช้ if โดยไม่มี else ไม่จำเป็นต้องใส่ end if หรอครับ

ขอบคุณครับ

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

1 @R02281
ต้องเอาโค้ดมาให้ดูทั้ง หมด procedure มันเลยครับ ดูแค่นี้ ตอบคำถามไม่ได้
มันเกิด error ที่บรรทัดไหน hilight มาให้ด้วย

เรื่องการใช้ if ..... then เคยเขียนบอกไปแล้วค่อนข้างยาว
ในกระทู้ของ อ.สุภาพ น่าจะยังมีหรือในบอร์ดใหม่นี้มีด้วยหรือเปล่าจำไม่ได้ลองค้นดูก็แล้วกันครับ แบบไหนต้องขึ้นบรรทัดใหม่ แบบไหนไม่ต้อง, แบบไหนต้องจบด้วย end if แบบไหนไม่ต้อง, ส่วนของ else จำเป็นต้องขึ้นบรรทัดใหม่หรือไม่ ในกรณีใดบ้าง เขียนบอกไว้เยอะครับ

เอาเป็นว่าแค่คำถามตรงนี้ ประโยคจากด้านบน ไม่ต้องจบด้วย End if ครับ
2 @R02282
Dim sql As String

sql = "SELECT ID"


If check_name Then sql = sql & ", [type], [name]"

If check_section Then sql = sql & ", section"

If check_position Then sql = sql & ", position"

If check_dept Then sql = sql & ", dept"

If check_startdate Then sql = sql & ", startdate"


If check_ename Then sql = sql & ", ename"


If check_license Then sql = sql & ", license"


If check_derivative Then sql = sql & ", derivative"

If check_derivativeactive Then sql = sql & ", derivativeactive"


If check_derivativeexpire Then sql = sql & ", derivativeexpire"


If check_derivativeid Then sql = sql & ", derivativeid"


If check_derivativestart Then sql = sql & ", derivativestart"


If check_derivativestatus Then sql = sql & ", derivativestatus"


If check_single Then sql = sql & ", single"


If check_singleactive Then sql = sql & ", singleactive"


If check_singleexpire Then sql = sql & ", singleexpire"


If check_singleid Then sql = sql & ", singleid"


If check_singlestart Then sql = sql & ", singlestart"


If check_singlestatus Then sql = sql & ", singlstatus"


If check_fund Then sql = sql & ", fund"

If check_fundactive Then sql = sql & ", fundactive"

If check_fundexpire Then sql = sql & ", fundexpire"

If check_fundid Then sql = sql & ", fundid"

If check_fundstart Then sql = sql & ", fundstart"

If check_fundstatus Then sql = sql & ", fundstatus"


นี้คือ code ทั้งหมดอ่ะครับ ส่วน error จะเกิดตรงบรรทัดที่ไม่ได้มีการ checkbox เอาไว้อ่ะครับ ดังภาพครับ



เช่น ผมเช็ค ชื่อ และ ฝ่ายงาน และกดปุ่ม export มันจะฟ้อง Invalid and null ตรงบรรทัด If check_position Then sql = sql & ", position"

ก็คือมันจะฟ้องตรงบรรทัดที่ใกล้ที่สุดของบรรทัดที่มีการเช็คอ่ะครับ
3 @R02284
อ้อ ครับ คิดออกแล้ว อิอิ ขออภัยที่ให้โค้ดไปอย่างนั้น คิดไม่รอบคอบเองครับ

โดยปกติ ค่าของ checkbox
ถ้ามีการคลิ๊กแล้ว จะคืนค่าดังนี้
- ถ้ามีเครื่องหมายอยู่ มันคือ -1 หรือ True
- ถ้าไม่มีเครื่องหมาย มันคือ 0   หรือ False
แต่ถ้าไม่ได้ถูกคลิ๊กเลย มันคือ Null

เมื่อมันเกิด Null มันก็คือ ไม่ใช่ทั้ง True และไม่ใช่ทั้ง False

โค้ดของเราเช็คแค่ว่า มันเป็น True หรือไม่.......
พอไปเจอเหตุการณ์ที่คนใช้ไม่ยอมคลิ๊ก มันเลยเอ๋อ

เอาล่ะเมื่อเรารู้สาเหตุแล้ว เราก็ตามไปแล้วเลยครับ
ปกติโค้ดเก่าผมแค่เขียนเงื่อนไขว่า if [checkbox] then ...
ที่นี้ให้เพิ่มเงื่อนไขอีกครับ ว่ามันเป็น if [checkbox]=True then ...
4 @R02287
เรียบร้อยครับ

ขอบคุณครับ

อีกอย่างครับ ถ้าสมมติผมจะเขียนเมนูขึ้นมาเพื่อให้แสดง Database Window ขึ้นมาอ่ะครับ (โดยผมตั้งให้มันซ่อนไว้ตอนเริ่มทำงาน จนกว่าจะมีการเรียกใช้ Database Window เพื่อปรับปรุงข้อมูลอ่ะครับ)

ใ้ช้คำสั่งยังไงอ่ะครับ ผมลองศึกษาจากตัวอย่างเก่าๆ เขาใช้คีย์ F11 แต่ผมลองแล้วปรากฎว่าไม่ได้อ่ะครับ

ขอบคุณครับ
5 @R02288
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3702s