กระทู้เก่าบอร์ด อ.Yeadram
6,911 38
URL.หัวข้อ /
URL
นำเข้าข้อมูลครั้งละหลายตารางจากฐานข้อมูลอื่นได้ไหม
อยากทราบว่า เราสามารถนำเข้าข้อมูลครั้งละหลายตาราง จากฐานข้อมูลอื่นซึ่งเป็นAccess เหมือนกันและมีโครงสร้างเหมือนกันได้ไหมคะ สมมติฐานข้อมูลเป้าหมายที่เราจะไปเอาข้อมูลมีชื่อว่า Access-1 และฐานข้อมูลปัจจุบันของเราชื่อว่า Access-2 ซึ่งฐานข้อมูลทั้งสอง มีตารางเก็บข้อมูลอยู่ 10 ตารางโดยมีโครงสร้างเหมือนกัน
ความต้องการของหนูก็คือ ที่ฐานข้อมูล Access-2 จะมีฟอร์มอยู่หนึ่งฟอร์มซึ่งมีปุ่มให้คลิก เมือคลิกแล้วก็ให้ไปโหลดข้อมูลจาก Access-1 มาเข้าใน Access-2 ทั้งหมด ทุกตารางค่ะ อยากทราบว่า Access สามารถทำได้หรือไม่ ถ้าได้..เราต้องเขียนโค๊คคำสั่งให้กับปุ่มนี้อย่างไรบ้างคะ
ความต้องการของหนูก็คือ ที่ฐานข้อมูล Access-2 จะมีฟอร์มอยู่หนึ่งฟอร์มซึ่งมีปุ่มให้คลิก เมือคลิกแล้วก็ให้ไปโหลดข้อมูลจาก Access-1 มาเข้าใน Access-2 ทั้งหมด ทุกตารางค่ะ อยากทราบว่า Access สามารถทำได้หรือไม่ ถ้าได้..เราต้องเขียนโค๊คคำสั่งให้กับปุ่มนี้อย่างไรบ้างคะ
38 Reply in this Topic. Dispaly 2 pages and you are on page number 2
22 @R07956
คุณมาลีค่ะ หนูทำตามในบอร์ดเกิดปัญหา ดังภาพค่ะ และที่ไหม่เข้าใจคือ ต้องสร้างแทคบอคยังไงแล้วไปวางไว้ที่ไหนค่ะ ตอนนี้ปุ่มทำแล้ว โค๊ดก็ใส่แล้ว
โฟลเดอร์ก็สร้างแล้วเก็บไว้ที่ไดร์ D ชื่อ browse test
กรุณาแนะนำต่อด้วยนะค่ะ มือใหม่จริงๆๆขอบคุณค่ะ
ขอบคุณค่ะ
โฟลเดอร์ก็สร้างแล้วเก็บไว้ที่ไดร์ D ชื่อ browse test
กรุณาแนะนำต่อด้วยนะค่ะ มือใหม่จริงๆๆขอบคุณค่ะ
ขอบคุณค่ะ
23 @R07957
Error ลักษณะนี้ ตอนที่ทำแรกๆหนูก็เคยเจอ แต่จำไม่ได้แล้วว่าแก้อย่างไร ปัจจุบันไฟล์ตัวนั้นก็ไม่ได้ใช้มานานแล้ว ว่าจะส่งไปให้ดูตัวอย่างแต่ยังหาไฟล์นั้นไม่พบค่ะ
เดี๋ยวรอให้อาจารย์ท่านมาช่วยตอบให้นะคะ เรื่องของโค้ด...หนูยังอนุบาลอยู่เลยค่ะ
เดี๋ยวรอให้อาจารย์ท่านมาช่วยตอบให้นะคะ เรื่องของโค้ด...หนูยังอนุบาลอยู่เลยค่ะ
24 @R07959
ลองตรวจสอบดูว่าตั้งชื่อ เท็กซ์บ๊อกซ์ หรือ ปุ่มไม่ตรงกับในโค้ดหรือเปล่าครับ
ในกรณีที่คุณยังไม่เข้าใจหลักการในการเขียนโค้ดโปรแกรมนั้น หากคุณก๊อปปี้โค้ดมาใช้งาน ต้องตรวจดูให้แน่ใจว่าตั้งชื่อของปุ่ม หรือเท็กซ์บ๊อกซ์ที่ในโค้ดเขียนอ้างอิงเอาไว้ได้ตรงกับในโค้ดครับ
ในกรณีที่คุณยังไม่เข้าใจหลักการในการเขียนโค้ดโปรแกรมนั้น หากคุณก๊อปปี้โค้ดมาใช้งาน ต้องตรวจดูให้แน่ใจว่าตั้งชื่อของปุ่ม หรือเท็กซ์บ๊อกซ์ที่ในโค้ดเขียนอ้างอิงเอาไว้ได้ตรงกับในโค้ดครับ
25 @R07964
พิจารณาความต้องการของคุณพรแล้ว หนูอยากแนะนำให้ลองเปลี่ยนมาใช้วิธี insert ข้อมูล ตาราง NAM จาก PST1,2,3...มาสู่ฐานข้อมูลหลัก น่าจะง่ายกว่านะคะ เพราะคุณพร บอกว่ามีโครงสร้างตารางที่เหมือนกันทุกคอลัม
หลักการก็คือ กำหนดตำแหน่ง\โฟลเดอร์ที่จะเอาไฟล์ของแต่ละแผนกมาเก็บไ้ว้ ตายตัวซักที่หนึ่ง เช่นไดร์ฟ D เป็นต้น
แล้วที่ไฟล์ของฐานข้อมูลหลักก็สร้างคำสั่งให้ insert ข้องมูลจากไฟล์เป้าหมายเข้ามาสู่ฐานข้อมูลหลักค่ะ
รู้สึกหนูจะมีโค้ดลักษณะนี้อยู่ ซึ่งอาจารย์ท่านเคยกรุณาแนะนำไว้ให้ ขอเวลาค้นหาหน่อยนะคะ
มีฐานข้อมูลที่เป็นตาราง (ตารางจะเหมือนกันทุกคอลัม) ให้แต่ละแผนก กรอกข้อมูล พอสิ้นเดือนก็นำมารวมกัน ที่เครื่องหลัก
ฐานข้อมูลหลักของหนู ชื่อ PST ตารางชื่อ NAM เก็บไว้ที่ไดร์ D
พิจารณาความต้องการของคุณพรแล้ว หนูอยากแนะนำให้ลองเปลี่ยนมาใช้วิธี insert ข้อมูล ตาราง NAM จาก PST1,2,3...มาสู่ฐานข้อมูลหลัก น่าจะง่ายกว่านะคะ เพราะคุณพร บอกว่ามีโครงสร้างตารางที่เหมือนกันทุกคอลัม
หลักการก็คือ กำหนดตำแหน่ง\โฟลเดอร์ที่จะเอาไฟล์ของแต่ละแผนกมาเก็บไ้ว้ ตายตัวซักที่หนึ่ง เช่นไดร์ฟ D เป็นต้น
แล้วที่ไฟล์ของฐานข้อมูลหลักก็สร้างคำสั่งให้ insert ข้องมูลจากไฟล์เป้าหมายเข้ามาสู่ฐานข้อมูลหลักค่ะ
รู้สึกหนูจะมีโค้ดลักษณะนี้อยู่ ซึ่งอาจารย์ท่านเคยกรุณาแนะนำไว้ให้ ขอเวลาค้นหาหน่อยนะคะ
26 @R07968
เจอแล้วค่ะ หนูเอาโค้ดต่างๆมาเรียบเรียงเพื่อให้ได้ตามความต้องการของคุณพร ซึ่งอาจยังไม่สมบูรณ์นัก ฝากอาจารย์ช่วยขัดเกลาให้อีกทีนะคะ
ให้คุณพรนำไฟล์เป้าหมาย PST1 ไปไว้ที่ไดร์ฟ D นะคะ จากนั้นที่ไฟล์ฐานข้อมูลหลัก สร้างฟอร์มโดยมีปุ่ม insert แล้วนำโค้ดสีแดงด้านล่างนี้ไปผูกกับปุ่มในสถานะ เมื่อคลิก แล้วลองใช้งานดูนะคะ
หมายเหตุ ตามโค้ดนี้ ไฟล์เป้าหมาย PST1 ต้องเก็บไว้ที่ไดร์ฟ D:เ่ท่านั้น และในไฟล์เป้าหมายรวมทั้งไฟล์หลัก ต้องมีตาราง NAM อยู่เหมือนกันด้วย
ขอให้โชคดีนะคะ
ให้คุณพรนำไฟล์เป้าหมาย 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 , PST1 , PST2 , PST3 , PST4 โดยต้องแก้ไขโค้ดให้มันระบุชื่อตรงกับที่ใช้จริงค่ะ
อ้างอิงจากคำถามของคุณพร(07953)ที่บอกว่า
ฐานข้อมูลหลักของหนู ชื่อ PST ตารางชื่อ NAM เก็บไว้ที่ไดร์ D
เวลาใช้จริงอาจเป็นชื่ออื่นก็ได้ เช่น PST , PST1 , PST2 , PST3 , PST4 โดยต้องแก้ไขโค้ดให้มันระบุชื่อตรงกับที่ใช้จริงค่ะ
29 @R08006
เพิ่มเติมอีกนิดค่ะ
หากไม่อยากแก้ไขโค้ด ก็ใช้วิธีเปลี่ยนชื่อไฟล์เป้าหมายให้เป็น PST1 เอาค่ะ โดยสมมติว่ามี 3 ไฟล์ที่ส่งมาจาก 3 เครื่อง ชื่อไฟล์เดิมมันจะเป็นอย่างไรก็ตาม จัดการเปลี่ยนชื่อเป็น PST1 ซะ ทะยอยเอามาโหลดข้อมูลให้เสร็จไปทีละไฟล์จนกว่าจะครบค่ะ
หากไม่อยากแก้ไขโค้ด ก็ใช้วิธีเปลี่ยนชื่อไฟล์เป้าหมายให้เป็น PST1 เอาค่ะ โดยสมมติว่ามี 3 ไฟล์ที่ส่งมาจาก 3 เครื่อง ชื่อไฟล์เดิมมันจะเป็นอย่างไรก็ตาม จัดการเปลี่ยนชื่อเป็น PST1 ซะ ทะยอยเอามาโหลดข้อมูลให้เสร็จไปทีละไฟล์จนกว่าจะครบค่ะ
30 @R08007
ขอแก้ไขการอ้างข้อมูล(07953)ผิดไปค่ะ รีบร้อนไปหน่อย
อันที่จริงมันต้องเป็น
ขออภัยนะคะ เดี๋ยวจะพางงกันไปใหญ่
อันที่จริงมันต้องเป็น
ข้อมูลเครื่องอื่นๆ ก็จะเป็น เช่น เครื่องที่1 ชื่อ PST1 เครื่องที่ 2 ชื่อ PST2 ส่วนตารางก็จะเป็น NAM ทุกเครื่อง
ขออภัยนะคะ เดี๋ยวจะพางงกันไปใหญ่
31 @R08010
ลองทำแล้วก็ไม่ได้ค่ะ พอจะมีไฟร์ตัวอย่างที่ทำแล้ว และทำได้จริง ไหมค่ะ
หนูลองสร้างไฟร์ใหม่และทำตามคุณมาลี ทั้งชื่อไฟร์ข้อมูล และตารางก็ไม่ได้ค่ะอยากส่งไฟร์ไปให้ดู แต่ก็ไม่รู้จะส่งไปที่ไหนค่ะ
ขอบคุณนะค่ะ
หนูลองสร้างไฟร์ใหม่และทำตามคุณมาลี ทั้งชื่อไฟร์ข้อมูล และตารางก็ไม่ได้ค่ะอยากส่งไฟร์ไปให้ดู แต่ก็ไม่รู้จะส่งไปที่ไหนค่ะ
ขอบคุณนะค่ะ
32 @R08013
หนูส่งไฟล์ตัวอย่างไปไว้ที่อีเมล์ของบอร์ดนี้แล้วค่ะ = accboard@gmail.com
ชื่อผู้ใช้ : accboard@gmail.com
รหัสผ่าน : accgmail
ชื่อผู้ใช้ : accboard@gmail.com
รหัสผ่าน : accgmail
33 @R08025
ขอบคุณ พี่มาลีมากๆเลยนะค่ะ พอหนูก๊อปี้ไฟร์ของพี่มาลี มาใส่ที่เครื่องแล้วเปิดดู ก็ได้เลย ดีใจมาก และพอหนูลองปรับแต่งดูเพื่อความเข้าใจก็ได้เหมือนเดิมค่ะ
หนูก็อยากถามพี่มาลีอีกค่ะว่า ทำไงพอเราเปิดไฟร์ Access แล้วให้มันเปิดฟอร์มหลักเลยอะค่ะ เหมือนของพี่มาลีที่ทำเป็นตัวอย่างให้หนูค่ะ
ที่เครื่องหนูทำไหมอ่านภาษาไทยไม่ออกค่ะเป็นภาษาอะไรก็ไม่รู้ทำให้เวลาดูโค๊ด งงมากค่ะ ลองก๊อปปี้ไปวางที่ Notpad แล้วเปลี่ยนตัวอักษรก็ไม่ได้ค่ะ
****หนูใช้ Office 2003 ค่ะ
พี่มาลี หนู ขอบคุณมาก ๆ นะค่ะ
หนูก็อยากถามพี่มาลีอีกค่ะว่า ทำไงพอเราเปิดไฟร์ Access แล้วให้มันเปิดฟอร์มหลักเลยอะค่ะ เหมือนของพี่มาลีที่ทำเป็นตัวอย่างให้หนูค่ะ
ที่เครื่องหนูทำไหมอ่านภาษาไทยไม่ออกค่ะเป็นภาษาอะไรก็ไม่รู้ทำให้เวลาดูโค๊ด งงมากค่ะ ลองก๊อปปี้ไปวางที่ Notpad แล้วเปลี่ยนตัวอักษรก็ไม่ได้ค่ะ
****หนูใช้ Office 2003 ค่ะ
พี่มาลี หนู ขอบคุณมาก ๆ นะค่ะ
34 @R08034
กำหนดให้เปิดฟอร์มเป้าหมายขณะเริ่มต้น (Access2003 นะคะ)
1.) เปิดเข้าที่เมนู : เครื่องมือ
2.) เลือกรายการ : เริ่มต้น...
3.) ที่หน้าต่าง : การเริ่มต้น >> ในช่องราย แสดงฟอร์ม/เพจ: ก็เลือกหาฟอร์มที่เราต้องการให้เป็นฟอร์มเริ่มต้นได้เลยค่ะ และถ้าไม่อยากให้มีเมนูอะไรมาเกะกะหน้าตาโปรแกรมของเรา ก็ติ๊กเอาเครื่องหายถูกออกให้หมดเลย สามารถช่วยให้ดูดีขึ้น ลองเล่นดูนะคะ
1.) เปิดเข้าที่เมนู : เครื่องมือ
2.) เลือกรายการ : เริ่มต้น...
3.) ที่หน้าต่าง : การเริ่มต้น >> ในช่องราย แสดงฟอร์ม/เพจ: ก็เลือกหาฟอร์มที่เราต้องการให้เป็นฟอร์มเริ่มต้นได้เลยค่ะ และถ้าไม่อยากให้มีเมนูอะไรมาเกะกะหน้าตาโปรแกรมของเรา ก็ติ๊กเอาเครื่องหายถูกออกให้หมดเลย สามารถช่วยให้ดูดีขึ้น ลองเล่นดูนะคะ
35 @R08035
ขอบคุณนะค่ะ พี่มาลีเก่งมากเลยแล้วบอกว่า มีความรู้แค่อนุบาลได้ไงค่ะนี่ หนูทำได้แล้ว ถ้าไม่มีพี่มาลี หนู คงทำไม่ได้แน่ๆเลย ขอบคุณนะค่ะ มาก ๆ ด้วย
พี่มาลี ขอบคุณนะค่ะ พร
พี่มาลี ขอบคุณนะค่ะ พร
36 @R08037
ไม่เป็นไรค่ะ
ที่แนะนำไป ส่วนใหญ่ก็ล้วนได้ความรู้มาจากอาจารย์ผู้ใจดี ในบอร์ดนี้แหละค่ะ
ลองผิดลองถูก บางทีก็มั่วผิดหลักการไปบ้าง แต่เมื่อมันสามารถทำงานตามที่เราต้องการได้ก็ OK ค่ะ
มาถึงวันนี้เมื่อมีสิ่งใดที่พอรู้และพอช่วยได้ ก็ยินดีช่วยเหลือกันค่ะ แต่ก็ได้เพียงเล็กๆน้อยๆเท่านั้นนะคะ
นึกถึงความรู้สึกเมื่อตอนที่เริ่มทำAccessใหม่ๆ ก็คงไม่แตกต่างกับคุณพรวันนี้หรอกค่ะ นี่ถ้่าไม่มีอาจารย์ผู้ใจดีในบอร์ดนี้ มาลีคงถอดใจยกธงขาวไปนานแล้วล่ะ
สู้ สู้ ค่ะ
ที่แนะนำไป ส่วนใหญ่ก็ล้วนได้ความรู้มาจากอาจารย์ผู้ใจดี ในบอร์ดนี้แหละค่ะ
ลองผิดลองถูก บางทีก็มั่วผิดหลักการไปบ้าง แต่เมื่อมันสามารถทำงานตามที่เราต้องการได้ก็ OK ค่ะ
มาถึงวันนี้เมื่อมีสิ่งใดที่พอรู้และพอช่วยได้ ก็ยินดีช่วยเหลือกันค่ะ แต่ก็ได้เพียงเล็กๆน้อยๆเท่านั้นนะคะ
นึกถึงความรู้สึกเมื่อตอนที่เริ่มทำAccessใหม่ๆ ก็คงไม่แตกต่างกับคุณพรวันนี้หรอกค่ะ นี่ถ้่าไม่มีอาจารย์ผู้ใจดีในบอร์ดนี้ มาลีคงถอดใจยกธงขาวไปนานแล้วล่ะ
สู้ สู้ ค่ะ
37 @R08039
ผมใช้วิธี..
ให้ทุกเครื่องทำ backup file (ส่งออกแต่ละตารางที่ต้องการเป็น fie csv)
แล้วก็ไล่เก็บข้อมูลจาก file เหล่านั้น (ตามแต่จะเลือกเอา)
ขั้นสุดท้ายกรองรายการที่ซ้ำกันออก..
ให้ทุกเครื่องทำ backup file (ส่งออกแต่ละตารางที่ต้องการเป็น fie csv)
แล้วก็ไล่เก็บข้อมูลจาก file เหล่านั้น (ตามแต่จะเลือกเอา)
ขั้นสุดท้ายกรองรายการที่ซ้ำกันออก..
38 @R22581
ใช้วิธีตาม วิธีขอคุณรักน้องบิวท์ (R02785) อยากทรบว่าข้อมูลที่นำเข้ามาจะไปเก้บอยู่ตรงส่วนไหนอ่ะค่ะ
Time: 0.2713s
2.) จะได้ปุ่มคำสั่งว่างๆที่ยังไม่ได้เขียนโค้ดอะไรลงไป ให้คลิกขวาที่ปุ่มคำสั่งนั้นแล้วเลือกรายการ "คุณสมบัติ"
3.) ที่หน้าต่างคุณสมบัติ คลิกที่ท้ายช่องรายการ "เมื่อคลิก" แล้วเลือก [Event Procedure]
4.) จากนั้นคลิกที่ปุ่ม "... " จะเข้าที่หน้าต่างสำหรับเขียนโค้ด
5.) จัดการใส่โค้ดที่ต้องการลงไปเลยค่ะ
ดูภาพประกอบไปด้วยอาจช่วยให้เข้าใจง่ายขึ้นนะคะ