คุณสามารถใช้คิวรีในฐานข้อมูล Access เพื่อเพิ่ม เปลี่ยนแปลง หรือลบข้อมูลในระเบียนที่มีอยู่ คุณสามารถมองคิวรีแบบใช้อัปเดตข้อมูลว่าเหมือนกับฟอร์มที่มีประสิทธิภาพของกล่องโต้ตอบค้นหาและแทนที่ คุณไม่สามารถใช้คิวรีแบบใช้อัปเดตข้อมูลในการเพิ่มระเบียนใหม่ลงในฐานข้อมูล หรือในการลบระเบียนออกจากฐานข้อมูลได้
ถ้าต้องการเพิ่มระเบียนใหม่ลงในฐานข้อมูล คุณสามารถใช้คิวรีแบบใช้ผนวกข้อมูล และถ้าต้องการลบทั้งระเบียนออกจากฐานข้อมูล คุณสามารถใช้คิวรีแบบใช้ลบข้อมูลได้
ในบทความนี้
- ภาพรวม
- การใช้คิวรีแบบใช้อัปเดตข้อมูล
- การอัปเดตข้อมูลจากตารางหนึ่งไปยังอีกตารางหนึ่ง
- หยุดโหมดปิดใช้งานจากการบล็อกคิวรี
- เวอร์ชันของ SQL: คำสั่ง UPDATE
ภาพรวม
ต่อไปนี้คือความคล้ายคลึงและความแตกต่างกันระหว่าง การค้นหาและแทนที่ กับ คิวรีแบบใช้อัปเดตข้อมูล
คิวรีแบบใช้อัปเดตข้อมูลมีลักษณะเหมือนกับกล่องโต้ตอบ ค้นหาและแทนที่ ตรงที่ช่วยให้คุณสามารถระบุได้ว่าค่าใดที่จะถูกแทนที่และค่าใหม่นั้นคืออะไร
ส่วนสิ่งที่แตกต่างจากกล่องโต้ตอบ ค้นหาและแทนที่ ก็คือคิวรีแบบใช้อัปเดตข้อมูลนั้นสามารถช่วยให้คุณทำสิ่งต่อไปนี้ได้
- ใช้เกณฑ์ที่ไม่ขึ้นกับค่าที่คุณต้องการจะแทนที่
- อัปเดตหลายระเบียนในคราวเดียว
- เปลี่ยนแปลงระเบียนที่อยู่ในหลายตารางในเวลาเดียวกัน
ข้อจำกัดบนเขตข้อมูลที่สามารถอัปเดตได้
คิวรีแบบใช้อัปเดตข้อมูลไม่สามารถใช้อัปเดตข้อมูลในเขตข้อมูลที่มีชนิดต่อไปนี้
เขตข้อมูลจากการคํานวณ ค่าในเขตข้อมูลจากการคํานวณไม่ได้อยู่ในตารางอย่างถาวร ซึ่งจะอยู่ในหน่วยความจําชั่วคราวของคอมพิวเตอร์หลังจากที่ Access คํานวณออกมาแล้วเท่านั้น เนื่องจากเขตข้อมูลจากการคํานวณไม่มีตําแหน่งที่ตั้งสําหรับการจัดเก็บแบบถาวร คุณจึงไม่สามารถทําการอัปเดตได้
เขตข้อมูลจากคิวรีแบบใช้หาผลรวม หรือคิวรีแบบตาราง ค่าที่อยู่ในคิวรีเหล่านี้มาจากการคำนวณ ดังนั้นจึงไม่สามารถอัปเดตได้โดยคิวรีแบบใช้อัปเดตข้อมูล
เขตข้อมูล AutoNumber ตามการดีไซน์ ค่าที่อยู่ในเขตข้อมูล AutoNumber จะเปลี่ยนแปลงเมื่อคุณเพิ่มระเบียนลงในตารางเท่านั้น
เขตข้อมูลในคิวรีแบบค่าไม่ซ้ํากัน และคิวรีแบบระเบียนไม่ซ้ํากัน ค่าที่อยู่ในคิวรีดังกล่าวถูกสรุป ค่าบางค่าจะแทนระเบียนเดียว ในขณะที่ค่าอื่นๆ แทนหลายระเบียน การอัปเดตจะไม่สามารถทําได้ เนื่องจากไม่สามารถระบุได้ว่าระเบียนใดซ้ําและถูกแยกออกไป ดังนั้นจึงไม่สามารถอัปเดตระเบียนที่จําเป็นทั้งหมดได้ ข้อจํากัดนี้ครอบคลุมถึงการอัปเดตข้อมูลของคุณไม่ว่าจะใช้คิวรีแบบใช้อัปเดตข้อมูล หรือพยายามอัปเดตข้อมูลด้วยตนเองด้วยการใส่ค่าในฟอร์มหรือแผ่นข้อมูล
เขตข้อมูลในคิวรีแบบร่วม คุณไม่สามารถอัปเดตข้อมูลจากเขตข้อมูลที่อยู่ในคิวรีแบบร่วมได้ เนื่องจากระเบียนแต่ละระเบียนที่ปรากฏในแหล่งข้อมูลมากกว่าหนึ่งแหล่งจะปรากฏในผลลัพธ์ของคิวรีแบบร่วมเพียงครั้งเดียว เนื่องจากระเบียนที่ซ้ํากันบางระเบียนถูกเอาออกไปจากผลลัพธ์ Access จึงไม่สามารถอัปเดตระเบียนที่จําเป็นทั้งหมดได้
เขตข้อมูลที่เป็นคีย์หลัก ในบางกรณี เช่น ถ้าเขตข้อมูลที่เป็นคีย์หลักถูกใช้ในความสัมพันธ์ของตาราง คุณจะไม่สามารถอัปเดตเขตข้อมูลดังกล่าวด้วยการใช้คิวรีได้ เว้นแต่ว่าคุณจะตั้งค่าให้ความสัมพันธ์อัปเดตเขตข้อมูลที่เกี่ยวข้องทั้งหมดโดยอัตโนมัติเสียก่อน
หมายเหตุ
เมื่อคุณอัปเดตเขตข้อมูลที่เกี่ยวข้อง Access จะอัปเดตค่าของ Foreign Key โดยอัตโนมัติเมื่อคุณเปลี่ยนค่าของคีย์หลักในตารางแม่
การใช้คิวรีแบบใช้อัปเดตข้อมูล
สําหรับวิธีที่ดีที่สุดในการสร้างคิวรีแบบใช้อัปเดตข้อมูล อันดับแรกคุณต้องสร้างคิวรีแบบใช้เลือกข้อมูลก่อนซึ่งจะช่วยระบุระเบียนที่คุณต้องการจะอัปเดต จากนั้นให้แปลงคิวรีนั้นให้เป็นคิวรีแบบใช้อัปเดตข้อมูลซึ่งคุณสามารถเรียกใช้เพื่ออัปเดตระเบียนดังกล่าวได้ การเลือกข้อมูลก่อน คุณสามารถตรวจสอบได้ว่าคุณกําลังอัปเดตระเบียนที่คุณต้องการ ก่อนที่คุณจะทําการเปลี่ยนแปลงข้อมูลใดๆ
เคล็ดลับ
ให้สํารองฐานข้อมูลของคุณก่อนที่จะเรียกใช้คิวรีแบบใช้อัปเดตข้อมูล คุณไม่สามารถเลิกทําผลลัพธ์ของคิวรีแบบใช้อัปเดตข้อมูล และการสํารองข้อมูลไว้ก่อนจะช่วยให้คุณแน่ใจได้ว่าคุณสามารถย้อนกลับการเปลี่ยนแปลงของคุณได้ ถ้าคุณเปลี่ยนใจ
วิธีการสำรองฐานข้อมูล
- คลิกแท็บ ไฟล์ แล้วเลือก บันทึกเป็น
- ทางด้านขวา ภายใต้ขั้นสูง ให้เลือกสํารองฐานข้อมูล
- ในกล่องโต้ตอบ บันทึกไฟล์สํารองเป็น ให้ระบุชื่อและตําแหน่งที่ตั้งสําหรับสําเนาสํารอง แล้วเลือก บันทึก
Access จะปิดไฟล์ต้นฉบับ สร้างไฟล์สำรอง แล้วเปิดไฟล์ต้นฉบับอีกครั้ง
เมื่อต้องการย้อนกลับไปที่ไฟล์สํารอง ให้ปิดและเปลี่ยนชื่อไฟล์ต้นฉบับ เพื่อให้ไฟล์สํารองสามารถใช้ชื่อของต้นฉบับได้ กําหนดชื่อของเวอร์ชันต้นฉบับให้กับสําเนาสํารอง จากนั้นเปิดสําเนาสํารองที่เปลี่ยนชื่อแล้วใน Access
ในส่วนนี้
- ขั้นตอนที่ 1: สร้างคิวรีแบบใช้เลือกข้อมูลเพื่อระบุระเบียนที่ต้องการอัปเดต
- ขั้นตอนที่ 2: อัปเดตระเบียน
ขั้นตอนที่ 1: สร้างคิวรีแบบใช้เลือกข้อมูลเพื่อระบุระเบียนที่ต้องการอัปเดต
เปิดฐานข้อมูลที่มีระเบียนที่คุณต้องการอัปเดต
บนแท็บ สร้าง ในกลุ่ม คิวรี ให้เลือก ออกแบบคิวรี
เลือกแท็บ ตาราง
เลือกตารางที่มีระเบียนที่คุณต้องการอัปเดต เลือก เพิ่ม แล้วเลือก ปิด
จะมีตารางอย่างน้อยหนึ่งตารางปรากฏขึ้นในหน้าต่างในตัวออกแบบคิวรี โดยหน้าต่างเหล่านั้นจะแสดงเขตข้อมูลทั้งหมดในแต่ละตาราง รูปนี้แสดงตัวออกแบบคิวรีที่มีตารางปกติ
ตารางแสดงในตัวออกแบบคิวรี
ตารางออกแบบแบบสอบถามดับเบิลคลิกที่เขตข้อมูลที่คุณต้องการอัปเดตในหน้าต่างตาราง เขตข้อมูลที่เลือกจะปรากฏในแถว เขตข้อมูล ในตารางออกแบบคิวรี
คุณสามารถเพิ่มเขตข้อมูลตารางหนึ่งเขตข้อมูลต่อคอลัมน์ในตารางออกแบบคิวรี
เมื่อต้องการเพิ่มเขตข้อมูลทั้งหมดในตารางอย่างรวดเร็ว ให้ดับเบิลคลิกที่เครื่องหมายดอกจัน ()* ด้านบนสุดของรายการเขตข้อมูลตารางในหน้าต่างตาราง รูปนี้แสดงตารางออกแบบคิวรีโดยมีการเพิ่มเขตข้อมูลทั้งหมด
เมื่อต้องการจำกัดผลลัพธ์ของคิวรีตามค่าในเขตข้อมูล ให้ไปที่ตารางออกแบบคิวรี ในแถว เกณฑ์ แล้วใส่เกณฑ์ที่คุณต้องการใช้จำกัดผลลัพธ์
ตารางตัวอย่างเกณฑ์
ตารางต่อไปนี้แสดงตัวอย่างเกณฑ์และอธิบายผลของเกณฑ์เหล่านั้นที่มีต่อผลลัพธ์ของคิวรีหมายเหตุ
ตัวอย่างจำนวนมากในตารางนี้จะใช้อักขระตัวแทนเพื่อให้คิวรีมีความยืดหยุ่นมากขึ้นหรือมีประสิทธิภาพสูงขึ้น
เกณฑ์ เอฟเฟ็กต์ >234 ส่งกลับตัวเลขทั้งหมดที่มากกว่า 234 เมื่อต้องการหาตัวเลขทั้งหมดที่น้อยกว่า 234 ให้ใช้ < 234 >="คาเชน" ส่งกลับระเบียนทั้งหมดที่มีคำว่า สิทธิชัย ตั้งแต่อักษรตัวแรกจนถึงตัวสุดท้าย Between #2/2/2020# And #1/12/2020# ส่งกลับวันตั้งแต่ 2 ก.พ. 17 ถึง 1 ธ.ค. 17 (ANSI-89) ถ้าฐานข้อมูลของคุณใช้อักขระตัวแทนตามมาตรฐาน ANSI-92 ให้ใช้เครื่องหมายอัญประกาศเดี่ยว (') แทนเครื่องหมายเลขที่ (#) ตัวอย่าง: ระหว่าง '2/2/2020' และ '1/12/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') < Date( ) - 30 ใช้ฟังก์ชัน Date เพื่อส่งกลับวันที่ทั้งหมดที่เลย 30 วันมาแล้ว Date() ใช้ฟังก์ชัน Date เพื่อส่งกลับระเบียนทั้งหมดที่มีวันที่เป็นวันนี้ Between Date( ) And DateAdd("M", 3, Date( )) ใช้ฟังก์ชัน Date และ DateAdd เพื่อส่งกลับระเบียนทั้งหมดระหว่างวันที่ของวันนี้และอีกสามเดือนถัดไปนับตั้งแต่วันนี้ Is Null ส่งกลับทุกระเบียนที่มีค่า Null (ว่างหรือไม่ได้ระบุ) Is Not Null ส่งกลับทุกระเบียนที่มีค่า "" ส่งกลับระเบียนทั้งหมดที่มีสตริงที่มีความยาวเป็นศูนย์ คุณใช้สตริงที่มีความยาวเป็นศูนย์เมื่อคุณต้องการเพิ่มค่าให้กับเขตข้อมูลที่ต้องการ แต่คุณยังไม่ทราบว่าค่าที่เพิ่มคืออะไร ตัวอย่างเช่น เขตข้อมูลต้องการหมายเลขโทรสาร แต่ลูกค้าของคุณบางรายอาจไม่มีเครื่องโทรสาร ในกรณีดังกล่าว คุณจะใส่เครื่องหมายอัญประกาศโดยไม่เว้นวรรคระหว่างกลาง ("") แทนตัวเลข บนแท็บ ออกแบบคิวรี ในกลุ่ม ผลลัพธ์ ให้เลือก เรียกใช้
ตรวจสอบว่าคิวรีส่งกลับระเบียนที่คุณต้องการอัปเดต
เมื่อต้องการเอาเขตข้อมูลใดๆ ที่คุณไม่ต้องการให้รวมอยู่ในการออกแบบคิวรีออก ให้เลือกเขตข้อมูลนั้น แล้วกด DELETE
เมื่อต้องการเพิ่มเขตข้อมูลใดๆ ที่คุณต้องการให้รวมอยู่ในการออกแบบคิวรี ให้ลากเขตข้อมูลที่ต้องการเพิ่มลงไปในตารางการออกแบบคิวรี
ขั้นตอนที่ 2: อัปเดตระเบียน
บนแท็บ ออกแบบคิวรี ในกลุ่ม ชนิดคิวรี ให้เลือก อัปเดต
กระบวนการนี้จะแสดงวิธีการเปลี่ยนคิวรีแบบใช้เลือกข้อมูลเป็นคิวรีแบบใช้อัปเดตข้อมูล เมื่อคุณทําเช่นนี้ Access จะเพิ่มแถว อัปเดตไปยัง ในตารางออกแบบคิวรี ภาพประกอบต่อไปนี้แสดงคิวรีแบบใช้อัปเดตข้อมูลซึ่งส่งกลับสินทรัพย์ทั้งหมดที่ซื้อหลังจากวันที่ 5 มกราคม 2548 และเปลี่ยนตําแหน่งที่ตั้งในทุกระเบียนที่ตรงตามเกณฑ์เป็น "คลังสินค้า 3"
ค้นหาตำแหน่งเขตข้อมูลที่มีข้อมูลที่คุณต้องการเปลี่ยนแปลง แล้วพิมพ์นิพจน์ของคุณ (เกณฑ์การเปลี่ยนแปลง) ลงในแถว อัปเดตเป็น ของเขตข้อมูลนั้น
คุณสามารถใช้นิพจน์ที่ถูกต้องอะไรก็ได้ในแถว อัปเดตเป็น
ตารางตัวอย่างนิพจน์
ตารางนี้จะแสดงนิพจน์ตัวอย่างจำนวนหนึ่ง พร้อมอธิบายวิธีที่นิพจน์เหล่านี้เปลี่ยนแปลงข้อมูลนิพจน์ ผลลัพธ์ "พนักงานขาย" ในเขตข้อมูล ข้อความสั้น จะเปลี่ยนค่าข้อความให้เป็นคําว่า พนักงานขาย #8/10/20# ในเขตข้อมูล Date/Time จะเปลี่ยนค่าวันที่ให้เป็น 10-ส.ค.-20 ใช่ ในเขตข้อมูล Yes/No จะเปลี่ยนค่า No ให้เป็น Yes "PN" & [หมายเลขชิ้นส่วน] เพิ่ม "PN" ลงในส่วนเริ่มต้นของแต่ละหมายเลขชิ้นส่วนที่ระบุ [ราคาต่อหน่วย] * [ปริมาณ] คูณค่าในเขตข้อมูลที่ชื่อราคาต่อหน่วยและปริมาณ [ค่าขนส่งสินค้า] * 1.5 เพิ่มค่าในเขตข้อมูลชื่อค่าขนส่งสินค้าอีก 50 เปอร์เซ็นต์ DSum("[ปริมาณ] * [ราคาต่อหน่วย]",
"รายละเอียดใบสั่งซื้อ", "[หมายเลขผลิตภัณฑ์]=" & [หมายเลขผลิตภัณฑ์])เมื่อค่าหมายเลขผลิตภัณฑ์ในตารางปัจจุบันมีค่าตรงกับค่าหมายเลขผลิตภัณฑ์ในตารางชื่อรายละเอียดใบสั่งซื้อ นิพจน์นี้จะอัปเดตยอดขายรวมทั้งหมดโดยการคูณค่าในเขตข้อมูลชื่อ จํานวน ด้วยค่าในเขตข้อมูลชื่อ ราคาต่อหน่วย นิพจน์นี้ใช้ฟังก์ชัน 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 จะรวมเขตข้อมูลที่เกี่ยวข้องกันไว้ในคิวรีโดยอัตโนมัติ ถ้าต้องการรวมเขตข้อมูลที่มีข้อมูลที่เกี่ยวข้องกันด้วยตนเอง ให้ลากเขตข้อมูลที่เกี่ยวข้องกันจากตารางหนึ่งไปยังเขตข้อมูลที่สอดคล้องกันในอีกตารางหนึ่ง
ตัวอย่างเช่น ถ้าคุณใช้ตารางตัวอย่างที่แสดงก่อนหน้านี้ คุณจะลากเขตข้อมูล รหัสผู้ซื้อ ไปยังเขตข้อมูล รหัสลูกค้า Access จะสร้างความสัมพันธ์ระหว่างเขตข้อมูลเหล่านั้นในตารางทั้งสอง และใช้ความสัมพันธ์นั้นในการรวมระเบียนใดๆ ที่เกี่ยวข้อง - บนแท็บ ออกแบบคิวรี ในกลุ่ม ชนิดคิวรี ให้เลือก อัปเดต
- ในตารางปลายทาง ให้ดับเบิลคลิกที่เขตข้อมูลที่คุณต้องการอัปเดต แต่ละเขตข้อมูลจะปรากฏในแถว เขตข้อมูล ในตารางออกแบบคิวรี
ถ้าคุณใช้ตารางตัวอย่าง ให้คุณเพิ่มเขตข้อมูลทั้งหมด ยกเว้น เขตข้อมูล ID ลูกค้า ให้สังเกตว่าชื่อของตารางปลายทางจะปรากฏในแถว ตาราง ของตารางออกแบบ - ในแถว อัปเดตเป็น ของคิวรี ในแต่ละคอลัมน์ที่มีเขตข้อมูลปลายทาง ให้เพิ่มชื่อของตารางต้นฉบับและเขตข้อมูลในตารางต้นฉบับที่สัมพันธ์กับเขตข้อมูลในตารางปลายทาง และตรวจสอบให้แน่ใจว่าคุณใช้ไวยากรณ์ต่อไปนี้ [ตาราง].[ Field] ซึ่งคุณจะใส่ชื่อตารางและเขตข้อมูลไว้ในเครื่องหมายวงเล็บเหลี่ยม และแยกชื่อตารางและชื่อเขตข้อมูลด้วยจุด
รูปนี้แสดงให้เห็นส่วนของตารางออกแบบ โดยใช้ตารางตัวอย่าง ให้สังเกตไวยากรณ์ของชื่อตารางและเขตข้อมูลในแถว อัปเดตเป็น
ในขณะดําเนินการ โปรดทราบว่า คุณจะต้องสะกดชื่อตารางและชื่อเขตข้อมูลในแถว อัปเดตเป็น ให้ถูกต้อง และคุณต้องใส่เครื่องหมายวรรคตอนให้ตรงกับชื่อตารางและเขตข้อมูลดั้งเดิมด้วย อย่างไรก็ตาม คุณไม่จําเป็นต้องจับคู่ตัวพิมพ์ใหญ่ - บนแท็บ ออกแบบคิวรี ในกลุ่ม ผลลัพธ์ ให้เลือก เรียกใช้
- เมื่อถูกขอให้ยืนยันการอัปเดต ให้เลือกใช่
ข้อจำกัดในการแปลงชนิดข้อมูล
ตารางต่อไปนี้จะแสดงชนิดข้อมูลที่ 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 แต่มีขนาดเขตข้อมูลหรือจำนวนทศนิยม (ความแม่นยำ) ต่างกัน | ค่าจะต้องไม่มากหรือน้อยไปกว่าที่ขนาดของเขตข้อมูลใหม่จะจัดเก็บได้ การเปลี่ยนจํานวนทศนิยมอาจทําให้ Access ต้องปัดเศษบางค่า | |
| วันที่/เวลา | วันที่ที่คุณสามารถแปลงได้จะขึ้นอยู่กับขนาดของเขตข้อมูลตัวเลข โปรดจําไว้ว่า Access เก็บวันทั้งหมดในรูปวันที่อนุกรม และเก็บค่าของวันเป็นจํานวนเต็มของเลขทศนิยมลอยตัวที่มีความแม่นยําสูง Access ใช้วันที่ 30 ธันวาคม 1899 เป็นวันที่ 0 วันที่นอกเหนือจากช่วง 18 เมษายน 1899 ถึง 11 กันยายน 1900 จะมีขนาดเกินเขตข้อมูลชนิด Byte วันที่นอกเหนือจากช่วง 13 เมษายน 1810 ถึง 16 กันยายน 1989 จะมีขนาดเกินเขตข้อมูลชนิด จํานวนเต็ม เมื่อต้องการให้ครอบคลุมวันที่ทั้งหมดที่เป็นไปได้ ให้ตั้งค่าคุณสมบัติ ขนาดเขตข้อมูล ของเขตข้อมูล Number ของคุณเป็น Long Integer หรือสูงกว่า |
|
| สกุลเงิน | ค่าจะต้องไม่เกิน (หรืออยู่ภายใน) ขนาดของเขตข้อมูลที่จํากัดไว้ ตัวอย่างเช่น คุณสามารถแปลงเขตข้อมูล Currency ไปเป็นเขตข้อมูล Integer ได้ก็ต่อเมื่อค่าเหล่านั้นมากกว่า 255 และไม่เกิน 32,767 | |
| AutoNumber | ค่าจะต้องอยู่ภายในขนาดจำกัดของเขตข้อมูล | |
| ใช่/ไม่ใช่ | ค่า "Yes" แปลงเป็น -1 ค่า "No" แปลงเป็น 0 | |
| วันที่/เวลา | ข้อความสั้น | ข้อความดั้งเดิมต้องเป็นวันที่หรือวันที่/เวลาที่รู้จัก ตัวอย่างเช่น 18 ม.ค. 2020 |
| ข้อความยาว | ข้อความดั้งเดิมต้องเป็นวันที่หรือวันที่/เวลาที่รู้จัก ตัวอย่างเช่น 18 ม.ค. 2020 | |
| ตัวเลข | ค่าจะต้องอยู่ระหว่าง -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 น.) | |
| สกุลเงิน | ข้อความสั้น | ข้อความต้องประกอบด้วยตัวเลขและตัวคั่นที่ถูกต้อง |
| ข้อความยาว | ข้อความต้องประกอบด้วยตัวเลขและตัวคั่นที่ถูกต้อง | |
| ตัวเลข | ไม่มีข้อจำกัด | |
| วันที่/เวลา | ไม่มีข้อจำกัด แต่ 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:// |
| ข้อความยาว | ดูรายการก่อนหน้า ใช้ข้อจํากัดเดิม | |
| ตัวเลข | ไม่ได้รับอนุญาตเมื่อเขตข้อมูล Number เป็นส่วนหนึ่งของความสัมพันธ์ ถ้าค่าดั้งเดิมมีรูปแบบเป็นที่อยู่อินเทอร์เน็ตโพรโทคอล (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';