คุณใช้คิวรีแบบใช้อัปเดตข้อมูลในฐานข้อมูล Access เพื่อเพิ่ม เปลี่ยนแปลง หรือลบข้อมูลในระเบียนที่มีอยู่ คุณสามารถมองว่าคิวรีแบบใช้อัปเดตข้อมูลเป็นฟอร์มที่มีประสิทธิภาพของกล่องโต้ตอบ ค้นหาและแทนที่ คุณไม่สามารถใช้คิวรีแบบใช้อัปเดตข้อมูลเพื่อเพิ่มระเบียนใหม่ลงในฐานข้อมูล หรือลบระเบียนจากฐานข้อมูลได้
ถ้าต้องการเพิ่มระเบียนใหม่ลงในฐานข้อมูล คุณสามารถใช้คิวรีแบบใช้ผนวกข้อมูล และถ้าต้องการลบทั้งระเบียนออกจากฐานข้อมูล คุณสามารถใช้คิวรีแบบใช้ลบข้อมูลได้
ในบทความนี้
- ภาพรวม
- การใช้คิวรีแบบใช้อัปเดตข้อมูล
- การอัปเดตข้อมูลจากตารางหนึ่งไปยังอีกตารางหนึ่ง
- หยุดโหมดปิดใช้งานจากการบล็อกคิวรี
- เวอร์ชันของ SQL: คำสั่ง UPDATE
ภาพรวม
ต่อไปนี้คือความคล้ายคลึงและความแตกต่างกันระหว่าง การค้นหาและแทนที่ กับ คิวรีแบบใช้อัปเดตข้อมูล
คิวรีแบบใช้อัปเดตข้อมูลมีลักษณะเหมือนกับกล่องโต้ตอบ ค้นหาและแทนที่ ตรงที่ช่วยให้คุณสามารถระบุได้ว่าค่าใดที่จะถูกแทนที่และค่าใหม่นั้นคืออะไร
ส่วนสิ่งที่แตกต่างจากกล่องโต้ตอบ ค้นหาและแทนที่ ก็คือคิวรีแบบใช้อัปเดตข้อมูลนั้นสามารถช่วยให้คุณทำสิ่งต่อไปนี้ได้
- ใช้เกณฑ์ที่ไม่ขึ้นกับค่าที่คุณต้องการจะแทนที่
- อัปเดตหลายระเบียนในคราวเดียว
- เปลี่ยนแปลงระเบียนที่อยู่ในหลายตารางในเวลาเดียวกัน
ข้อจำกัดบนเขตข้อมูลที่สามารถอัปเดตได้
คิวรีแบบใช้อัปเดตข้อมูลไม่สามารถใช้อัปเดตข้อมูลในเขตข้อมูลที่มีชนิดต่อไปนี้
เขตข้อมูลจากการคํานวณ ค่าในเขตข้อมูลจากการคํานวณไม่ได้อยู่ในตารางอย่างถาวร แฟ้มเหล่านี้จะอยู่ในหน่วยความจําชั่วคราวของคอมพิวเตอร์ของคุณหลังจากที่ Access คํานวณค่าเหล่านั้นแล้วเท่านั้น เนื่องจากเขตข้อมูลจากการคํานวณไม่มีตําแหน่งที่เก็บข้อมูลถาวร คุณจึงไม่สามารถอัปเดตได้
เขตข้อมูลจากคิวรีแบบใช้หาผลรวม หรือคิวรีแบบตาราง ค่าที่อยู่ในคิวรีเหล่านี้มาจากการคำนวณ ดังนั้นจึงไม่สามารถอัปเดตได้โดยคิวรีแบบใช้อัปเดตข้อมูล
เขตข้อมูล AutoNumber ตามการดีไซน์ ค่าที่อยู่ในเขตข้อมูล AutoNumber จะเปลี่ยนแปลงเมื่อคุณเพิ่มระเบียนลงในตารางเท่านั้น
เขตข้อมูลในคิวรีแบบค่าไม่ซ้ํากันและคิวรีระเบียนที่ไม่ซ้ํากัน ค่าในคิวรีดังกล่าวจะถูกสรุป ค่าบางค่าแสดงถึงระเบียนเดียว ส่วนค่าอื่นๆ แทนระเบียนมากกว่าหนึ่งระเบียน การดําเนินการปรับปรุงไม่สามารถทําได้ เนื่องจากไม่สามารถระบุได้ว่าระเบียนใดถูกแยกออกจากรายการที่ซ้ํากัน ดังนั้นจึงไม่สามารถอัปเดตระเบียนที่จําเป็นทั้งหมดได้ ข้อจํากัดนี้จะนําไปใช้ไม่ว่าคุณจะใช้คิวรีแบบใช้อัปเดตข้อมูลหรือพยายามอัปเดตข้อมูลด้วยตนเองโดยการใส่ค่าในฟอร์มหรือแผ่นข้อมูล
เขตข้อมูลในคิวรีแบบร่วม คุณไม่สามารถอัปเดตข้อมูลจากเขตข้อมูลในคิวรีแบบร่วมได้ เนื่องจากแต่ละระเบียนที่ปรากฏในแหล่งข้อมูลอย่างน้อยสองแหล่งจะปรากฏเพียงครั้งเดียวในผลลัพธ์ของคิวรีแบบร่วม เนื่องจากระเบียนที่ซ้ํากันบางระเบียนถูกเอาออกจากผลลัพธ์ Access จึงไม่สามารถอัปเดตระเบียนที่จําเป็นทั้งหมดได้
เขตข้อมูลที่เป็นคีย์หลัก ในบางกรณี เช่น ถ้าเขตข้อมูลที่เป็นคีย์หลักถูกใช้ในความสัมพันธ์ของตาราง คุณจะไม่สามารถอัปเดตเขตข้อมูลดังกล่าวด้วยการใช้คิวรีได้ เว้นแต่ว่าคุณจะตั้งค่าให้ความสัมพันธ์อัปเดตเขตข้อมูลที่เกี่ยวข้องทั้งหมดโดยอัตโนมัติเสียก่อน
หมายเหตุ
เมื่อคุณอัปเดตเขตข้อมูลที่เกี่ยวข้อง Access จะอัปเดตค่าของ Foreign Key โดยอัตโนมัติเมื่อคุณเปลี่ยนค่าของคีย์หลักในตารางแม่
การใช้คิวรีแบบใช้อัปเดตข้อมูล
แนวทางปฏิบัติที่ดีที่สุดเมื่อสร้างคิวรีแบบใช้อัปเดตข้อมูล ขั้นแรกให้สร้างคิวรีแบบใช้เลือกข้อมูลที่ระบุระเบียนที่คุณต้องการอัปเดต แล้วแปลงคิวรีนั้นเป็นคิวรีแบบใช้อัปเดตข้อมูลที่คุณสามารถเรียกใช้เพื่ออัปเดตระเบียนได้ เมื่อเลือกข้อมูลก่อน คุณสามารถตรวจสอบว่าคุณกําลังอัปเดตระเบียนที่คุณต้องการก่อนที่คุณจะเปลี่ยนแปลงข้อมูลใดๆ
เคล็ดลับ
สํารองฐานข้อมูลของคุณก่อนที่คุณจะเรียกใช้คิวรีแบบใช้อัปเดตข้อมูล คุณไม่สามารถเลิกทําผลลัพธ์ของคิวรีแบบใช้อัปเดตข้อมูล และการสํารองข้อมูลจะช่วยให้แน่ใจว่าคุณสามารถย้อนกลับการเปลี่ยนแปลงของคุณได้ถ้าคุณเปลี่ยนใจ
วิธีการสำรองฐานข้อมูล
- คลิกแท็บ ไฟล์ แล้วเลือก บันทึกเป็น
- ทางด้านขวา ภายใต้ ขั้นสูง ให้เลือก สํารองฐานข้อมูล
- ในกล่องโต้ตอบ บันทึกการสํารองข้อมูลเป็น ให้ระบุชื่อและตําแหน่งที่ตั้งสําหรับสําเนาสํารอง แล้วเลือก บันทึก
Access จะปิดไฟล์ต้นฉบับ สร้างไฟล์สำรอง แล้วเปิดไฟล์ต้นฉบับอีกครั้ง
เมื่อต้องการย้อนกลับไปยังการสํารองข้อมูล ให้ปิดและเปลี่ยนชื่อไฟล์ต้นฉบับเพื่อให้สําเนาสํารองสามารถใช้ชื่อของต้นฉบับเวอร์ชันได้ กําหนดชื่อของต้นฉบับให้กับสําเนาสํารอง แล้วเปิดสําเนาสํารองที่เปลี่ยนชื่อใน Access
ในส่วนนี้
- ขั้นตอนที่ 1: สร้างคิวรีแบบใช้เลือกข้อมูลเพื่อระบุระเบียนที่ต้องการอัปเดต
- ขั้นตอนที่ 2: อัปเดตระเบียน
ขั้นตอนที่ 1: สร้างคิวรีแบบใช้เลือกข้อมูลเพื่อระบุระเบียนที่ต้องการอัปเดต
เปิดฐานข้อมูลที่มีระเบียนที่คุณต้องการอัปเดต
บนแท็บ สร้าง ในกลุ่ม คิวรี ให้เลือก ออกแบบคิวรี
เลือกแท็บ ตาราง
เลือกตารางที่มีระเบียนที่คุณต้องการอัปเดต เลือก เพิ่ม แล้วเลือก ปิด
ตารางจะปรากฏเป็นหน้าต่างอย่างน้อยหนึ่งหน้าต่างในตัวออกแบบคิวรี และหน้าต่างจะแสดงรายการเขตข้อมูลทั้งหมดในแต่ละตาราง รูปนี้แสดงตัวออกแบบคิวรีกับตารางทั่วไป
ตารางที่แสดงในตัวออกแบบคิวรี
ตารางออกแบบแบบสอบถามดับเบิลคลิกที่เขตข้อมูลที่คุณต้องการอัปเดตในหน้าต่างตาราง เขตข้อมูลที่เลือกจะปรากฏในแถว เขตข้อมูล ในตารางออกแบบคิวรี
คุณสามารถเพิ่มเขตข้อมูลตารางหนึ่งเขตข้อมูลต่อคอลัมน์ในตารางออกแบบคิวรี
เมื่อต้องการเพิ่มเขตข้อมูลทั้งหมดในตารางอย่างรวดเร็ว ให้ดับเบิลคลิกที่เครื่องหมายดอกจัน (*) ที่ด้านบนของรายการเขตข้อมูลตารางในหน้าต่างตาราง รูปนี้แสดงตารางออกแบบคิวรีที่มีเขตข้อมูลทั้งหมดที่เพิ่ม
เมื่อต้องการจำกัดผลลัพธ์ของคิวรีตามค่าในเขตข้อมูล ให้ไปที่ตารางออกแบบคิวรี ในแถว เกณฑ์ แล้วใส่เกณฑ์ที่คุณต้องการใช้จำกัดผลลัพธ์
ตารางตัวอย่างเกณฑ์
ตารางต่อไปนี้แสดงตัวอย่างเกณฑ์และอธิบายผลของเกณฑ์เหล่านั้นที่มีต่อผลลัพธ์ของคิวรีหมายเหตุ
ตัวอย่างจำนวนมากในตารางนี้จะใช้อักขระตัวแทนเพื่อให้คิวรีมีความยืดหยุ่นมากขึ้นหรือมีประสิทธิภาพสูงขึ้น
เกณฑ์ เอฟเฟ็กต์ >234 ส่งกลับตัวเลขทั้งหมดที่มากกว่า 234 เมื่อต้องการค้นหาตัวเลขทั้งหมดที่น้อยกว่า 234 ให้ใช้ < 234 >="Cajhen" ส่งกลับระเบียนทั้งหมดที่มีคำว่า สิทธิชัย ตั้งแต่อักษรตัวแรกจนถึงตัวสุดท้าย Between #2/2/2020# And #1/12/2020# ส่งกลับวันที่ตั้งแต่ 2 ก.พ. 17 ถึง 1 ธ.ค. 17 (ANSI-89) ถ้าฐานข้อมูลของคุณใช้อักขระตัวแทนตาม ANSI-92 ให้ใช้เครื่องหมายอัญระบุเดี่ยว (') แทนเครื่องหมายเลขที่ (#) ตัวอย่าง: Between '2/2/2020' And '1/1/1/2020' Not "Germany" ค้นหาระเบียนทั้งหมดที่เนื้อหาจริงของเขตข้อมูลมีคำอื่นร่วมกับคำว่า "Germany" อยู่ด้วย เกณฑ์นี้จะส่งกลับระเบียนที่มีอักขระนอกเหนือจากคำว่า "Germany," เช่น "Germany (euro)" หรือ "Europe (Germany)" Not "T*" ค้นหาระเบียนทั้งหมดยกเว้นระเบียนที่ขึ้นต้นด้วย T ถ้าฐานข้อมูลของคุณใช้ชุดอักขระตัวแทนตาม ANSI-92 ให้ใช้เครื่องหมายเปอร์เซ็นต์ (%) แทนเครื่องหมายดอกจัน (*) ไม่ใช่ "*t" ค้นหาระเบียนทั้งหมดที่ไม่ลงท้ายด้วย t ถ้าฐานข้อมูลของคุณใช้ชุดอักขระตัวแทนตาม ANSI-92 ให้ใช้เครื่องหมายเปอร์เซ็นต์ (%) แทนเครื่องหมายดอกจัน (*) In(Canada,UK) ค้นหาทุกระเบียนที่มีคำว่า Canada หรือ UK ในรายการ Like "[A-D]*" ในเขตข้อมูลข้อความ ค้นหาระเบียนทั้งหมดที่ขึ้นต้นด้วยตัวอักษร A ถึง D ถ้าฐานข้อมูลของคุณใช้ชุดอักขระตัวแทนตามมาตรฐาน ANSI-92 ให้ใช้เครื่องหมายเปอร์เซ็นต์ ( % ) แทนเครื่องหมายดอกจัน ( * ) เช่น "*ar*" ค้นหาระเบียนทั้งหมดที่มีลําดับอักษร "ar" รวมอยู่ด้วย ถ้าฐานข้อมูลของคุณใช้ชุดอักขระตัวแทนตาม ANSI-92 ให้ใช้เครื่องหมายเปอร์เซ็นต์ (%) แทนเครื่องหมายดอกจัน (*) Like "Maison Dewe?" ค้นหาระเบียนทั้งหมดที่ขึ้นต้นด้วย "Maison" และมีสตริงที่สองที่มี 5 ตัวอักษร โดยที่ตัวอักษร 4 ตัวแรกคือ "Dewe" และไม่ทราบตัวอักษรตัวสุดท้าย ถ้าฐานข้อมูลของคุณใช้ชุดอักขระตัวแทนตาม ANSI-92 ให้ใช้เครื่องหมายขีดล่าง (_) แทนเครื่องหมายคําถาม (?) #2/2/2020# ค้นหาระเบียนทั้งหมดสําหรับวันที่ 2 กุมภาพันธ์ 2020 ถ้าฐานข้อมูลของคุณใช้ชุดอักขระตัวแทนตาม ANSI-92 ให้กํากับวันที่ด้วยเครื่องหมายอัญระบุเดี่ยว (') แทนเครื่องหมายเลขที่ (#) ตัวอย่างเช่น ('2/2/2020') < วันที่() - 30 ใช้ฟังก์ชัน Date เพื่อส่งกลับวันที่ทั้งหมดที่เลย 30 วันมาแล้ว Date() ใช้ฟังก์ชัน Date เพื่อส่งกลับระเบียนทั้งหมดที่มีวันที่เป็นวันนี้ Between Date( ) And DateAdd("M", 3, Date( )) ใช้ฟังก์ชัน Date และ DateAdd เพื่อส่งกลับระเบียนทั้งหมดระหว่างวันที่ของวันนี้และอีกสามเดือนถัดไปนับตั้งแต่วันนี้ Is Null ส่งกลับทุกระเบียนที่มีค่า Null (ว่างหรือไม่ได้ระบุ) Is Not Null ส่งกลับทุกระเบียนที่มีค่า "" ส่งกลับระเบียนทั้งหมดที่มีสตริงที่มีความยาวเป็นศูนย์ คุณใช้สตริงที่มีความยาวเป็นศูนย์เมื่อคุณต้องการเพิ่มค่าลงในเขตข้อมูลที่ต้องการ แต่คุณยังไม่ทราบว่าค่านั้นคืออะไร ตัวอย่างเช่น เขตข้อมูลอาจต้องการหมายเลขโทรสาร แต่ลูกค้าของคุณบางรายอาจไม่มีเครื่องโทรสาร ในกรณีดังกล่าว ให้คุณใส่เครื่องหมายอัญภาคคู่โดยไม่เว้นวรรคระหว่างเครื่องหมายเหล่านั้น ("") แทนตัวเลข บนแท็บ ออกแบบคิวรี ในกลุ่ม ผลลัพธ์ ให้เลือก เรียกใช้
ตรวจสอบว่าคิวรีส่งกลับระเบียนที่คุณต้องการอัปเดต
เมื่อต้องการเอาเขตข้อมูลใดๆ ที่คุณไม่ต้องการให้รวมอยู่ในการออกแบบคิวรีออก ให้เลือกเขตข้อมูลนั้น แล้วกด DELETE
เมื่อต้องการเพิ่มเขตข้อมูลใดๆ ที่คุณต้องการให้รวมอยู่ในการออกแบบคิวรี ให้ลากเขตข้อมูลที่ต้องการเพิ่มลงไปในตารางการออกแบบคิวรี
ขั้นตอนที่ 2: อัปเดตระเบียน
บนแท็บ ออกแบบคิวรี ในกลุ่ม ชนิดคิวรี ให้เลือก อัปเดต
กระบวนงานนี้แสดงวิธีเปลี่ยนคิวรีแบบใช้เลือกข้อมูลเป็นคิวรีแบบใช้อัปเดตข้อมูล เมื่อคุณทําเช่นนี้ Access จะเพิ่มแถว อัปเดตเป็น ในตารางออกแบบคิวรี ภาพประกอบต่อไปนี้แสดงคิวรีแบบใช้อัปเดตข้อมูลที่ส่งกลับสินทรัพย์ทั้งหมดที่ซื้อหลังจากวันที่ 5 มกราคม 2005 และเปลี่ยนตําแหน่งที่ตั้งเป็น "คลังสินค้า 3" สําหรับระเบียนทั้งหมดที่ตรงตามเกณฑ์นั้น
ค้นหาตำแหน่งเขตข้อมูลที่มีข้อมูลที่คุณต้องการเปลี่ยนแปลง แล้วพิมพ์นิพจน์ของคุณ (เกณฑ์การเปลี่ยนแปลง) ลงในแถว อัปเดตเป็น ของเขตข้อมูลนั้น
คุณสามารถใช้นิพจน์ที่ถูกต้องอะไรก็ได้ในแถว อัปเดตเป็น
ตารางตัวอย่างนิพจน์
ตารางนี้จะแสดงนิพจน์ตัวอย่างจำนวนหนึ่ง พร้อมอธิบายวิธีที่นิพจน์เหล่านี้เปลี่ยนแปลงข้อมูลนิพจน์ ผลลัพธ์ "พนักงานขาย" ในเขตข้อมูลข้อความสั้น จะเปลี่ยนค่าข้อความเป็น พนักงานขาย #8/10/20# ในเขตข้อมูล Date/Time จะเปลี่ยนค่าวันที่เป็น 10-ส.ค.-20 ใช่ ในเขตข้อมูล Yes/No จะเปลี่ยนค่า No ให้เป็น Yes "PN" & [หมายเลขชิ้นส่วน] เพิ่ม "PN" ลงในส่วนเริ่มต้นของแต่ละหมายเลขชิ้นส่วนที่ระบุ [ราคาต่อหน่วย] * [ปริมาณ] คูณค่าในเขตข้อมูลที่ชื่อราคาต่อหน่วยและปริมาณ [ค่าขนส่งสินค้า] * 1.5 เพิ่มค่าในเขตข้อมูลชื่อค่าขนส่งสินค้าอีก 50 เปอร์เซ็นต์ DSum("[ปริมาณ] * [ราคาต่อหน่วย]",
"รายละเอียดคําสั่งซื้อ", "[ProductID]=" & [รหัสผลิตภัณฑ์])เมื่อค่า ProductID ในตารางปัจจุบันตรงกับค่า ProductID ในตารางที่ชื่อ รายละเอียดการสั่งซื้อ นิพจน์นี้จะอัปเดตยอดขายรวมทั้งหมดโดยการคูณค่าในเขตข้อมูลที่ชื่อ ปริมาณ ด้วยค่าในเขตข้อมูลที่ชื่อ UnitPrice นิพจน์ใช้ฟังก์ชัน DSum เนื่องจากสามารถดําเนินการกับตารางและเขตข้อมูลตารางได้มากกว่าหนึ่งเขตข้อมูล Right([รหัสไปรษณีย์ที่ส่งสินค้า], 5) ตัด (เอาออก) อักขระด้านซ้ายสุดในสตริงข้อความหรือตัวเลข แล้วทิ้งอักขระทางด้านขวาสุดไว้ 5 ตัว IIf(IsNull([ราคาต่อหน่วย]), 0, [ราคาต่อหน่วย]) เปลี่ยนค่า Null (ไม่รู้หรือไม่ได้ระบุ) เป็นค่าศูนย์ (0) ในเขตข้อมูลชื่อราคาต่อหน่วย บนแท็บ ออกแบบคิวรี ในกลุ่ม ผลลัพธ์ ให้เลือก เรียกใช้
ข้อความแจ้งเตือนจะปรากฏขึ้นเมื่อต้องการเรียกใช้คิวรีและอัปเดตข้อมูล ให้เลือก ใช่
หมายเหตุ
เมื่อคุณเรียกใช้คิวรี คุณอาจสังเกตเห็นว่าบางเขตข้อมูลหายไปจากชุดผลลัพธ์ของคุณ ถ้าคิวรีของคุณมีเขตข้อมูลที่คุณไม่ได้อัปเดต Access จะไม่แสดงเขตข้อมูลเหล่านั้นในผลลัพธ์ตามค่าเริ่มต้น ตัวอย่างเช่น คุณอาจรวมเขตข้อมูล ID จากสองตารางเพื่อช่วยให้แน่ใจว่าคิวรีของคุณระบุและอัปเดตระเบียนที่ถูกต้อง ถ้าคุณไม่อัปเดตเขตข้อมูล ID เหล่านั้น Access จะไม่แสดงในผลลัพธ์
การอัปเดตข้อมูลจากตารางหนึ่งไปยังอีกตารางหนึ่ง
เมื่อคุณต้องการอัปเดตข้อมูลจากตารางหนึ่งไปอีกตารางหนึ่ง ให้นึกถึงกฎต่อไปนี้ คือ ชนิดข้อมูลของเขตข้อมูลต้นทางและปลายทางต้องตรงกันหรือเข้ากันได้
นอกจากนี้ เมื่อคุณอัปเดตข้อมูลจากตารางหนึ่งไปเป็นอีกตารางหนึ่งและใช้ชนิดข้อมูลที่เข้ากันได้แทนการจับคู่ชนิดข้อมูล Access จะแปลงชนิดข้อมูลของเขตข้อมูลเหล่านั้นในตารางปลายทาง ด้วยเหตุนี้ ข้อมูลบางส่วนในเขตข้อมูลปลายทางอาจถูกตัดทอน (ถูกลบ) ส่วน การจํากัดการแปลงชนิดข้อมูล จะแสดงวิธีที่คุณสามารถและไม่สามารถแปลงชนิดข้อมูลได้ ตารางในส่วนนี้ยังอธิบายว่าเมื่อแปลงชนิดข้อมูลสามารถเปลี่ยนแปลงหรือกําจัดข้อมูลบางส่วนหรือทั้งหมดในเขตข้อมูลและข้อมูลที่อาจถูกตัดออก
กระบวนการอัปเดตข้อมูลจากตารางหนึ่งไปยังอีกตารางหนึ่งมีขั้นตอนคร่าวๆ ดังนี้
- สร้างคิวรีแบบใช้อัปเดตข้อมูลและเพิ่มทั้งตารางต้นทางและตารางปลายทางลงในคิวรี
- รวมตารางเหล่านั้นเข้าด้วยกันด้วยเขตข้อมูลที่มีข้อมูลเกี่ยวข้องกัน
- เพิ่มชื่อเขตข้อมูลปลายทางของคุณลงในแถว เขตข้อมูล ของตารางออกแบบคิวรี
- เพิ่มชื่อของเขตข้อมูลต้นฉบับของคุณลงในแถว อัปเดตเป็น ของตารางออกแบบคิวรีโดยใช้ไวยากรณ์ต่อไปนี้ [source_table] [source_field]
ขั้นตอนในส่วนนี้สมมติว่าใช้ตารางสองตารางที่คล้ายกัน ในตัวอย่างนี้ ตารางไคลเอ็นต์จะอยู่ในฐานข้อมูลที่คุณเพิ่งสืบทอด และมีข้อมูลล่าสุดมากกว่าตารางลูกค้า คุณจะเห็นว่าชื่อผู้จัดการและที่อยู่บางส่วนมีการเปลี่ยนแปลง ด้วยเหตุนี้ คุณจึงตัดสินใจอัปเดตตารางลูกค้าด้วยข้อมูลจากตารางไคลเอ็นต์
ตารางผู้ซื้อ
| รหัสผู้ซื้อ | ชื่อ | ที่อยู่ | เมือง | จังหวัด | รหัสไปรษณีย์ | ประเทศ | โทรศัพท์ | ที่ติดต่อ |
|---|---|---|---|---|---|---|---|---|
| 1 | Baldwin Museum of Science | 1 Main St. | New York | NY | 12345 | USA | (505) 555-2122 | Josh Barnhill |
| 2 | Blue Yonder Airlines | 52 1st St. | Boston | MA | 23456 | USA | (104) 555-2123 | Waleed Heloo |
| 3 | Coho Winery | 3122 75th Ave. S.W. | Seattle | WA | 34567 | USA | (206) 555-2124 | Pica Guido |
| 4 | Contoso Pharmaceuticals | 1 Contoso Blvd. | London | Bucks | NS1 EW2 | England | (171) 555-2125 | Zoltan Harmuth |
| 5 | Fourth Coffee | Calle Smith 2 | Mexico City | 56789 | Mexico | (7) 555-2126 | Julian Price | |
| 6 | Consolidated Messenger | 3123 75th St. S. | Seattle | WA | 34567 | USA | (02-) 333-3333 | Miles Reid |
| 7 | Graphic Design Institute | 1587 Office Pkwy | Tampa | FL | 87654 | USA | (916) 555-2128 | Tzipi Butnaru |
| 8 | Litware, Inc. | 3 Microsoft Way | Portland | OR | 31415 | USA | (503) 555-2129 | Brian Smith |
| 9 | Tailspin Toys | 4 Microsoft Way | Portland | OR | 31415 | USA | (503) 555-2233 | Phil Gibbins |
ตารางลูกค้า
| รหัสลูกค้า | ชื่อ | ที่อยู่ | เมือง | จังหวัด | รหัสไปรษณีย์ | ประเทศ | โทรศัพท์ | ผู้จัดการ |
|---|---|---|---|---|---|---|---|---|
| 1 | Baldwin Museum of Science | 1 Main St. | New York | NY | 12345 | USA | (505) 555-2122 | Steve Riley |
| 2 | Blue Yonder Airlines | 52 1st St. | Boston | MA | 23456 | USA | (104) 555-2123 | Waleed Heloo |
| 3 | Coho Winery | 3122 75th Ave. S.W. | Seattle | WA | 34567 | USA | (206) 555-2124 | Pica Guido |
| 4 | Contoso Pharmaceuticals | 1 Contoso Blvd. | London | Bucks | NS1 EW2 | England | (171) 555-2125 | Zoltan Harmuth |
| 5 | Fourth Coffee | Calle Huevos 134 | Mexico City | 56789 | Mexico | (7) 555-2126 | Julian Price | |
| 6 | Consolidated Messenger | 3123 75th St. S. | Seattle | WA | 34567 | USA | (206) 555-2125 | Christine Hughes |
| 7 | Graphic Design Institute | 67 1st St. | Tampa | FL | 87654 | USA | (916) 555-2128 | Dana Birkby |
| 8 | Litware, Inc. | 3 Microsoft Way | Portland | OR | 31415 | USA | (503) 555-2129 | Jesper Aaberg |
| 9 | Tailspin Toys | 4 Microsoft Way | Portland | OR | 31415 | USA | (503) 555-2233 | Phil Gibbins |
ขณะที่คุณดําเนินการต่อ โปรดจําไว้ว่าแม้ว่าชนิดข้อมูลสําหรับแต่ละเขตข้อมูลตารางไม่จําเป็นต้องตรงกัน แต่ชนิดข้อมูลเหล่านั้นจะต้องเข้ากันได้ Access ต้องสามารถแปลงข้อมูลในตารางต้นฉบับให้เป็นชนิดที่ตารางปลายทางสามารถใช้ได้ ในบางกรณี กระบวนการแปลงอาจลบข้อมูลบางอย่าง สําหรับข้อมูลเพิ่มเติมเกี่ยวกับข้อจํากัดเมื่อคุณแปลงชนิดข้อมูล ให้ดูส่วน ข้อจํากัดในการแปลงชนิดข้อมูล
สร้างและเรียกใช้คิวรีแบบใช้อัปเดตข้อมูล
หมายเหตุ
ขั้นตอนต่อไปนี้จะถือว่าใช้ตารางตัวอย่างสองตารางก่อนหน้า คุณสามารถปรับขั้นตอนให้เหมาะกับข้อมูลของคุณ
- บนแท็บ สร้าง ในกลุ่ม คิวรี ให้เลือก ออกแบบคิวรี
- เลือก เพิ่มตาราง
- ดับเบิลคลิกที่ตารางต้นฉบับและตารางปลายทางของคุณเพื่อเพิ่มตารางเหล่านั้นลงในคิวรี แต่ละตารางจะปรากฏในหน้าต่างในตัวออกแบบคิวรี
- ในกรณีส่วนใหญ่ Access จะรวมเขตข้อมูลที่เกี่ยวข้องกันในคิวรีโดยอัตโนมัติ เมื่อต้องการรวมเขตข้อมูลที่มีข้อมูลที่เกี่ยวข้องกันด้วยตนเอง ให้ลากเขตข้อมูลที่เกี่ยวข้องจากตารางหนึ่งไปยังเขตข้อมูลที่เทียบเท่ากันในอีกตารางหนึ่ง
ตัวอย่างเช่น ถ้าคุณใช้ตารางตัวอย่างที่แสดงก่อนหน้านี้ ให้คุณลากเขตข้อมูล ID ไคลเอ็นต์ไปยังเขตข้อมูล ID ลูกค้า Access จะสร้างความสัมพันธ์ระหว่างเขตข้อมูลเหล่านั้นในตารางสองตารางและใช้ความสัมพันธ์นั้นเพื่อรวมระเบียนใดๆ ที่เกี่ยวข้องกัน - บนแท็บ ออกแบบคิวรี ในกลุ่ม ชนิดคิวรี ให้เลือก อัปเดต
- ในตารางปลายทาง ให้ดับเบิลคลิกที่เขตข้อมูลที่คุณต้องการอัปเดต แต่ละเขตข้อมูลจะปรากฏในแถว เขตข้อมูล ในตารางออกแบบคิวรี
ถ้าคุณใช้ตารางตัวอย่าง ให้คุณเพิ่มเขตข้อมูลทั้งหมด ยกเว้น เขตข้อมูล ID ลูกค้า โปรดสังเกตว่าชื่อของตารางปลายทางจะปรากฏในแถว ตาราง ของตารางออกแบบ - ในแถว อัปเดตเป็น ของคิวรี ในแต่ละคอลัมน์ที่มีเขตข้อมูลปลายทาง ให้เพิ่มชื่อของตารางต้นฉบับและเขตข้อมูลในตารางต้นฉบับที่สอดคล้องกับเขตข้อมูลในตารางปลายทาง และตรวจสอบให้แน่ใจว่าคุณใช้ไวยากรณ์นี้ [ตาราง][ เขตข้อมูล] ที่คุณใส่ชื่อตารางและเขตข้อมูลด้วยวงเล็บเหลี่ยม และคุณแยกชื่อตารางและเขตข้อมูลด้วยจุด
รูปนี้แสดงส่วนของตารางออกแบบโดยใช้ตารางตัวอย่าง ให้สังเกตไวยากรณ์สําหรับชื่อตารางและชื่อเขตข้อมูลในแถว อัปเดตเป็น
ขณะที่คุณดําเนินการต่อ โปรดจําไว้ว่าคุณต้องสะกดชื่อตารางและชื่อเขตข้อมูลในแถว อัปเดตเป็น อย่างถูกต้อง และคุณต้องใช้เครื่องหมายวรรคตอนในชื่อตารางและชื่อเขตข้อมูลเดิม อย่างไรก็ตาม คุณไม่จําเป็นต้องจับคู่ตัวพิมพ์ใหญ่ - บนแท็บ ออกแบบคิวรี ในกลุ่ม ผลลัพธ์ ให้เลือก เรียกใช้
- เมื่อระบบขอให้ยืนยันการอัปเดต ให้เลือก ใช่
ข้อจำกัดในการแปลงชนิดข้อมูล
ตารางต่อไปนี้จะแสดงชนิดข้อมูลที่ Access มีให้ รวมทั้งอธิบายข้อจำกัดต่างๆ ในการแปลงชนิดข้อมูล และอธิบายอย่างคร่าวๆ เกี่ยวกับการสูญหายของข้อมูลที่อาจเกิดขึ้นในระหว่างการแปลง
| แปลงเป็นชนิดนี้ | จากชนิดนี้ | การเปลี่ยนแปลงหรือข้อจำกัด |
|---|---|---|
| ข้อความสั้น | ข้อความยาว | Access จะลบอักขระทั้งหมดที่เกินจากอักขระ 255 ตัวแรก |
| ตัวเลข | ไม่มีข้อจำกัด | |
| วันที่/เวลา | ไม่มีข้อจำกัด | |
| สกุลเงิน | ไม่มีข้อจำกัด | |
| AutoNumber | ไม่มีข้อจำกัด | |
| ใช่/ไม่ใช่ | ค่า -1 (Yes ในเขตข้อมูล Yes/No) จะแปลงเป็น Yes ค่า 0 (No ในเขตข้อมูล Yes/No) จะแปลงเป็น No | |
| ไฮเปอร์ลิงก์ | Access จะตัดลิงก์ที่มีอักขระยาวเกิน 255 ตัว | |
| ข้อความยาว | ข้อความสั้น | ไม่มีข้อจำกัด |
| ตัวเลข | ไม่มีข้อจำกัด | |
| วันที่/เวลา | ไม่มีข้อจำกัด | |
| สกุลเงิน | ไม่มีข้อจำกัด | |
| AutoNumber | ไม่มีข้อจำกัด | |
| ใช่/ไม่ใช่ | ค่า -1 (Yes ในเขตข้อมูล Yes/No) จะแปลงเป็น Yes ค่า 0 (No ในเขตข้อมูล Yes/No) จะแปลงเป็น No | |
| ไฮเปอร์ลิงก์ | ไม่มีข้อจำกัด | |
| ตัวเลข | ข้อความสั้น | ข้อความต้องประกอบด้วยตัวเลข สกุลเงินที่ถูกต้อง และตัวคั่นทศนิยม จํานวนอักขระในเขตข้อมูล Text ต้องอยู่ภายในขนาดที่ตั้งค่าไว้สําหรับเขตข้อมูล Number |
| ข้อความยาว | เขตข้อมูลข้อความยาวต้องมีเฉพาะข้อความและสกุลเงินที่ถูกต้องและตัวคั่นทศนิยม จํานวนอักขระในเขตข้อมูลข้อความยาวต้องอยู่ภายในขนาดที่ตั้งค่าไว้สําหรับเขตข้อมูล Number | |
| Number แต่มีขนาดเขตข้อมูลหรือจำนวนทศนิยม (ความแม่นยำ) ต่างกัน | ค่าต้องไม่ใหญ่ขึ้นหรือเล็กกว่าที่ขนาดของเขตข้อมูลใหม่สามารถจัดเก็บได้ การเปลี่ยนความแม่นยําอาจทําให้ Access ปัดเศษบางค่า | |
| วันที่/เวลา | วันที่ที่คุณสามารถแปลงได้จะขึ้นอยู่กับขนาดของเขตข้อมูลตัวเลข โปรดจําไว้ว่า Access จะเก็บวันที่ทั้งหมดเป็นวันที่อนุกรม และจะเก็บค่าวันที่เป็นจํานวนเต็มลอยตัวที่มีความแม่นยําสูง Access ใช้วันที่ 30 ธันวาคม 1899 เป็นวันที่ 0 วันที่ที่อยู่นอกช่วง 18 เมษายน 1899 และ 11 กันยายน 1900 มีขนาดเกินเขตข้อมูลไบต์ วันที่ที่อยู่นอกช่วง 13 เมษายน 1810 และ 16 กันยายน 1989 มีขนาดเกินเขตข้อมูลจํานวนเต็ม เมื่อต้องการให้ครอบคลุมวันที่ทั้งหมดที่เป็นไปได้ ให้ตั้งค่าคุณสมบัติ ขนาดเขตข้อมูล ของเขตข้อมูล Number ของคุณเป็น Long Integer หรือสูงกว่า |
|
| สกุลเงิน | ค่าต้องไม่เกิน (หรืออยู่ภายใน) ขนาดของเขตข้อมูลที่จํากัดไว้ ตัวอย่างเช่น คุณสามารถแปลงเขตข้อมูลสกุลเงินเป็นเขตข้อมูลจํานวนเต็มได้เฉพาะเมื่อค่าเหล่านั้นมากกว่า 255 และไม่เกิน 32,767 | |
| AutoNumber | ค่าจะต้องอยู่ภายในขนาดจำกัดของเขตข้อมูล | |
| ใช่/ไม่ใช่ | ค่า "Yes" จะแปลงเป็น -1 ค่า "No" จะแปลงเป็น 0 | |
| วันที่/เวลา | ข้อความสั้น | ข้อความต้นฉบับต้องเป็นวันที่หรือวันที่/เวลาที่รู้จัก ตัวอย่างเช่น 18 ม.ค.-2563 |
| ข้อความยาว | ข้อความต้นฉบับต้องเป็นวันที่หรือวันที่/เวลาที่รู้จัก ตัวอย่างเช่น 18 ม.ค.-2563 | |
| ตัวเลข | ค่าจะต้องอยู่ระหว่าง -657,434 และ 2,958,465.99998843 | |
| สกุลเงิน | ค่าจะต้องอยู่ระหว่าง -$657,434 และ $2,958,465.9999 | |
| AutoNumber | ค่าจะต้องเกิน -657,434 และต่ำกว่า 2,958,466 | |
| ใช่/ไม่ใช่ | ค่า -1 (Yes) จะแปลงเป็น 29 ธันวาคม 1899 ค่า 0 (No) จะแปลงเป็นเที่ยงคืน (12:00 AM) | |
| สกุลเงิน | ข้อความสั้น | ข้อความต้องประกอบด้วยตัวเลขและตัวคั่นที่ถูกต้อง |
| ข้อความยาว | ข้อความต้องประกอบด้วยตัวเลขและตัวคั่นที่ถูกต้อง | |
| ตัวเลข | ไม่มีข้อจำกัด | |
| วันที่/เวลา | ไม่มีข้อจำกัด แต่ Access อาจปัดเศษให้กับค่า | |
| AutoNumber | ไม่มีข้อจำกัด | |
| ใช่/ไม่ใช่ | ค่า -1 (Yes) จะแปลงเป็น $1 และค่า 0 (No) จะแปลงเป็น 0$ | |
| AutoNumber | ข้อความสั้น | ไม่อนุญาตถ้าใช้เขตข้อมูล AutoNumber เป็นคีย์หลัก |
| ข้อความยาว | ไม่อนุญาตถ้าใช้เขตข้อมูล AutoNumber เป็นคีย์หลัก | |
| ตัวเลข | ไม่อนุญาตถ้าใช้เขตข้อมูล AutoNumber เป็นคีย์หลัก | |
| วันที่/เวลา | ไม่อนุญาตถ้าใช้เขตข้อมูล AutoNumber เป็นคีย์หลัก | |
| สกุลเงิน | ไม่อนุญาตถ้าใช้เขตข้อมูล AutoNumber เป็นคีย์หลัก | |
| ใช่/ไม่ใช่ | ไม่อนุญาตถ้าใช้เขตข้อมูล AutoNumber เป็นคีย์หลัก | |
| ใช่/ไม่ใช่ | ข้อความสั้น | ข้อความต้นฉบับต้องประกอบด้วย Yes, No, True, False, On หรือ Off เท่านั้น |
| ข้อความยาว | ข้อความต้นฉบับต้องประกอบด้วย Yes, No, True, False, On หรือ Off เท่านั้น | |
| ตัวเลข | ค่าศูนย์หรือ Null จะแปลงเป็น No ค่าอื่นๆ ทั้งหมดจะแปลงเป็น Yes | |
| วันที่/เวลา | ค่า Null หรือ 12:00:00 AM จะแปลงเป็น No ค่าอื่นๆ ทั้งหมดจะแปลงเป็น Yes | |
| สกุลเงิน | ค่าศูนย์หรือ Null จะแปลงเป็น No ค่าอื่นๆ ทั้งหมดจะแปลงเป็น Yes | |
| AutoNumber | ทุกๆ ค่าจะแปลงเป็น Yes | |
| ไฮเปอร์ลิงก์ | ข้อความสั้น | ถ้าข้อความต้นฉบับมีที่อยู่เว็บที่ถูกต้อง เช่น adatum.com www.adatum.com หรือ http://www.adatum.com Access จะแปลงข้อความเป็นไฮเปอร์ลิงก์ Access จะพยายามแปลงค่าอื่นๆ ซึ่งหมายความว่าคุณจะเห็นข้อความที่ขีดเส้นใต้ และเคอร์เซอร์จะเปลี่ยนไปเมื่อคุณชี้ไปที่ลิงก์ แต่ลิงก์จะไม่ทํางาน ข้อความสามารถมีโพรโทคอลเว็บที่ถูกต้องใดๆ ก็ได้ รวมทั้ง http:// gopher:// telnet:// ftp:// และ wais:// |
| ข้อความยาว | ดูรายการก่อนหน้า มีการใช้ข้อจํากัดเดียวกัน | |
| ตัวเลข | ไม่อนุญาตเมื่อเขตข้อมูลตัวเลขเป็นส่วนหนึ่งของความสัมพันธ์ ถ้าค่าดั้งเดิมอยู่ในรูปแบบของที่อยู่อินเทอร์เน็ตโพรโทคอล (IP) ที่ถูกต้อง (ชุดตัวเลขจํานวนสี่ชุดที่คั่นด้วยจุด: nnn.nnn.nnn.nnn) และตัวเลขเกิดขึ้นพร้อมกับที่อยู่เว็บ การแปลงจะส่งผลให้เกิดลิงก์ที่ถูกต้อง มิฉะนั้น Access จะผนวก http:// ไปยังจุดเริ่มต้นของแต่ละค่า และลิงก์ที่เป็นผลลัพธ์ไม่ถูกต้อง | |
| วัน/เวลา | Access จะผนวก http:// ไว้ที่จุดเริ่มต้นของแต่ละที่อยู่ แต่ลิงก์ที่เป็นผลลัพธ์แทบจะใช้งานไม่ได้เลย | |
| สกุลเงิน | Access จะผนวก http:// ไปยังจุดเริ่มต้นของแต่ละค่า แต่เช่นเดียวกับวันที่ ลิงก์ที่เป็นผลลัพธ์แทบจะใช้งานไม่ได้เลย | |
| AutoNumber | ไม่อนุญาตเมื่อเขตข้อมูล AutoNumber เป็นส่วนหนึ่งของความสัมพันธ์ Access จะผนวก http:// ไปยังจุดเริ่มต้นของแต่ละค่า แต่ลิงก์ที่เป็นผลลัพธ์แทบจะใช้งานไม่ได้เลย | |
| ใช่/ไม่ใช่ | Access จะแปลงค่า Yes ทั้งหมดเป็น -1 และค่า No ทั้งหมดเป็น 0 และผนวก http:// ต่อจุดเริ่มต้นของแต่ละค่า ลิงก์ที่เป็นผลลัพธ์ไม่ทํางาน |
การหยุดโหมดปิดใช้งานจากการบล็อกคิวรี
ถ้าคุณพยายามเรียกใช้คิวรีแอคชันและดูเหมือนว่าไม่มีสิ่งใดเกิดขึ้น ให้ตรวจสอบข้อความต่อไปนี้บนแถบสถานะ Access
การกระทำหรือเหตุการณ์นี้ถูกบล็อกโดยโหมดปิดใช้งาน
ตามค่าเริ่มต้น Access จะปิดใช้งานคิวรีแอคชันทั้งหมด (คิวรีแบบใช้อัปเดตข้อมูล ผนวกข้อมูล ลบหรือสร้างตาราง) เว้นแต่ว่าฐานข้อมูลของคุณอยู่ในตําแหน่งที่ตั้งที่เชื่อถือได้ หรือฐานข้อมูลถูกเซ็นชื่อและเชื่อถือได้ ถ้าคุณไม่ได้ดําเนินการอย่างใดอย่างหนึ่งต่อไปนี้ คุณยังคงสามารถเปิดใช้งานคิวรีสําหรับเซสชันฐานข้อมูลปัจจุบันได้โดยการคลิก เปิดใช้งานเนื้อหา บนแถบข้อความ
เวอร์ชันของ SQL: คำสั่ง UPDATE
ถ้าคุณคุ้นเคยกับการทํางานกับ SQL คุณยังสามารถเขียนคําสั่ง UPDATE ได้โดยใช้มุมมอง SQL เมื่อต้องการใช้มุมมอง SQL ให้สร้างคิวรีเปล่าใหม่ แล้วสลับมุมมอง SQL
บทความส่วนนี้แสดงตัวอย่างและไวยากรณ์สำหรับคำสั่ง UPDATE
ไวยากรณ์
UPDATE table SET newvalue WHERE criteria;
คำสั่ง อัปเดต มีส่วนต่างๆ ดังนี้
| ส่วน | คำอธิบาย |
|---|---|
| ตาราง | ชื่อของตารางที่มีข้อมูลที่คุณต้องการจะปรับเปลี่ยน |
| ค่าใหม่ | นิพจน์ที่ระบุค่าที่จะถูกแทรกลงในบางเขตข้อมูลในระเบียนที่มีการอัปเดต |
| เกณฑ์ | นิพจน์ที่กําหนดว่าระเบียนใดจะได้รับการอัปเดต มีเพียงระเบียนที่ตรงกับนิพจน์เท่านั้นที่จะถูกอัปเดต |
ข้อสังเกต
คำสั่ง UPDATE มีประโยชน์เป็นพิเศษเมื่อคุณต้องการเปลี่ยนแปลงหลายระเบียนหรือเมื่อมีระเบียนที่คุณต้องการเปลี่ยนแปลงอยู่ในหลายตาราง
คุณสามารถเปลี่ยนแปลงหลายเขตข้อมูลพร้อมกันได้ ตัวอย่างต่อไปนี้จะเพิ่มค่าจํานวนการสั่งซื้อขึ้น 10 เปอร์เซ็นต์และค่าขนส่งสินค้าอีก 3 เปอร์เซ็นต์สําหรับผู้ขนส่งสินค้าในสหราชอาณาจักร
UPDATE Orders
SET OrderAmount = OrderAmount * 1.1,
Freight = Freight * 1.03
WHERE ShipCountry = 'UK';