กระทู้เก่าบอร์ด อ.Yeadram
2,255 4
URL.หัวข้อ /
URL
ช่วยกันป้อนข้อมูล แล้วจะรวมข้อมูลเข้าด้วยกัน
ผมช่วยกันป้อนข้อมูล บนเครื่อง PC stand alone ใช้ access2003 จะมีวิธีเอาข้อมูลในเครื่องทั้ง 2 มารวมกันอย่างไรครับ ช่วยทีครับ
4 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R05696
สมมติว่าผมได้ A1.mdb และ B1.mdb ซึ่งมีโครงสร้างเมือนกันทุกอย่าง และผมจะ syncronize ตรงไหนครับ ถ้าผมต้องการ ผนวกข้อมูล ในtable voucher
3 @R05699
ขออภัยนะครับ
ในคำตอบแรกของผม มีเขียนผิดไปบ้าง จึงขอแก้ไขบ้างในบางส่วน และได้ทำการเพิ่มเติมในส่วนของรูปประกอบ
พร้อมตั้งชื่อกรณี ให้ด้วย
งานของ kunlek จัดอยู่ในกรณีไหนล่ะครับ
ผมคิดว่าน่าจะ กรณี B นะครับ ซึ่งมันใช้คำสั่ง syncronize ไม่ได้ ต้องทำเองทั้งหมดครับ เอาเป็นว่า รันคิวรี่ นั่นแหละครับ
แต่ kunlek ถามมา 2 ครั้ง ผมก็ยังไม่รู้อยู่ดีว่าผลการรวมแล้ว มันจะอยู่ที่ไหน
- จะเอาข้อมูลจาก B ไปเพิ่มใน A แล้ว ลบ Bทิ้ง
- หรือจะเอาข้อมูลจาก A ไปเพิ่มใน B แล้วลบ A ทิ้ง
- หรือ kunlek จะเอาข้อมูลจาก A ไปวางที่ C
แล้วเอาจาก B เข้าไปรวมอีกที ทีนี้ลบทิ้งได้ทั้ง A และ B หรือเปล่า
วิธีที่ผมแนะไป คือวิธีกลางๆ เลยครับ คือให้ทั้ง A และ B มีข้อมูลเท่ากัน ดังนั้นทั้ง A และ B จึงสามารถนำไปใช้งานได้ต่อไปอีก (เราไม่ลบทั้งคู่ และไม่ต้องสร้างตัวใหม่มารองรับด้วย)
ในคำตอบแรกของผม มีเขียนผิดไปบ้าง จึงขอแก้ไขบ้างในบางส่วน และได้ทำการเพิ่มเติมในส่วนของรูปประกอบ
พร้อมตั้งชื่อกรณี ให้ด้วย
งานของ kunlek จัดอยู่ในกรณีไหนล่ะครับ
ผมคิดว่าน่าจะ กรณี B นะครับ ซึ่งมันใช้คำสั่ง syncronize ไม่ได้ ต้องทำเองทั้งหมดครับ เอาเป็นว่า รันคิวรี่ นั่นแหละครับ
แต่ kunlek ถามมา 2 ครั้ง ผมก็ยังไม่รู้อยู่ดีว่าผลการรวมแล้ว มันจะอยู่ที่ไหน
- จะเอาข้อมูลจาก B ไปเพิ่มใน A แล้ว ลบ Bทิ้ง
- หรือจะเอาข้อมูลจาก A ไปเพิ่มใน B แล้วลบ A ทิ้ง
- หรือ kunlek จะเอาข้อมูลจาก A ไปวางที่ C
แล้วเอาจาก B เข้าไปรวมอีกที ทีนี้ลบทิ้งได้ทั้ง A และ B หรือเปล่า
วิธีที่ผมแนะไป คือวิธีกลางๆ เลยครับ คือให้ทั้ง A และ B มีข้อมูลเท่ากัน ดังนั้นทั้ง A และ B จึงสามารถนำไปใช้งานได้ต่อไปอีก (เราไม่ลบทั้งคู่ และไม่ต้องสร้างตัวใหม่มารองรับด้วย)
4 @R05713
กรณี B ครับ เป็นว่า A คือตัวแม่ B คือตัวลูก เวลาป้อนงานบัญชี ก็คือ เครื่อง A ป้อนบิลค่าใช้จ่ายทุกประเภท ส่วน เครื่อง B ป้อนบิล รายการซื้อ และรายการขาย เมื่อผมจะมางบบัญชี ก็จำเป็นต้องรวมข้อมูล เพื่อออกงบการเงิน เมื่อปีที่แล้วผมถาม อจ.ทีแล้ว และก็ทำสำเร็จด้วย บัญเอิญ HDD ตัวเก่าเ??ีย ผมจดวิธีไว้ใน HDD ปีนี้เลยเศร้า เครื่อง A และ B ไม่สามารถ lan กันได้เพราะอยู่คนละบ้าน
Time: 0.3573s
access 2000-2002 มีระบบ syncronize
มันจะแยก ฐานข้อมูลออกเป็นสองตัว คุณสามารถนำแต่ละตัวไปรัน ไปทำงานกันบนคอมพิวเตอร์คนละเครื่องกันได้เลย
ซึ่งในกระบวนการแยก หรือ split มันจะถามก่อนว่า จะให้ตัวใดเป็นตัวหลัก ก็เลือกตอบตัวใดตัวหนึ่งไป
เมื่อคุณต้องการรวมข้อมูลกัน ก็นำมา syncronize
ถ้า...
1 ข้อมูลใหม่ มีใน A แต่ไม่มีใน B มันจะก็อบปี้ข้อมูล จาก A ไป B (เฉพาะส่วนที่ไม่มี)
2 ข้อมูลเก่า ถ้ามีการเปลี่ยนแปลง มันจะถือว่า ข้อมูลจากตัวหลัก เป็นตัวที่ถูกต้องกว่าเสมอ ดังนั้นมันจะทำกับปรับปรุงข้อมูลของ ตัวรอง ให้ตรงตามตัวหลัก
ใน Access2003 (ผมไม่เคยใช้) ผมคิดว่าระบบนี้ยังคงมีอยู่น่าจะหาทำได้ไม่ยาก
กรณี B สร้างโปรแกรมสร้างระบบและเริ่มทำงานไปแล้ว
เราก็มาแก้กันที่ปลายเหตุ โดยเลียนแบบวิธีการ Syncronize ของมันนั่นแหละครับ
1 การอัพเดตข้อมูล สำหรับบางฟิลด์
เช่น บิลขายเลขที่ 15 ของ databaseA ระบุรหัสลูกค้าเป็นระหัส C005
แต่บิลขายเลขที่ 15 (เลขที่เดียวกัน) ของ databaseB ระบุรหัสลูกค้าเป็นรหัส C001
กรณีนี้ต้องทำการปรับปรุงข้อมูลครับ ต้องทำให้มันตรงกัน การจะทำเช่นนี้ได้ ถ้าข้อมูลมีน้อย คุณอาจสามารถนั่งวิเคราะห์ไปทีละเรคคอร์ด ว่าจะยึดข้อมูลจาก A หรือ B เป็นหลัก แต่นั่นก็จะทำให้ใช้เวลานาน เปลืองทรัพยากรทั้งคน ทั้งไฟ ทั้งเครื่อง ทั้งเวลา
แต่ถ้าจะให้โค้ด หรือคิวรี่สั่งการรวดเดียวคุณก็ต้อง ตั้งสมมติฐานไว้ก่อนเลยว่า จะให้ A หรือ B เป็นตัวหลัก
แล้วเขียนโค้ดไล่ตรวจไปทีละฟิลด์ ดูว่า เรคคอร์ดใด มีปัญหา (บางฟิลด์มีข้อมูลต่างกัน) ก็ให้ทำการอัพเดตเรคคอร์ดนั้นทันที โดยทำการอัพเดตฐานข้อมูลตัวรองให้เปลี่ยนแปลงไปตามฐานข้อมูลหลักโดยไม่มีข้อแม้ใดๆ
นานครับ เพราะว่าเราต้องเช็คทุกๆ เรคคอร์ด ของทุกๆ ตารางๆ จริงๆ ครับ แต่ก็มั่นใจได้ว่าทุกๆ ข้อมูลได้ปรับปรุงให้ตรงกันแล้วจริงๆ
2. การเพิ่มข้อมูลใหม่
2.1 วิเคราะห์หาข้อมูลใหม่โดยดูจาก Primary key เป็นหลัก เช่น การหาว่า เลขที่เอกสารใด มีใน A แต่ไม่มีใน B (ดูจากเลขที่เอกสารอย่างเดียว ข้อมูลฟิลด์อื่นๆ ไม่สน) ก็ทำการเพิ่มข้อมูลเหล่านั้นเข้าไปใน B
อาจเขียนคิวรี่สด ได้ดังนี้
(เขียนในคิวรี่จาก database A)
INSERT INTO B
SELECT table1.*
FROM table1 LEFT JOIN [c:\databaseB.mdb].table1 AS B ON table1.docNo = B.docNo
WHERE (((B.docNo) Is Null));
ทำจนครบทุกตารางครับ
2.2 วิเคราะห์คล้ายกัน แต่ให้ดูจาก databaseB เป็นหลัก ดูว่าข้อมูลใดมีใน B แต่ไม่มีใน A ก็ให้เพิ่มข้อมูลเหล่านั้นเข้ามาใน A ก็สามารถเขียนเป็นคิวรี่ได้ดังตัวอย่าง
(เขียนในคิวรี่จาก databaseA เหมือนเดิมครับไม่ต้องเสียเวลาไปรัน B)
INSERT INTO table1
SELECT B.*
FROM [c:\databaseB.mdb].table1 AS B LEFT JOIN table1 ON B.docNo = table1.docNo
WHERE (((table1.docNo) Is Null));
อันนี้ก็ทำจนครบทุกตารางครับ
ขอแนะนำว่าให้ใช้วิธีจำลองแบบ จะสะดวกกว่าครับ (access โดย microsoft เอง เขาได้ทราบถึงความต้องการนี้มาก่อนแล้ว และได้สร้?งระบบเอาไว้รองรับอยู่แล้วตั้งแต่ต้นครับ)