Export ข้อมูลจาก MS Access



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

05 มิ.ย. 63 , 13:53:33
อ่าน 243 ครั้ง

mtaccess

Export ข้อมูลจาก MS Access
« เมื่อ: 05 มิ.ย. 63 , 13:53:33 »
Export ข้อมูลจาก MS Access แล้ว error ตามรูปนี้ค่ะ


โค้ดโปรแกรมตามนี้ เดิมใช้ Database MS Access ไม่ติดปัญหา พอเปลี่ยนมาเป็น Database SQL Server แล้ว ติดตรง Export ไม่ได้ค่ะ
โค๊ด: [Select]
Private Sub cmdExport_Click()
    Const qry As String = "QueryExportToSQLSERVER"
    Const myPath As String = "C:\Exportfile\Test.csv"
    DoCmd.TransferText acExportDelim, "QueryExportToSQLSERVER Export Specification", qry, myPath, True
    MsgBox "Export to C:\Test.csv successfully"
End Sub

ปล.ถ้าต้องการให้ชื่อไฟล์ออกตามฝ่ายและสาขาที่เราล็อกอินเข้าไป ต้องทำยังไงคะ เช่น txtDivision คือ MMM และ txtLocation คือ Bangkok
อยากได้ไฟล์ที่ Export ออกมาเป็นชื่อไฟล์ TestMMMBangkok.csv

รบกวนแนะนำด้วยค่ะ ขอบคุณค่ะ

 

05 มิ.ย. 63 , 22:39:30
ตอบกลับ #1

สันติสุข

  • แฟนพันธุ์แท้ไท.Access
  • *
  • กระทู้: 466
  • พลังขอบคุณ: 417

  • ขึ้น 15 ค่ำเดือน 8 แสดงปฐมเทศนา

    • ดูรายละเอียด

: Export ข้อมูลจาก MS Access
« ตอบกลับ #1 เมื่อ: 05 มิ.ย. 63 , 22:39:30 »
- ตรวจการกำหนดประเภทข้อมูลและความยาวของฟิลด์ข้อมูลที่เราตั้งเอาไว้ใน "QueryExportToSQLSERVER Export Specification" เพราะเมื่อเปลี่ยนฐานข้อมูลจาก Access ไปเป็นตัวอื่น สิ่งต่างๆข้างต้นอาจแตกต่างไป

- เปลี่ยนจาก
Const myPath As String = "C:\Exportfile\Test.csv"
ไปเป็น
Dim myPath As String
myPath = "C:\Exportfile\Test" & txtDivision & txtLoacation & ".csv"
ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

08 มิ.ย. 63 , 10:44:04
ตอบกลับ #2

mtaccess

: Export ข้อมูลจาก MS Access
« ตอบกลับ #2 เมื่อ: 08 มิ.ย. 63 , 10:44:04 »
- ตรวจการกำหนดประเภทข้อมูลและความยาวของฟิลด์ข้อมูลที่เราตั้งเอาไว้ใน "QueryExportToSQLSERVER Export Specification" เพราะเมื่อเปลี่ยนฐานข้อมูลจาก Access ไปเป็นตัวอื่น สิ่งต่างๆข้างต้นอาจแตกต่างไป

- เปลี่ยนจาก
Const myPath As String = "C:\Exportfile\Test.csv"
ไปเป็น
Dim myPath As String
myPath = "C:\Exportfile\Test" & txtDivision & txtLoacation & ".csv"


เกี่ยวกันไหมคะว่าใน Database MS Access Data Type เป็น Short Text พอเปลี่ยนมาเป็น SQL Server Data Type เป็น nvarchar(255)
รบกวนแนะนำด้วยค่ะ ขอบคุณค่ะ

 

08 มิ.ย. 63 , 11:07:15
ตอบกลับ #3

สันติสุข

  • แฟนพันธุ์แท้ไท.Access
  • *
  • กระทู้: 466
  • พลังขอบคุณ: 417

  • ขึ้น 15 ค่ำเดือน 8 แสดงปฐมเทศนา

    • ดูรายละเอียด

: Export ข้อมูลจาก MS Access
« ตอบกลับ #3 เมื่อ: 08 มิ.ย. 63 , 11:07:15 »
Short Text กับ nvarchar(255) ไม่น่าจะเป็นปัญหาครับ เพราะ nvarchar(255) จะเก็บตัวอักษรได้**อาจจะ**น้อยกว่า 255  แต่ให้ไปดูว่าใน Specification นั้น เอาฟิลด์นี้ออกมากี่ตัวอักษรมากกว่า
ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

08 มิ.ย. 63 , 11:38:55
ตอบกลับ #4

mtaccess

: Export ข้อมูลจาก MS Access
« ตอบกลับ #4 เมื่อ: 08 มิ.ย. 63 , 11:38:55 »
Short Text กับ nvarchar(255) ไม่น่าจะเป็นปัญหาครับ เพราะ nvarchar(255) จะเก็บตัวอักษรได้**อาจจะ**น้อยกว่า 255  แต่ให้ไปดูว่าใน Specification นั้น เอาฟิลด์นี้ออกมากี่ตัวอักษรมากกว่า

Specification ดูตรงไหนคะ ฟิลด์ตอนที่เรา Query รึเปล่าคะ

 

08 มิ.ย. 63 , 15:33:28
ตอบกลับ #5

สันติสุข

  • แฟนพันธุ์แท้ไท.Access
  • *
  • กระทู้: 466
  • พลังขอบคุณ: 417

  • ขึ้น 15 ค่ำเดือน 8 แสดงปฐมเทศนา

    • ดูรายละเอียด

: Export ข้อมูลจาก MS Access
« ตอบกลับ #5 เมื่อ: 08 มิ.ย. 63 , 15:33:28 »
ถามผมกลับอย่างนี้นี่ผมงงเลย ตกลงคุณไม่ได้เป็นคนสร้าง spec เองเหรอ แล้วคุณไปเอาชื่อ spec จากไหนมาใส่ในคำสั่ง DoCmd.TransferText  ?

เอาอย่างงี้ เปิดคิวรี่แล้วกดตามลำดับ 1 - 6 ที่แสดงครับ สำหรับตำแหน่งที่ 8 ถ้าเลือกเป็น Fixed Width ก่อนกดตำแหน่งที่4 หลังจากเลือก Specification แล้ว ตารางของฟิลด์ (ตำแหน่งที่ 7) จะแสดงตำแหน่งเริ่มต้นและความยาวของฟิลด์ออกมาด้วย ที่นี้ก็ขึ้นกับคุณออกแบบว่าจะให้ export เป็นแบบไหน ออกแบบแบบไหน ในคำสั่ง DoCmd.TransferText ก็ให้ใช้ตัวเลือกเพื่อ export แบบนั้นด้วยนะครับ

ตำแหน่งที่ 4 หมายถึงคลิกที่ปุ่ม Spec... นะครับ

หรือไม่ก็ ลอง export โดยไม่ใช้ spec ด้วยคำสั่ง
DoCmd.TransferText acExportDelim, , qry, myPath, True
ดูว่าได้ผลตามต้องการหรือไม่


ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

09 มิ.ย. 63 , 12:19:50
ตอบกลับ #6

mtaccess

: Export ข้อมูลจาก MS Access
« ตอบกลับ #6 เมื่อ: 09 มิ.ย. 63 , 12:19:50 »
ถามผมกลับอย่างนี้นี่ผมงงเลย ตกลงคุณไม่ได้เป็นคนสร้าง spec เองเหรอ แล้วคุณไปเอาชื่อ spec จากไหนมาใส่ในคำสั่ง DoCmd.TransferText  ?

เอาอย่างงี้ เปิดคิวรี่แล้วกดตามลำดับ 1 - 6 ที่แสดงครับ สำหรับตำแหน่งที่ 8 ถ้าเลือกเป็น Fixed Width ก่อนกดตำแหน่งที่4 หลังจากเลือก Specification แล้ว ตารางของฟิลด์ (ตำแหน่งที่ 7) จะแสดงตำแหน่งเริ่มต้นและความยาวของฟิลด์ออกมาด้วย ที่นี้ก็ขึ้นกับคุณออกแบบว่าจะให้ export เป็นแบบไหน ออกแบบแบบไหน ในคำสั่ง DoCmd.TransferText ก็ให้ใช้ตัวเลือกเพื่อ export แบบนั้นด้วยนะครับ

ตำแหน่งที่ 4 หมายถึงคลิกที่ปุ่ม Spec... นะครับ

หรือไม่ก็ ลอง export โดยไม่ใช้ spec ด้วยคำสั่ง
DoCmd.TransferText acExportDelim, , qry, myPath, True
ดูว่าได้ผลตามต้องการหรือไม่



พอดีทำไว้นานจนลืมนะคะ ว่าทำอะไรไปบ้าง อิอิ
เราสามารถเข้าไปดูที่ Spec ตัวเก่าที่เราเคยทำ ตรงไหนคะ พอดีลองทำตามแล้ว ไม่เข้าไปหน้า Export Text wizard รบกวนแนะนำด้วยค่ะ ขอบคุณค่ะ

 

09 มิ.ย. 63 , 13:31:15
ตอบกลับ #7

Un

: Export ข้อมูลจาก MS Access
« ตอบกลับ #7 เมื่อ: 09 มิ.ย. 63 , 13:31:15 »
คลิกขวาที่ตารางหรือ Query นั้น แล้วเลือกส่งออกเป็น Text ครับ

 
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

09 มิ.ย. 63 , 13:55:34
ตอบกลับ #8

mtaccess

: Export ข้อมูลจาก MS Access
« ตอบกลับ #8 เมื่อ: 09 มิ.ย. 63 , 13:55:34 »
ลองเข้าไปดูใน Specification error ตามนี้ค่ะ

 

09 มิ.ย. 63 , 15:23:28
ตอบกลับ #9

mtaccess

: Export ข้อมูลจาก MS Access
« ตอบกลับ #9 เมื่อ: 09 มิ.ย. 63 , 15:23:28 »
ถามผมกลับอย่างนี้นี่ผมงงเลย ตกลงคุณไม่ได้เป็นคนสร้าง spec เองเหรอ แล้วคุณไปเอาชื่อ spec จากไหนมาใส่ในคำสั่ง DoCmd.TransferText  ?

เอาอย่างงี้ เปิดคิวรี่แล้วกดตามลำดับ 1 - 6 ที่แสดงครับ สำหรับตำแหน่งที่ 8 ถ้าเลือกเป็น Fixed Width ก่อนกดตำแหน่งที่4 หลังจากเลือก Specification แล้ว ตารางของฟิลด์ (ตำแหน่งที่ 7) จะแสดงตำแหน่งเริ่มต้นและความยาวของฟิลด์ออกมาด้วย ที่นี้ก็ขึ้นกับคุณออกแบบว่าจะให้ export เป็นแบบไหน ออกแบบแบบไหน ในคำสั่ง DoCmd.TransferText ก็ให้ใช้ตัวเลือกเพื่อ export แบบนั้นด้วยนะครับ

ตำแหน่งที่ 4 หมายถึงคลิกที่ปุ่ม Spec... นะครับ

หรือไม่ก็ ลอง export โดยไม่ใช้ spec ด้วยคำสั่ง
DoCmd.TransferText acExportDelim, , qry, myPath, True
ดูว่าได้ผลตามต้องการหรือไม่



ลอง export โดยไม่ใช้ spec ด้วยคำสั่ง
DoCmd.TransferText acExportDelim, , qry, myPath, True

Export ได้ค่ะ แต่ข้อมูล Format ไม่ตรงตามที่ต้องการ ข้อมูลมี "" มาด้วยนะคะ เช่น "010000","มานี","มานะ" พอจะมีวิธีตัด "" ออกไหมคะ แนะนำด้วยค่ะ ขอบคุณค่ะ
« แก้ไขครั้งสุดท้าย: 09 มิ.ย. 63 , 15:29:05 โดย mtaccess »

 

09 มิ.ย. 63 , 21:09:53
ตอบกลับ #10

สันติสุข

  • แฟนพันธุ์แท้ไท.Access
  • *
  • กระทู้: 466
  • พลังขอบคุณ: 417

  • ขึ้น 15 ค่ำเดือน 8 แสดงปฐมเทศนา

    • ดูรายละเอียด

: Export ข้อมูลจาก MS Access
« ตอบกลับ #10 เมื่อ: 09 มิ.ย. 63 , 21:09:53 »
หลังตำแหน่ง 8  ในช่อง Text Qualifier ให้เลือกเป็น {none}   เสร็จแล้วบันทึกเป็น Specification ตัวใหม่  พอเวลาจะ export  ก็ให้อ้าง Specification ตัวใหม่นี้ครับ
ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

10 มิ.ย. 63 , 09:49:11
ตอบกลับ #11

mtaccess

: Export ข้อมูลจาก MS Access
« ตอบกลับ #11 เมื่อ: 10 มิ.ย. 63 , 09:49:11 »
หลังตำแหน่ง 8  ในช่อง Text Qualifier ให้เลือกเป็น {none}   เสร็จแล้วบันทึกเป็น Specification ตัวใหม่  พอเวลาจะ export  ก็ให้อ้าง Specification ตัวใหม่นี้ครับ

คลิกขวาที่ Query แล้วเลือก Export text file แล้วแสดง error นี้ค่ะ ไม่สามารถเข้าหน้าไป set specification ได้เลยค่ะ

 

10 มิ.ย. 63 , 10:13:36
ตอบกลับ #12

mtaccess

: Export ข้อมูลจาก MS Access
« ตอบกลับ #12 เมื่อ: 10 มิ.ย. 63 , 10:13:36 »
ทำได้แล้วค่ะ เกิดจากคำสั่ง Query ที่มีการ select ฟิลด์ แล้วดันตั้งชื่อ as Expt ชื่อเลยไม่ตรงกัน พอดีย้ายจาก database access ไปเป็น SQL แล้วไปแก้ไขคำสั่ง

ขอบคุณมากๆนะคะ สำหรับทุกๆคำแนะนำ

 


บอร์ดเรียนรู้ Access สำหรับคนไทย