กระทู้เก่าบอร์ด อ.Yeadram
1,781 6
URL.หัวข้อ /
URL
เรียนถามท่านผู้รู้ครับผม
ผมมีไฟล์ Access อยู่ 1 ไฟล์ อยู่ที่ D: ชื่อโฟร์เดอร์ Stock ไฟล์ชื่อ Master ครับและในไฟล์ Master นั้น มีตารางอยู่ 2 ตารางครับ ชื่อ ItemMaster และ Vendor ครับ และ ที่หน้า Form ผมได้สร้างปุ่ม Button ไว้ 1 ปุ่ม ชื่อ Import คือผมอยากจะคลิกปุ่ม Import แล้วให้ตารางทั้ง 2 ดังกล่าว Import ไว้ที่หน้ากระดาษทำการ(หน้าตาราง)อ่ะครับ ไม่ทราบว่าจะต้องเขียน Path ว่าอย่างไรครับผม ผมลองเขียนดังนี้แต่ Eror ครับ
DoCmd.TransferSpreadsheet acLink, acTable, "ItemMaster", "D:\Stock\Master"
DoCmd.TransferSpreadsheet acLink, acTable, "ItemMaster", "D:\Stock\Master"
6 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R03477
เรียนถามคุณอนุชิตครับผม ที่คุณอนุชิตแนะนำผมมานั้น Uotput มันเป็นการส่งออกไปที่ Excel ใช่หรือเปล่าครับ แต่ผมอยาก Import เข้ามาครับผม รบกวนคุณอนุชิตช่วยดูอีกทีครับผม
3 @R03479
เรียนคุณอนุชิตครับ ผมลืมไปครับผม คือถ้าจะ Export ไปที่ Excel นั้น มันคงไม่ได้ครับผมเพราะว่า ตารางที่ชื่อ ItemMaster นั้นมันเกิน 65,000 เรคอร์ดครับ มันเกินกว่าที่ Excel กำหนดอ่ะครับผม
4 @R03485
-ไฟล์ต้นทางเป็น Access แล้วทำไมใช้คำสั่ง TransferSpredSheet ล่ะครับ นั่นมันสำหรับ Excel ไม่ใช่เหรอ(หรือผมเข้าใจผิด ผมก็ไม่ค่อยมั่นใจนักเพราะไม่เคยใช้คำสั่งนี้นะครับ)
- ตกลงจะ import หรือจะ link ครับ เห็นบอกอยาก import แต่พอเขียนคำสั่ง กลับไประบุอากิวร์เมนต์ว่า acLink
- ถ้าไฟล์ต้นทางคือ Master (ซึ่งมีสองตาราง) คุณจะสร้างปุ่มคำสั่งบนฟอร์มเพื่อ import แสดงว่า ฟอร์มของคุณอยู่อีกที่หนึ่ง ซึ่งเป็นปลายทาง
คุณจะนำเข้ามาที่ "หน้ากระดาษทำการ(หน้าตาราง)" ตรงนี้จินตนาการไม่ออกครับ ว่ามันเป็นอย่างไร
- หรือเราอาจช่วยคุณได้ เราอาจจินตนาการงานของคุณออกได้ ถ้าเราได้รู้ว่า error นั้น เป็นฉันท์ใด
ผมมีไฟล์ Access อยู่ 1 ไฟล์ อยู่ที่ D: ชื่อโฟร์เดอร์ Stock ไฟล์ชื่อ Master ครับและในไฟล์ Master นั้น มีตารางอยู่ 2 ตารางครับ ชื่อ ItemMaster และ Vendor ครับ และ ที่หน้า Form ผมได้สร้างปุ่ม Button ไว้ 1 ปุ่ม ชื่อ Import คือผมอยากจะคลิกปุ่ม Import แล้วให้ตารางทั้ง 2 ดังกล่าว Import ไว้ที่หน้ากระดาษทำการ(หน้าตาราง)อ่ะครับ ไม่ทราบว่าจะต้องเขียน Path ว่าอย่างไรครับผม ผมลองเขียนดังนี้แต่ Eror ครับ
DoCmd.TransferSpreadsheet acLink, acTable, "ItemMaster", "D:\Stock\Master"
-ไฟล์ต้นทางเป็น Access แล้วทำไมใช้คำสั่ง TransferSpredSheet ล่ะครับ นั่นมันสำหรับ Excel ไม่ใช่เหรอ(หรือผมเข้าใจผิด ผมก็ไม่ค่อยมั่นใจนักเพราะไม่เคยใช้คำสั่งนี้นะครับ)
- ตกลงจะ import หรือจะ link ครับ เห็นบอกอยาก import แต่พอเขียนคำสั่ง กลับไประบุอากิวร์เมนต์ว่า acLink
- ถ้าไฟล์ต้นทางคือ Master (ซึ่งมีสองตาราง) คุณจะสร้างปุ่มคำสั่งบนฟอร์มเพื่อ import แสดงว่า ฟอร์มของคุณอยู่อีกที่หนึ่ง ซึ่งเป็นปลายทาง
คุณจะนำเข้ามาที่ "หน้ากระดาษทำการ(หน้าตาราง)" ตรงนี้จินตนาการไม่ออกครับ ว่ามันเป็นอย่างไร
- หรือเราอาจช่วยคุณได้ เราอาจจินตนาการงานของคุณออกได้ ถ้าเราได้รู้ว่า error นั้น เป็นฉันท์ใด
5 @R03493
เวลาเขียนคำสั่งใน VBA นะครับ ปกติแล้วถ้าไม่ได้ไปตั้งค่า option อะไรมากนัก มันจะมีระบบ
Auto syntax check
auto list members
auto quick info
auto data tips
หมายความว่า แค่เราเขียนคำสั่งยังไม่จบ มันก็จะมี เมนู ลิสต์มาช่วยให้เราเขียนได้ง่ายเขียนได้ถูก เราแค่เลื่อนๆ หาที่เราต้องการเจอแล้วก็กด TAB มันก็เติมให้เลย
ถ้าคำสั่งนั้น มีอากิวร์เมนต์ หรือมี parameter ให้ต้องเติม คุณแค่ ใส่ คอมม่าไว้ แล้ว ระบบมันจะลิสต์มาให้ดูเองว่า คุณต้องเติมอะไรบ้าง ถึงจะเป็นประโยคคำสั่งที่สมบูรณ์
คำสั่งบางคำสั่ง ต้อง เติมอากิวร์เมนต์เหล่านั้นให้ครบ หรือถ้าคุณอยากจะใส่ บาง อาร์กิวร์เมนต์ คุณต้องใส่ตามลำดับ ถ้าอาร์กิวเมนต์ใดคุณจะข้ามมันไป อย่างน้อยๆ คุณต้อง ใส่คอมม่าคั่นเอาไว้ให้รู้ว่า ได้ข้ามไปกี่ ช่อง
เช่น docmd.transferdatabase acImport, , , "Invoice"
อย่างนี้แสดงว่า ผมต้องการระบุ อาร์กิวร์เมนต์?ี่4 แต่ไม่ต้องการระบุ ตัวที่ 2 และตัวที่ 3 ก็คือต้องใส่เครื่องหมายคั่นเอาไว้ ให้รู้ว่า ข้ามไปกี่ตัว
คำสั่งที่คุณเขียนมาใน อีเมล์
แสดงให้เห็นว่า คุณเขียนไม่ได้ปรึกษา VBA เลย นะครับนั่น เพราะคุณหลุดเยอะมาก คุณใส่ค่าอะไร ให้กับ อาร์กิวร์เมนต์อะไรบ้างล่ะนั่น ทำไมถึงออกมาได้ซะขนาดนั้น
Auto syntax check
auto list members
auto quick info
auto data tips
หมายความว่า แค่เราเขียนคำสั่งยังไม่จบ มันก็จะมี เมนู ลิสต์มาช่วยให้เราเขียนได้ง่ายเขียนได้ถูก เราแค่เลื่อนๆ หาที่เราต้องการเจอแล้วก็กด TAB มันก็เติมให้เลย
ถ้าคำสั่งนั้น มีอากิวร์เมนต์ หรือมี parameter ให้ต้องเติม คุณแค่ ใส่ คอมม่าไว้ แล้ว ระบบมันจะลิสต์มาให้ดูเองว่า คุณต้องเติมอะไรบ้าง ถึงจะเป็นประโยคคำสั่งที่สมบูรณ์
คำสั่งบางคำสั่ง ต้อง เติมอากิวร์เมนต์เหล่านั้นให้ครบ หรือถ้าคุณอยากจะใส่ บาง อาร์กิวร์เมนต์ คุณต้องใส่ตามลำดับ ถ้าอาร์กิวเมนต์ใดคุณจะข้ามมันไป อย่างน้อยๆ คุณต้อง ใส่คอมม่าคั่นเอาไว้ให้รู้ว่า ได้ข้ามไปกี่ ช่อง
เช่น docmd.transferdatabase acImport, , , "Invoice"
อย่างนี้แสดงว่า ผมต้องการระบุ อาร์กิวร์เมนต์?ี่4 แต่ไม่ต้องการระบุ ตัวที่ 2 และตัวที่ 3 ก็คือต้องใส่เครื่องหมายคั่นเอาไว้ ให้รู้ว่า ข้ามไปกี่ตัว
คำสั่งที่คุณเขียนมาใน อีเมล์
ผมลองเขียนโค๊ดไว้ที่ปุ่ม Import ดังนี้ครับ (ลองผิดลองถูก) ครับ DoCmd.TransferDatabase acImport, acTable, "BBB","D:\Stock\Master\Vendor.mdb" แต่มัน Error ครับผม
แสดงให้เห็นว่า คุณเขียนไม่ได้ปรึกษา VBA เลย นะครับนั่น เพราะคุณหลุดเยอะมาก คุณใส่ค่าอะไร ให้กับ อาร์กิวร์เมนต์อะไรบ้างล่ะนั่น ทำไมถึงออกมาได้ซะขนาดนั้น
DoCmd.TransferDatabase acImport, "Microsoft Access", "D:\Stock\Master\Vendor.mdb", acTable, "ItemMaster", "ItemMaster", False
6 @R03520
เรียน ท่านอาจารย์ yeadram
ใช่ครับผม ผมไม่ค่อยมีความรู้เรื่อง VBA เท่าไหร่เลยครับผม ผมถึงเขียนไม่ค่อยเป็นครับ และที่สำคัญ ยังแปลความหมายไม่ค่อยออกด้วยครับผม แต่ผมก็ต้องขอขอบพระคุณท่านอาจารย์ yeadram ที่ได้ให้ความรู้กับผมครับ
ใช่ครับผม ผมไม่ค่อยมีความรู้เรื่อง VBA เท่าไหร่เลยครับผม ผมถึงเขียนไม่ค่อยเป็นครับ และที่สำคัญ ยังแปลความหมายไม่ค่อยออกด้วยครับผม แต่ผมก็ต้องขอขอบพระคุณท่านอาจารย์ yeadram ที่ได้ให้ความรู้กับผมครับ
Time: 0.3822s
ลองใช้คำสั่งนี้ดูนะครับ
DoCmd.OutputTo acOutputTable, "ItemMaster", acFormatXLS, "D:\ITemMaster.xls"
DoCmd.OutputTo acOutputTable, "Vender", acFormatXLS, "D:\Vender.xls"