กระทู้เก่าบอร์ด อ.Yeadram
2,005 5
URL.หัวข้อ /
URL
ปัญหาเกี่ยวกับ checkbox ครับ
สวัสดีครับทุกท่าน
คือตอนนี้ผมมีปัญหาเพิ่มเติมคือว่า ผมต้องการทำฟอร์ม export ข้อมูลโดยมีการทำเป็น checkbox ให้เลือกความต้องการ
ผมเคยได้ฟอร์มจากท่าน yeadram มาก่อนแล้วครับ ซึ่งท่าน yeadram ได้ใช้ คำสั่งแบบนี้ครับ
ผลปรากฎว่า ถ้าผมเลือก check_name แต่ไม่ได้เลือก check_section มันจะเิกิด error ฟ้องขึ้นมา่ว่า
"Invalid uses of null"
อ่ะครับ
ไม่เข้าใจ error อ่ะครับ และอีกอย่าง ถ้าผมใส่ end if ลงไป มันก็จะเกิด error เหมือนกัน หรือว่า เมื่อมีการใช้ if โดยไม่มี else ไม่จำเป็นต้องใส่ end if หรอครับ
ขอบคุณครับ
คือตอนนี้ผมมีปัญหาเพิ่มเติมคือว่า ผมต้องการทำฟอร์ม 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
2 @R02282
นี้คือ code ทั้งหมดอ่ะครับ ส่วน error จะเกิดตรงบรรทัดที่ไม่ได้มีการ checkbox เอาไว้อ่ะครับ ดังภาพครับ
เช่น ผมเช็ค ชื่อ และ ฝ่ายงาน และกดปุ่ม export มันจะฟ้อง Invalid and null ตรงบรรทัด If check_position Then sql = sql & ", position"
ก็คือมันจะฟ้องตรงบรรทัดที่ใกล้ที่สุดของบรรทัดที่มีการเช็คอ่ะครับ
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 ...
โดยปกติ ค่าของ checkbox
ถ้ามีการคลิ๊กแล้ว จะคืนค่าดังนี้
- ถ้ามีเครื่องหมายอยู่ มันคือ -1 หรือ True
- ถ้าไม่มีเครื่องหมาย มันคือ 0 หรือ False
แต่ถ้าไม่ได้ถูกคลิ๊กเลย มันคือ Null
เมื่อมันเกิด Null มันก็คือ ไม่ใช่ทั้ง True และไม่ใช่ทั้ง False
โค้ดของเราเช็คแค่ว่า มันเป็น True หรือไม่.......
พอไปเจอเหตุการณ์ที่คนใช้ไม่ยอมคลิ๊ก มันเลยเอ๋อ
เอาล่ะเมื่อเรารู้สาเหตุแล้ว เราก็ตามไปแล้วเลยครับ
ปกติโค้ดเก่าผมแค่เขียนเงื่อนไขว่า if [checkbox] then ...
ที่นี้ให้เพิ่มเงื่อนไขอีกครับ ว่ามันเป็น if [checkbox]=True then ...
4 @R02287
เรียบร้อยครับ
ขอบคุณครับ
อีกอย่างครับ ถ้าสมมติผมจะเขียนเมนูขึ้นมาเพื่อให้แสดง Database Window ขึ้นมาอ่ะครับ (โดยผมตั้งให้มันซ่อนไว้ตอนเริ่มทำงาน จนกว่าจะมีการเรียกใช้ Database Window เพื่อปรับปรุงข้อมูลอ่ะครับ)
ใ้ช้คำสั่งยังไงอ่ะครับ ผมลองศึกษาจากตัวอย่างเก่าๆ เขาใช้คีย์ F11 แต่ผมลองแล้วปรากฎว่าไม่ได้อ่ะครับ
ขอบคุณครับ
ขอบคุณครับ
อีกอย่างครับ ถ้าสมมติผมจะเขียนเมนูขึ้นมาเพื่อให้แสดง Database Window ขึ้นมาอ่ะครับ (โดยผมตั้งให้มันซ่อนไว้ตอนเริ่มทำงาน จนกว่าจะมีการเรียกใช้ Database Window เพื่อปรับปรุงข้อมูลอ่ะครับ)
ใ้ช้คำสั่งยังไงอ่ะครับ ผมลองศึกษาจากตัวอย่างเก่าๆ เขาใช้คีย์ F11 แต่ผมลองแล้วปรากฎว่าไม่ได้อ่ะครับ
ขอบคุณครับ
Time: 0.3702s
มันเกิด error ที่บรรทัดไหน hilight มาให้ด้วย
เรื่องการใช้ if ..... then เคยเขียนบอกไปแล้วค่อนข้างยาว
ในกระทู้ของ อ.สุภาพ น่าจะยังมีหรือในบอร์ดใหม่นี้มีด้วยหรือเปล่าจำไม่ได้ลองค้นดูก็แล้วกันครับ แบบไหนต้องขึ้นบรรทัดใหม่ แบบไหนไม่ต้อง, แบบไหนต้องจบด้วย end if แบบไหนไม่ต้อง, ส่วนของ else จำเป็นต้องขึ้นบรรทัดใหม่หรือไม่ ในกรณีใดบ้าง เขียนบอกไว้เยอะครับ
เอาเป็นว่าแค่คำถามตรงนี้ ประโยคจากด้านบน ไม่ต้องจบด้วย End if ครับ