กระทู้เก่าบอร์ด อ.Yeadram
3,420 3
URL.หัวข้อ /
URL
ค่า null กับ " "
รบกวนถามท่านผู้รู้คับ
ในตารางมีฟิลด์ชื่อ ID และ ssID
กำหนดให้ ID เป็น PK ; ssID จะใ่ส่หรือไม่ใส่ข้อมูลก็ได้(อนุญาตให้ว่าง)
เมื่อป้อนข้อมูลผ่านตารางใน access โดยตรง ป้อนข้อมูลในฟิลด์ ID และให้ ssID ว่างไว้
ปรากฏว่า ข้อมูลที่อยู่ในฟิลด์ ssID จะ้เป็นค่า null โดยอัตโนมัติ
แต่พอป้อนข้อมูลจากฟอร์มของ VB6 โดยป้อนเฉพาะฟิลด์ ID เช่นเดียวกัน ข้อมูลที่อยู่ในฟิลด์ ssID จะเป็นค่า " "
ทำให้เวลา SELECT ข้อมูล สามารถ SELECT ขึ้นมาได้แค่เร็คคอร์ดที่มีค่าเป็น null เพราะใช้ WHERE ssID is null
แต่ ข้อมูลในฟิลด์ ssID บางเร็คคอร์ดเป็น "" และบางเร็คคอร์ดเป็น null (เพราะป้อนข้อมูลจาก 2 ที่คือจาก access และจากฟอร์มของ vb) สลับกัน
ไม่ทราบว่าจะมีวิธีในการแก้ปัญหานี้อย่างไรบ้างคับ
รบกวนกรุณาแนะนำด้วยคับ
ขอบคุณคับ
********
ผมสร้าง db กับ access แล้วเขียนฟอร์มด้วย vb6 คับ
ในตารางมีฟิลด์ชื่อ ID และ ssID
กำหนดให้ ID เป็น PK ; ssID จะใ่ส่หรือไม่ใส่ข้อมูลก็ได้(อนุญาตให้ว่าง)
เมื่อป้อนข้อมูลผ่านตารางใน access โดยตรง ป้อนข้อมูลในฟิลด์ ID และให้ ssID ว่างไว้
ปรากฏว่า ข้อมูลที่อยู่ในฟิลด์ ssID จะ้เป็นค่า null โดยอัตโนมัติ
แต่พอป้อนข้อมูลจากฟอร์มของ VB6 โดยป้อนเฉพาะฟิลด์ ID เช่นเดียวกัน ข้อมูลที่อยู่ในฟิลด์ ssID จะเป็นค่า " "
ทำให้เวลา SELECT ข้อมูล สามารถ SELECT ขึ้นมาได้แค่เร็คคอร์ดที่มีค่าเป็น null เพราะใช้ WHERE ssID is null
แต่ ข้อมูลในฟิลด์ ssID บางเร็คคอร์ดเป็น "" และบางเร็คคอร์ดเป็น null (เพราะป้อนข้อมูลจาก 2 ที่คือจาก access และจากฟอร์มของ vb) สลับกัน
ไม่ทราบว่าจะมีวิธีในการแก้ปัญหานี้อย่างไรบ้างคับ
รบกวนกรุณาแนะนำด้วยคับ
ขอบคุณคับ
********
ผมสร้าง db กับ access แล้วเขียนฟอร์มด้วย vb6 คับ
3 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R02276
ถ้าป้อนผ่านฟอร์มของ VB6 เมื่อจะนำข้อมูลเข้าตารางใช้คำสั่ง run sql หรือเปล่าครับ
insert into....
ถ้าใช่ก็ต้องไปดูตรง sql statement ตัวนี้แหละครับ ว่าเราสร้าง statement ยังไง
sq = "Insert into table1(ID,ssID) values('" & txtID & "', "
if tx_ssID="" or isnull(tx_ssID) then
sq = sq & "Null"
else
sq = sq & "'" & tx_ssID.text & "'"
end if
sq = sq & ");"
คือให้ตรวจสอบก่อนว่า ค่าของ ssID บนฟอร์มมีอยู่หรือไม่ ถ้าไม่มีให้เขียนใน sql statement ด้วยคำว่า Null ตรงๆ ไปเลยครับ ข้อมูลใน Access จะได้มีรูปแบบที่เหมือนกัน
insert into....
ถ้าใช่ก็ต้องไปดูตรง sql statement ตัวนี้แหละครับ ว่าเราสร้าง statement ยังไง
sq = "Insert into table1(ID,ssID) values('" & txtID & "', "
if tx_ssID="" or isnull(tx_ssID) then
sq = sq & "Null"
else
sq = sq & "'" & tx_ssID.text & "'"
end if
sq = sq & ");"
คือให้ตรวจสอบก่อนว่า ค่าของ ssID บนฟอร์มมีอยู่หรือไม่ ถ้าไม่มีให้เขียนใน sql statement ด้วยคำว่า Null ตรงๆ ไปเลยครับ ข้อมูลใน Access จะได้มีรูปแบบที่เหมือนกัน
3 @R02277
ตั้งค่าเริ่มต้น ใน Form VB เป็น null
Time: 0.5049s
แต่ขอเสนอวิธีแก้ไขครับ
ใช้ where ssID is null and ssid = " "
ดูน่ะครับ น่าจะได้ครับผม