กระทู้เก่าบอร์ด อ.Yeadram
2,625 6
URL.หัวข้อ /
URL
บันทึกข้อมูลจากฟอร์มบนหน้าจอ ลงเทเบิล 2 เทเบิล
http://thai-access.com/suphap.php?topic_id=2558
ลองดูนะครับ
1. สร้าง Appen Query ขึ้นมา 2 ตัว โดยใน Criteria ให้อ้างอิงชื่อ Field (น่าจะเป็น เลขประจำตัว) ใน Main Form
เช่น [Forms]![ชื่อ Form]![ชื่อ Filed บน Form]
2. สร้างปุ่ม Command Button ขึ้นมา แล้วใส่ Code นี้ลงไป
DoCmd.SetWarnings False
DoCmd.OpenQuery "ชื่อ Query ที่ทำจาก ข้อ 1 ตัวที่หนึ่ง", acViewNormal, acEdit
DoCmd.OpenQuery "ชื่อ Query ที่ทำจาก ข้อ 1 ตัวที่หนึ่ง", acViewNormal, acEdit
DoCmd.SetWarnings False
ลองดูนะครับ
Suchat
ชลบุรี
จากคำถามข้างบน
อยากถามเพิ่มนะครับ ในกรณีที่ Field ไม่ใช่เลขประจำตัว แต่เป็นเลขธรรมดา และในบางครั้งเป็นเลขที่ซ้ำ ๆ กัน เวลาเราAppen ข้อมูลเข้าไป มันจะออกข้อมูลเดิมมาด้วย ทำอย่างไรไม่ให้ออกข้อมูลเดิมกรณีที่มีเลขซ้ำกัน ให้ออกเฉพาะข้อมูลใหม่เลยครับ
ลองดูนะครับ
1. สร้าง Appen Query ขึ้นมา 2 ตัว โดยใน Criteria ให้อ้างอิงชื่อ Field (น่าจะเป็น เลขประจำตัว) ใน Main Form
เช่น [Forms]![ชื่อ Form]![ชื่อ Filed บน Form]
2. สร้างปุ่ม Command Button ขึ้นมา แล้วใส่ Code นี้ลงไป
DoCmd.SetWarnings False
DoCmd.OpenQuery "ชื่อ Query ที่ทำจาก ข้อ 1 ตัวที่หนึ่ง", acViewNormal, acEdit
DoCmd.OpenQuery "ชื่อ Query ที่ทำจาก ข้อ 1 ตัวที่หนึ่ง", acViewNormal, acEdit
DoCmd.SetWarnings False
ลองดูนะครับ
Suchat
ชลบุรี
จากคำถามข้างบน
อยากถามเพิ่มนะครับ ในกรณีที่ Field ไม่ใช่เลขประจำตัว แต่เป็นเลขธรรมดา และในบางครั้งเป็นเลขที่ซ้ำ ๆ กัน เวลาเราAppen ข้อมูลเข้าไป มันจะออกข้อมูลเดิมมาด้วย ทำอย่างไรไม่ให้ออกข้อมูลเดิมกรณีที่มีเลขซ้ำกัน ให้ออกเฉพาะข้อมูลใหม่เลยครับ
6 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R05964
ลองศึกษา Query Update เพิ่มเติมครับ
2 @R05975
ใช้ Query Update ไม่ได้ครับ เพราะในกรณีที่ตาราง tabel1 ไม่มีเลขที่ ที่ในตาราง table 2 ก็ไม่สามารถUpdate ได้
ผมอยากทำแบบ Appen Query แต่ให้ Appen เฉพาะข้อมูลใหม่ ข้อมูลเก่ากรณีที่เลขที่ซ้ำ้กันก็ไม่ต้อง Appen เข้าไป
ตามภาพนะครับ ผมป้อนข้อมูล 2:350 man:12 และก็ป้อนเข้าำไป โดยฟิลด์2 บางครั้งอาจมีข้อมูลซ้ำกัน เมื่อเรา Appen เข้าไป ข้อมูลที่เราเคยป้อนแล้วจะเข้ามาด้วย
ไม่ต้องการให้ข้อมูลเก่าเข้าไปให้เข้าเฉพาะข้อมูลนะครัีบ
ผมอยากทำแบบ Appen Query แต่ให้ Appen เฉพาะข้อมูลใหม่ ข้อมูลเก่ากรณีที่เลขที่ซ้ำ้กันก็ไม่ต้อง Appen เข้าไป
ตามภาพนะครับ ผมป้อนข้อมูล 2:350 man:12 และก็ป้อนเข้าำไป โดยฟิลด์2 บางครั้งอาจมีข้อมูลซ้ำกัน เมื่อเรา Appen เข้าไป ข้อมูลที่เราเคยป้อนแล้วจะเข้ามาด้วย
ไม่ต้องการให้ข้อมูลเก่าเข้าไปให้เข้าเฉพาะข้อมูลนะครัีบ
3 @R05982
ตามอ่านมา ก็ยังงงๆ ตกลงจะ update หรือ append
เอาเป็นว่าขอแนะนำเฉพาะการ append โดยมีเงื่อนไขตามที่กล่าวถึงล่าสุดก็แล้วกันนะครับ
การเพิ่มข้อมูล จาก table2 เข้าไปที่ table1 โดยมีเงื่อนไขว่า ต้องเป็นรายการที่ไม่เคยมีใน table1
มันก็คือการใช้ sql statement แบบ insert into โดยระบุเงื่อนไข
ถ้าเขียนไม่คล่อง ให้ใช้ตัวช่วยครับ ดังนี้
- สร้างคิวรี่อันใหม่ โดยใช้ตัวเลือก "ตัวช่วยสร้างคิวรี่ค้นหาข้อมูลที่ไม่เข้าคู่กัน"
- ตัวช่วยจะพาคุณทำครับ มันจะให้คุณเลือกตาราง 2 ครั้ง ในครั้งแรกให้คุณเลือก table2 (ข้อมูลต้นทาง) ครั้งที่สองให้คุณเลือก table1 (ตารางเป้าหมาย)
- ตัวช่วยจะให้คุณระบุสิ่งที่เกี่ยวเนื่องกันระหว่างสองตารางนี้ ก็ให้คุณเลือกฟิลด์ "เลขที่" ของคุณครับ
- ตัวช่วยจะถามคุณอีกว่า จะให้แสดงผลฟิลด์ใดบ้าง ให้คุณเลือกทั้งหมดเลยครับ
- ทีนี้ก็เซฟคิวรี่ แล้วดูผลครับ คุณก็จะได้ข้อมูลของ table2 ที่ยังไม่เคยมีใน table1
- ต่อไป ให้เปลี่ยนมุมมองของคิวรี่นี้ไปเป็นมุมมองออกแบบ แล้วเลือกคำสั่งจาก เมนูของ Access ให้เปลี่ยนชนิดของคิวรี่ตัวนี้ไปเป็น "แบบสอบถามแบบใช้ผนวกข้อมูล"
- ระบบจะถามคุณว่า จะให้เพิ่มข้อมูลเข้าไปที่ตารางใด คุณก็ระบุให้มันไปครับ ว่าเป็น table1 (ตารางเป้าหมาย)
- ตัวคิวรี่เองจะมีการปรับเปลี่ยนหน้าตาไปนิดหน่อย นั่นคือเพิ่มบรรทัดมาอีกบรรทัดหนึ่ง ซึ่งจะเป็นการเติมชื่อฟิลด์ของ table1 ลงไปให้โดยอัตโนมัติ
- ให้คุณมองดูที่ฟิลด์สุดท้ายเลยครับ สังเกตุเห็นว่าฟิลด์นี้จะมีคำว่า "IS NULL" อยู่ในบรรทัด "เงื่อนไข" ให้คุณมองขึ้นไปอีกบรรทัดหนึ่ง จะเห็นชื่อฟิลด์ "เลขที่" ให้ลบมันออกครับ
- สั่งรันคิวรี่ได้เลยครับ
หมายเหตุ............. กรณีนี้ต้องมันใจว่า table1 กับ table2 มีจำนวนฟิลด์ มีชื่อฟิลด์ ชนิดของฟิลด์แต่ละฟิลด์ ต้องเหมือนกันทุกประการนะครับ ถึงจะได้ผล
เอาเป็นว่าขอแนะนำเฉพาะการ append โดยมีเงื่อนไขตามที่กล่าวถึงล่าสุดก็แล้วกันนะครับ
การเพิ่มข้อมูล จาก table2 เข้าไปที่ table1 โดยมีเงื่อนไขว่า ต้องเป็นรายการที่ไม่เคยมีใน table1
มันก็คือการใช้ sql statement แบบ insert into โดยระบุเงื่อนไข
ถ้าเขียนไม่คล่อง ให้ใช้ตัวช่วยครับ ดังนี้
- สร้างคิวรี่อันใหม่ โดยใช้ตัวเลือก "ตัวช่วยสร้างคิวรี่ค้นหาข้อมูลที่ไม่เข้าคู่กัน"
- ตัวช่วยจะพาคุณทำครับ มันจะให้คุณเลือกตาราง 2 ครั้ง ในครั้งแรกให้คุณเลือก table2 (ข้อมูลต้นทาง) ครั้งที่สองให้คุณเลือก table1 (ตารางเป้าหมาย)
- ตัวช่วยจะให้คุณระบุสิ่งที่เกี่ยวเนื่องกันระหว่างสองตารางนี้ ก็ให้คุณเลือกฟิลด์ "เลขที่" ของคุณครับ
- ตัวช่วยจะถามคุณอีกว่า จะให้แสดงผลฟิลด์ใดบ้าง ให้คุณเลือกทั้งหมดเลยครับ
- ทีนี้ก็เซฟคิวรี่ แล้วดูผลครับ คุณก็จะได้ข้อมูลของ table2 ที่ยังไม่เคยมีใน table1
- ต่อไป ให้เปลี่ยนมุมมองของคิวรี่นี้ไปเป็นมุมมองออกแบบ แล้วเลือกคำสั่งจาก เมนูของ Access ให้เปลี่ยนชนิดของคิวรี่ตัวนี้ไปเป็น "แบบสอบถามแบบใช้ผนวกข้อมูล"
- ระบบจะถามคุณว่า จะให้เพิ่มข้อมูลเข้าไปที่ตารางใด คุณก็ระบุให้มันไปครับ ว่าเป็น table1 (ตารางเป้าหมาย)
- ตัวคิวรี่เองจะมีการปรับเปลี่ยนหน้าตาไปนิดหน่อย นั่นคือเพิ่มบรรทัดมาอีกบรรทัดหนึ่ง ซึ่งจะเป็นการเติมชื่อฟิลด์ของ table1 ลงไปให้โดยอัตโนมัติ
- ให้คุณมองดูที่ฟิลด์สุดท้ายเลยครับ สังเกตุเห็นว่าฟิลด์นี้จะมีคำว่า "IS NULL" อยู่ในบรรทัด "เงื่อนไข" ให้คุณมองขึ้นไปอีกบรรทัดหนึ่ง จะเห็นชื่อฟิลด์ "เลขที่" ให้ลบมันออกครับ
- สั่งรันคิวรี่ได้เลยครับ
หมายเหตุ............. กรณีนี้ต้องมันใจว่า table1 กับ table2 มีจำนวนฟิลด์ มีชื่อฟิลด์ ชนิดของฟิลด์แต่ละฟิลด์ ต้องเหมือนกันทุกประการนะครับ ถึงจะได้ผล
4 @R05984
ขอบคุณมากครับ
5 @R05985
คือตามที่คุณ yeadram แนะนำใช้ได้แล้วครับ แต่จริง ๆ แล้วที่ต้องการคือว่า
มีกรณีที่เลขที่ซ้ำกันไม่สามารถ append เข้าไปได้
คืออยากเขียนให้ในกรณีที่ มีเลขซ้าก็สามารถ append เข้าไปได้ด้วย
โดยไม่ต้องนำข้อมูลที่เราเคย append นั้นเข้าไปอีก เพราะมันจะไปซ้ำกัน
ต้องขอโทษด้วยครับผมอาจจะถามคำถามอ่านแล้วไม่เข้าใจ
มีกรณีที่เลขที่ซ้ำกันไม่สามารถ append เข้าไปได้
คืออยากเขียนให้ในกรณีที่ มีเลขซ้าก็สามารถ append เข้าไปได้ด้วย
โดยไม่ต้องนำข้อมูลที่เราเคย append นั้นเข้าไปอีก เพราะมันจะไปซ้ำกัน
ต้องขอโทษด้วยครับผมอาจจะถามคำถามอ่านแล้วไม่เข้าใจ
6 @R05995
เปิดตาราง table1 ในมุมมองออกแบบ สำรวจดูว่า
-มีฟิลด์ Primary หรือไม่ ++ ให้ลดสิทธ์มันลงมาเท่ากับฟิลด์อื่นๆ
-มีฟิลด์ใดๆ ทำหน้าที่เป็น ดัชนี ที่ห้ามข้อมูลซ้ำหรือไม่ ++ ให้ลดสิทธิ์หรือข้อจำกัดเหล่านั้นออก เพื่อให้เท่ากับฟิลด์อื่นๆ
-ถ้าตารางนี้ (table1) มีความสัมพ์นธ์กับตารางอื่นๆ แบบ one-to-many โดยตัวของมันอยู่ในฝั่ง one ++ให้เอาความสัมพันธ์ออก
ทีนี้คุณ append ด้วยวิธีของคุณได้เลย มันจะไม่ฟ้อง ไม่ขวางคุณอีกแล้ว แม้จะมีข้อมูลซ้ำก็ตาม
คำเตือน ....... "คุณกำลังทำงานหรือทำโปรแกรมผิดวัตถุประสงค์ของ Access"
เพราะ Access คือ "การจัดการข้อมูลในฐานข้อมูล"
การจัดการข้อมูล คือการสร้างระเบียบของข้อมูลที่มีความซับซ้อนเพื่อไม่ให้ซ้ำซ้อน
-มีฟิลด์ Primary หรือไม่ ++ ให้ลดสิทธ์มันลงมาเท่ากับฟิลด์อื่นๆ
-มีฟิลด์ใดๆ ทำหน้าที่เป็น ดัชนี ที่ห้ามข้อมูลซ้ำหรือไม่ ++ ให้ลดสิทธิ์หรือข้อจำกัดเหล่านั้นออก เพื่อให้เท่ากับฟิลด์อื่นๆ
-ถ้าตารางนี้ (table1) มีความสัมพ์นธ์กับตารางอื่นๆ แบบ one-to-many โดยตัวของมันอยู่ในฝั่ง one ++ให้เอาความสัมพันธ์ออก
ทีนี้คุณ append ด้วยวิธีของคุณได้เลย มันจะไม่ฟ้อง ไม่ขวางคุณอีกแล้ว แม้จะมีข้อมูลซ้ำก็ตาม
คำเตือน ....... "คุณกำลังทำงานหรือทำโปรแกรมผิดวัตถุประสงค์ของ Access"
เพราะ Access คือ "การจัดการข้อมูลในฐานข้อมูล"
การจัดการข้อมูล คือการสร้างระเบียบของข้อมูลที่มีความซับซ้อนเพื่อไม่ให้ซ้ำซ้อน
Time: 0.3363s