นำเข้าข้อมูลครั้งละหลายตารางจากฐานข้อมูลอื่นได้ไหม
กระทู้เก่าบอร์ด อ.Yeadram

 6,704   38
URL.หัวข้อ / URL
นำเข้าข้อมูลครั้งละหลายตารางจากฐานข้อมูลอื่นได้ไหม

อยากทราบว่า เราสามารถนำเข้าข้อมูลครั้งละหลายตาราง จากฐานข้อมูลอื่นซึ่งเป็นAccess เหมือนกันและมีโครงสร้างเหมือนกันได้ไหมคะ สมมติฐานข้อมูลเป้าหมายที่เราจะไปเอาข้อมูลมีชื่อว่า Access-1 และฐานข้อมูลปัจจุบันของเราชื่อว่า Access-2 ซึ่งฐานข้อมูลทั้งสอง มีตารางเก็บข้อมูลอยู่ 10 ตารางโดยมีโครงสร้างเหมือนกัน
ความต้องการของหนูก็คือ ที่ฐานข้อมูล Access-2 จะมีฟอร์มอยู่หนึ่งฟอร์มซึ่งมีปุ่มให้คลิก เมือคลิกแล้วก็ให้ไปโหลดข้อมูลจาก Access-1 มาเข้าใน Access-2 ทั้งหมด ทุกตารางค่ะ อยากทราบว่า Access สามารถทำได้หรือไม่ ถ้าได้..เราต้องเขียนโค๊คคำสั่งให้กับปุ่มนี้อย่างไรบ้างคะ

38 Reply in this Topic. Dispaly 2 pages and you are on page number 2

21 @R07955
1.) เมื่อเราคลิกลากสร้างปุ่มคำสั่งบนฟอร์แล้ว มันจะมีหน้าต่างตัวช่วยสร้างปุ่มคำสั่งขึ้นมา ก็ให้คลิกปุ่มยกเลิกไปค่ะ

2.) จะได้ปุ่มคำสั่งว่างๆที่ยังไม่ได้เขียนโค้ดอะไรลงไป ให้คลิกขวาที่ปุ่มคำสั่งนั้นแล้วเลือกรายการ "คุณสมบัติ"

3.) ที่หน้าต่างคุณสมบัติ คลิกที่ท้ายช่องรายการ "เมื่อคลิก" แล้วเลือก [Event Procedure]

4.) จากนั้นคลิกที่ปุ่ม "... " จะเข้าที่หน้าต่างสำหรับเขียนโค้ด

5.) จัดการใส่โค้ดที่ต้องการลงไปเลยค่ะ

ดูภาพประกอบไปด้วยอาจช่วยให้เข้าใจง่ายขึ้นนะคะ


22 @R07956
   คุณมาลีค่ะ หนูทำตามในบอร์ดเกิดปัญหา ดังภาพค่ะ และที่ไหม่เข้าใจคือ ต้องสร้างแทคบอคยังไงแล้วไปวางไว้ที่ไหนค่ะ ตอนนี้ปุ่มทำแล้ว โค๊ดก็ใส่แล้ว
โฟลเดอร์ก็สร้างแล้วเก็บไว้ที่ไดร์ D ชื่อ browse test
      กรุณาแนะนำต่อด้วยนะค่ะ มือใหม่จริงๆๆขอบคุณค่ะ



                                                  ขอบคุณค่ะ
23 @R07957
Error ลักษณะนี้ ตอนที่ทำแรกๆหนูก็เคยเจอ แต่จำไม่ได้แล้วว่าแก้อย่างไร ปัจจุบันไฟล์ตัวนั้นก็ไม่ได้ใช้มานานแล้ว ว่าจะส่งไปให้ดูตัวอย่างแต่ยังหาไฟล์นั้นไม่พบค่ะ
เดี๋ยวรอให้อาจารย์ท่านมาช่วยตอบให้นะคะ เรื่องของโค้ด...หนูยังอนุบาลอยู่เลยค่ะ
24 @R07959
ลองตรวจสอบดูว่าตั้งชื่อ เท็กซ์บ๊อกซ์ หรือ ปุ่มไม่ตรงกับในโค้ดหรือเปล่าครับ
ในกรณีที่คุณยังไม่เข้าใจหลักการในการเขียนโค้ดโปรแกรมนั้น หากคุณก๊อปปี้โค้ดมาใช้งาน ต้องตรวจดูให้แน่ใจว่าตั้งชื่อของปุ่ม หรือเท็กซ์บ๊อกซ์ที่ในโค้ดเขียนอ้างอิงเอาไว้ได้ตรงกับในโค้ดครับ
25 @R07964
มีฐานข้อมูลที่เป็นตาราง (ตารางจะเหมือนกันทุกคอลัม) ให้แต่ละแผนก กรอกข้อมูล พอสิ้นเดือนก็นำมารวมกัน ที่เครื่องหลัก
ฐานข้อมูลหลักของหนู ชื่อ PST ตารางชื่อ NAM เก็บไว้ที่ไดร์ D


พิจารณาความต้องการของคุณพรแล้ว หนูอยากแนะนำให้ลองเปลี่ยนมาใช้วิธี insert ข้อมูล ตาราง NAM จาก PST1,2,3...มาสู่ฐานข้อมูลหลัก น่าจะง่ายกว่านะคะ เพราะคุณพร บอกว่ามีโครงสร้างตารางที่เหมือนกันทุกคอลัม

หลักการก็คือ กำหนดตำแหน่ง\โฟลเดอร์ที่จะเอาไฟล์ของแต่ละแผนกมาเก็บไ้ว้ ตายตัวซักที่หนึ่ง เช่นไดร์ฟ D เป็นต้น
แล้วที่ไฟล์ของฐานข้อมูลหลักก็สร้างคำสั่งให้ insert ข้องมูลจากไฟล์เป้าหมายเข้ามาสู่ฐานข้อมูลหลักค่ะ

รู้สึกหนูจะมีโค้ดลักษณะนี้อยู่ ซึ่งอาจารย์ท่านเคยกรุณาแนะนำไว้ให้ ขอเวลาค้นหาหน่อยนะคะ
26 @R07968
เจอแล้วค่ะ หนูเอาโค้ดต่างๆมาเรียบเรียงเพื่อให้ได้ตามความต้องการของคุณพร ซึ่งอาจยังไม่สมบูรณ์นัก ฝากอาจารย์ช่วยขัดเกลาให้อีกทีนะคะ

ให้คุณพรนำไฟล์เป้าหมาย PST1 ไปไว้ที่ไดร์ฟ D นะคะ จากนั้นที่ไฟล์ฐานข้อมูลหลัก สร้างฟอร์มโดยมีปุ่ม insert แล้วนำโค้ดสีแดงด้านล่างนี้ไปผูกกับปุ่มในสถานะ เมื่อคลิก แล้วลองใช้งานดูนะคะ
Private Sub Command0_Click()
    DoCmd.SetWarnings False
        If Dir("D:\PST1.mdb") = "" Then
        MsgBox "ที่ไดร์ฟ D: ไม่มีไฟล์ฐานข้อมูล PST1 กรุณาตรวจสอบด้วยค่ะ", 0, "พบข้อผิดพลาด"
        Shell "explorer D:\", vbNormalFocus
        Exit Sub
        End If
        DoCmd.RunSQL "insert into NAM select * from NAM in ""D:\PST1.mdb"""
    DoCmd.SetWarnings True

End Sub

หมายเหตุ ตามโค้ดนี้ ไฟล์เป้าหมาย PST1 ต้องเก็บไว้ที่ไดร์ฟ D:เ่ท่านั้น และในไฟล์เป้าหมายรวมทั้งไฟล์หลัก ต้องมีตาราง NAM อยู่เหมือนกันด้วย
ขอให้โชคดีนะคะ
27 @R07998
     คุณ มาลี เข้าใจความต้องการของหนูถูกต้องแล้วค่ะ หนูลองทำแล้ว ครั้งแรก มันขึ้นข้อความว่าไม่มีฐานข้อมูล PST1 ที่ไดร์ D ค่ะ และพองลองกดอีกที ก็ไม่ขึ้นอะไรเลย (ว่าจะเซฟมาให้ดูก้อเลย อดเลย )แล้ว ที่มีท่านหนึ่งบอกว่าให้ทำโมดูลนั้นเราต้องก๊อปปี้ไปไว้ที่โมดูลหรือเปล่าค่ะ
           ถึงอย่างไรหนูก็ต้องขอบคุณ คุณมาลี มากๆๆเลยนะค่ะ หวังว่า คงได้รับความช่วยเหลืออีกค่ะ

                                                                ขอบคุณค่ะ
28 @R08005
กรณีตามคำแนะนำของหนู(R07968) นั้นไม่ต้องใช้โมดูลค่ะ ใช้เพียงเขียนโค้ดที่ปุ่มอย่างเดียวเท่านั้น และที่บอกว่าครั้งแรก มันขึ้นข้อความว่าไม่มีฐานข้อมูล PST1 ที่ไดร์ D ก็แสดงว่ามันไม่มีไฟล์ดังกล่าวนั้นจริง ไฟล์ PST1 ก็คือไฟล์ Access เป้าหมายที่ต้องการ โดยตั้งไฟล์ชื่อว่า PST1 นั่นเอง



อ้างอิงจากคำถามของคุณพร(07953)ที่บอกว่า
ฐานข้อมูลหลักของหนู ชื่อ PST ตารางชื่อ NAM เก็บไว้ที่ไดร์ D

เวลาใช้จริงอาจเป็นชื่ออื่นก็ได้ เช่น PST , PST1 , PST2 , PST3 , PST4 โดยต้องแก้ไขโค้ดให้มันระบุชื่อตรงกับที่ใช้จริงค่ะ
29 @R08006
เพิ่มเติมอีกนิดค่ะ

หากไม่อยากแก้ไขโค้ด ก็ใช้วิธีเปลี่ยนชื่อไฟล์เป้าหมายให้เป็น PST1 เอาค่ะ โดยสมมติว่ามี 3 ไฟล์ที่ส่งมาจาก 3 เครื่อง ชื่อไฟล์เดิมมันจะเป็นอย่างไรก็ตาม จัดการเปลี่ยนชื่อเป็น PST1 ซะ ทะยอยเอามาโหลดข้อมูลให้เสร็จไปทีละไฟล์จนกว่าจะครบค่ะ
30 @R08007
ขอแก้ไขการอ้างข้อมูล(07953)ผิดไปค่ะ รีบร้อนไปหน่อย
อันที่จริงมันต้องเป็น
ข้อมูลเครื่องอื่นๆ ก็จะเป็น เช่น เครื่องที่1 ชื่อ PST1 เครื่องที่ 2 ชื่อ PST2 ส่วนตารางก็จะเป็น NAM ทุกเครื่อง

ขออภัยนะคะ เดี๋ยวจะพางงกันไปใหญ่
31 @R08010
ลองทำแล้วก็ไม่ได้ค่ะ พอจะมีไฟร์ตัวอย่างที่ทำแล้ว และทำได้จริง ไหมค่ะ
หนูลองสร้างไฟร์ใหม่และทำตามคุณมาลี ทั้งชื่อไฟร์ข้อมูล และตารางก็ไม่ได้ค่ะอยากส่งไฟร์ไปให้ดู แต่ก็ไม่รู้จะส่งไปที่ไหนค่ะ
                                                                       ขอบคุณนะค่ะ
32 @R08013
หนูส่งไฟล์ตัวอย่างไปไว้ที่อีเมล์ของบอร์ดนี้แล้วค่ะ = accboard@gmail.com

ชื่อผู้ใช้ : accboard@gmail.com
รหัสผ่าน : accgmail

33 @R08025
ขอบคุณ พี่มาลีมากๆเลยนะค่ะ พอหนูก๊อปี้ไฟร์ของพี่มาลี มาใส่ที่เครื่องแล้วเปิดดู ก็ได้เลย ดีใจมาก และพอหนูลองปรับแต่งดูเพื่อความเข้าใจก็ได้เหมือนเดิมค่ะ
    หนูก็อยากถามพี่มาลีอีกค่ะว่า ทำไงพอเราเปิดไฟร์ Access แล้วให้มันเปิดฟอร์มหลักเลยอะค่ะ เหมือนของพี่มาลีที่ทำเป็นตัวอย่างให้หนูค่ะ
    ที่เครื่องหนูทำไหมอ่านภาษาไทยไม่ออกค่ะเป็นภาษาอะไรก็ไม่รู้ทำให้เวลาดูโค๊ด งงมากค่ะ ลองก๊อปปี้ไปวางที่ Notpad แล้วเปลี่ยนตัวอักษรก็ไม่ได้ค่ะ
    ****หนูใช้ Office 2003 ค่ะ
                                                             พี่มาลี หนู ขอบคุณมาก ๆ นะค่ะ
34 @R08034
กำหนดให้เปิดฟอร์มเป้าหมายขณะเริ่มต้น (Access2003 นะคะ)

1.) เปิดเข้าที่เมนู : เครื่องมือ
2.) เลือกรายการ : เริ่มต้น...
3.) ที่หน้าต่าง : การเริ่มต้น >> ในช่องราย แสดงฟอร์ม/เพจ: ก็เลือกหาฟอร์มที่เราต้องการให้เป็นฟอร์มเริ่มต้นได้เลยค่ะ และถ้าไม่อยากให้มีเมนูอะไรมาเกะกะหน้าตาโปรแกรมของเรา ก็ติ๊กเอาเครื่องหายถูกออกให้หมดเลย สามารถช่วยให้ดูดีขึ้น ลองเล่นดูนะคะ
35 @R08035
       ขอบคุณนะค่ะ พี่มาลีเก่งมากเลยแล้วบอกว่า มีความรู้แค่อนุบาลได้ไงค่ะนี่ หนูทำได้แล้ว ถ้าไม่มีพี่มาลี หนู คงทำไม่ได้แน่ๆเลย ขอบคุณนะค่ะ มาก ๆ ด้วย

                                                                            พี่มาลี ขอบคุณนะค่ะ พร
36 @R08037
ไม่เป็นไรค่ะ
ที่แนะนำไป ส่วนใหญ่ก็ล้วนได้ความรู้มาจากอาจารย์ผู้ใจดี ในบอร์ดนี้แหละค่ะ
ลองผิดลองถูก บางทีก็มั่วผิดหลักการไปบ้าง แต่เมื่อมันสามารถทำงานตามที่เราต้องการได้ก็ OK ค่ะ
มาถึงวันนี้เมื่อมีสิ่งใดที่พอรู้และพอช่วยได้ ก็ยินดีช่วยเหลือกันค่ะ แต่ก็ได้เพียงเล็กๆน้อยๆเท่านั้นนะคะ
นึกถึงความรู้สึกเมื่อตอนที่เริ่มทำAccessใหม่ๆ ก็คงไม่แตกต่างกับคุณพรวันนี้หรอกค่ะ นี่ถ้่าไม่มีอาจารย์ผู้ใจดีในบอร์ดนี้ มาลีคงถอดใจยกธงขาวไปนานแล้วล่ะ

สู้ สู้ ค่ะ
37 @R08039
ผมใช้วิธี..
ให้ทุกเครื่องทำ backup file (ส่งออกแต่ละตารางที่ต้องการเป็น fie csv)
แล้วก็ไล่เก็บข้อมูลจาก file เหล่านั้น (ตามแต่จะเลือกเอา)
ขั้นสุดท้ายกรองรายการที่ซ้ำกันออก..

38 @R22581
ใช้วิธีตาม วิธีขอคุณรักน้องบิวท์ (R02785) อยากทรบว่าข้อมูลที่นำเข้ามาจะไปเก้บอยู่ตรงส่วนไหนอ่ะค่ะ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.1944s