กระทู้เก่าบอร์ด อ.Yeadram
2,903 4
URL.หัวข้อ /
URL
sql update ที่ละหลายๆ field
ผมสร้างตารางชื่อ money และมี field 50 field
จะ update ข้อมูลที่มีค่าเป็น is null ด้วยเลข 1 พร้อมๆ กันได้อย่างไรครับ
ตอนนี้ที่ผมทำ ผมจะใช้ query update แต่ทำได้ที่ละ ฟิลด์ เท่านั้น
ที่ผมใช้ จะเป็นแบบนี้
UPDATE MONEY SET MONEY.Field1 = 1
WHERE (((MONEY.Field1) Is Null));
อยากจะทำ ปุ่ม แล้วคลิก UPDATE ที่เดียวพร้อมกัน 50 field เลย
โดยมีเงื่อนไข ข้อมูลใน field นั้นๆ ต้องมีค่าว่าง
จะทำได้อย่างไร ขอคำแนะนำด้วยครับ
ขอบคุณมากๆ
จะ update ข้อมูลที่มีค่าเป็น is null ด้วยเลข 1 พร้อมๆ กันได้อย่างไรครับ
ตอนนี้ที่ผมทำ ผมจะใช้ query update แต่ทำได้ที่ละ ฟิลด์ เท่านั้น
ที่ผมใช้ จะเป็นแบบนี้
UPDATE MONEY SET MONEY.Field1 = 1
WHERE (((MONEY.Field1) Is Null));
อยากจะทำ ปุ่ม แล้วคลิก UPDATE ที่เดียวพร้อมกัน 50 field เลย
โดยมีเงื่อนไข ข้อมูลใน field นั้นๆ ต้องมีค่าว่าง
จะทำได้อย่างไร ขอคำแนะนำด้วยครับ
ขอบคุณมากๆ
4 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R18809
เรียน อ.สันติสุข
ลองวิธี กด Ctrl-H เพื่อ replace ค่า แล้วครับ
แต่กลับได้คำตอบว่า The Search item was not found
ทั้งๆ ที่ ข้อมูล เป็นค่าเปล่า
เหมือนกับว่า การทำแบบนี้เป็นการค้นหาคำว่า Null
ไม่ใช่ค่าเปล่าที่แท้จริง
ถ้าทำแบบ
UPDATE MONEY SET MONEY.Field1 = 1
WHERE (((MONEY.Field1) Is Null));
ทำได้ครับ แต่ต้องมาทำทีละ field
ลองวิธี กด Ctrl-H เพื่อ replace ค่า แล้วครับ
แต่กลับได้คำตอบว่า The Search item was not found
ทั้งๆ ที่ ข้อมูล เป็นค่าเปล่า
เหมือนกับว่า การทำแบบนี้เป็นการค้นหาคำว่า Null
ไม่ใช่ค่าเปล่าที่แท้จริง
ถ้าทำแบบ
UPDATE MONEY SET MONEY.Field1 = 1
WHERE (((MONEY.Field1) Is Null));
ทำได้ครับ แต่ต้องมาทำทีละ field
3 @R18814
เอ... ทำไมเครื่องผมทำได้
ส่วนคำสั่ง SQL UPDATE statement ผมยังคิดไม่ออกนะว่าจะทำยังไง ถึงแม้ทำได้ ผมก็คิดว่ามันอาจจะยาวเกินกว่าที่ Access จะรับได้ ก็ต้องมาทำหลายคำสั่งอยู่ดี
หรือทำอย่างเดิมแล้วรวม 50 update อยู่ในแมโครเดียวเพื่อเรียกใช้เพียงที่เดียว ไม่ต้องมานั่งกดๆ หลายครั้งพอแก้ขัดไปก่อน
หรือเขียนเป็นโปรแกรม VBA เล็กๆว่า
Public Sub ReplaceMoney
Dim N As Integer
For N = 1 to 50
DoCmd.RunSQL "UPDATE MONEY SET MONEY.Field" & cstr(N) & " = 1 WHERE MONEY.Field" & cstr(N) & " Is Null"
Next N
End Sub
แล้วก็เรียกใช้ procedure นี้แทนครับ
ส่วนคำสั่ง SQL UPDATE statement ผมยังคิดไม่ออกนะว่าจะทำยังไง ถึงแม้ทำได้ ผมก็คิดว่ามันอาจจะยาวเกินกว่าที่ Access จะรับได้ ก็ต้องมาทำหลายคำสั่งอยู่ดี
หรือทำอย่างเดิมแล้วรวม 50 update อยู่ในแมโครเดียวเพื่อเรียกใช้เพียงที่เดียว ไม่ต้องมานั่งกดๆ หลายครั้งพอแก้ขัดไปก่อน
หรือเขียนเป็นโปรแกรม VBA เล็กๆว่า
Public Sub ReplaceMoney
Dim N As Integer
For N = 1 to 50
DoCmd.RunSQL "UPDATE MONEY SET MONEY.Field" & cstr(N) & " = 1 WHERE MONEY.Field" & cstr(N) & " Is Null"
Next N
End Sub
แล้วก็เรียกใช้ procedure นี้แทนครับ
4 @R18816
ถ้าเป็นการแก้เป็นครั้งคราวก็ไม่ต้องเขียนโค๊ดหรอกครับ ทำอย่างที่ อ.สันติสุข แนะนำแหละครับ
เปิดตารางเป้าหมาย กด Select ไปที่ฟิลด์แรก เรคคอร์ดแรก
กด Ctrl-H เพื่อ replace ค่า
Find What: Null
ถ้า Null ไม่ได้ ก็เปลี่ยนเป็น ""
Find What: ""
Replace With: 1
Look In: Current Document
Match: Whole Field
Search: All
แล้วก็กดปุ่ม Repace all
เปิดตารางเป้าหมาย กด Select ไปที่ฟิลด์แรก เรคคอร์ดแรก
กด Ctrl-H เพื่อ replace ค่า
Find What: Null
ถ้า Null ไม่ได้ ก็เปลี่ยนเป็น ""
Find What: ""
Replace With: 1
Look In: Current Document
Match: Whole Field
Search: All
แล้วก็กดปุ่ม Repace all
Time: 0.3339s
กด Ctrl-H เพื่อ replace ค่า
Find What เป็น Null
Replace With เป็น 1
Look In เป็น Current Document
Match เป็น Whole Field
Search เป็นตามที่ต้องการ
กดปุ่ม Replace เท่านี้เองครับ แต่ควรทดสอบก่อนนะครับ หรือแบ็คอัพข้อมูลไว้ก่อน เพราะทำแล้วย้อนกลับไม่ได้ครับ