sql update ที่ละหลายๆ field
กระทู้เก่าบอร์ด อ.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 นั้นๆ ต้องมีค่าว่าง
จะทำได้อย่างไร ขอคำแนะนำด้วยครับ

ขอบคุณมากๆ

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

1 @R18807
เปิดเทเบิลขึ้นมา หรือถ้าเทเบิลมีฟิลด์อื่นที่ไม่ต้องการอัพเดตอยู่ด้วย ก็ให้สร้างคิวรี่ที่แสดงเฉพาะ 50 ฟิลด์นั้นแล้วเปิดขึ้นมาแทน

กด Ctrl-H เพื่อ replace ค่า

Find What เป็น Null
Replace With เป็น 1
Look In เป็น Current Document
Match เป็น Whole Field
Search เป็นตามที่ต้องการ

กดปุ่ม Replace เท่านี้เองครับ แต่ควรทดสอบก่อนนะครับ หรือแบ็คอัพข้อมูลไว้ก่อน เพราะทำแล้วย้อนกลับไม่ได้ครับ
2 @R18809
เรียน อ.สันติสุข

ลองวิธี กด 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 นี้แทนครับ
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
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3339s