กระทู้เก่าบอร์ด อ.Yeadram
3,867 12
URL.หัวข้อ /
URL
อยากจะสอบถามเกี่ยวกับการ export file to text file
อยากจะสอบถามเกี่ยวกับการ export file จากการ query ให้ export ออกมาเป็น txt file ที่ส่ง bank ได้
ลักษณะ ข้อมูลใน field ต่าง ๆ ติดกันหมดเลย เป็น reccord ๆ ไป อ่ะครับ พอจะมีตัวอย่างมั้ยครับ
ลักษณะ ข้อมูลใน field ต่าง ๆ ติดกันหมดเลย เป็น reccord ๆ ไป อ่ะครับ พอจะมีตัวอย่างมั้ยครับ
12 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R13343
ผมลองทำตามวิธีที่แนะนำแล้วอ่ะครับ แต่ผลลัพท์ที่ออกมัน จะมี double quote และcomma ติดมาด้วย ต้องการจะลบ ทั้งสองตัวออก ต้องเขียนยังงัยเหรอครับผมใช้ code
Private Sub btnReport_Click()
On Error GoTo Err_Handler
Dim strPath As String
strPath = InputBox("Enter file path", , "C:\sbank.txt")
If Len(strPath) = 0 Then Exit Sub
DoCmd.TransferText acExportDelim, , "qryReportTextfile", strPath
MsgBox "Done", vbInformation
Exit_Handler:
Exit Sub
Err_Handler:
MsgBox Err.Description, vbExclamation, "Error No: " & Err.Number
Resume Exit_Handler
End Sub
นี้อ่ะครับ รบกวนด้วยน่ะครับ ด่วนได้จะเยี่ยมเลยครับ เพราะต้องส่งงานวันนี้แล้ว
Private Sub btnReport_Click()
On Error GoTo Err_Handler
Dim strPath As String
strPath = InputBox("Enter file path", , "C:\sbank.txt")
If Len(strPath) = 0 Then Exit Sub
DoCmd.TransferText acExportDelim, , "qryReportTextfile", strPath
MsgBox "Done", vbInformation
Exit_Handler:
Exit Sub
Err_Handler:
MsgBox Err.Description, vbExclamation, "Error No: " & Err.Number
Resume Exit_Handler
End Sub
นี้อ่ะครับ รบกวนด้วยน่ะครับ ด่วนได้จะเยี่ยมเลยครับ เพราะต้องส่งงานวันนี้แล้ว
3 @R13347
Sub Txxxxxx()
dim conn as new adodb.connection
dim rs as new adodb.recordset
dim sq as string
dim i, j as integer
set conn = currentproject.connecion
rs.open "qryReportTextfile", conn, 1
if not rs.eof then
rs.movelast
rs.movefirst
j = rs.fields.count-1
open "C:\sbank.txt" for output as #1
do while not rs.eof
sq = ""
for i = 0 to j
sq= sq & rs(i)
next
Print #1, sq
rs.movenext
loop
close #1
end if
rs.close
set rs= nothing
set conn = nothing
end sub
dim conn as new adodb.connection
dim rs as new adodb.recordset
dim sq as string
dim i, j as integer
set conn = currentproject.connecion
rs.open "qryReportTextfile", conn, 1
if not rs.eof then
rs.movelast
rs.movefirst
j = rs.fields.count-1
open "C:\sbank.txt" for output as #1
do while not rs.eof
sq = ""
for i = 0 to j
sq= sq & rs(i)
next
Print #1, sq
rs.movenext
loop
close #1
end if
rs.close
set rs= nothing
set conn = nothing
end sub
4 @R13349
ผมลองเอามาใส่ แล้ว มันขึ้นว่า "label error อ่ะครับ มันเกิดอะไรเหรอครับ
5 @R13350
ขณะนี้ผม พยายามทำ มันออกมาได้เป็นลักษณะนี้แหละครับ
output :
999000 666 0 0 0 11650 111100000 2850 Brendon Moar อ่ะครับ
เป้าหมายอยากจะได้เป็นแบบนี้อ่ะครับ
9990006660001165011100002850xxxx ประมานี้อ่ะครับ
โค้ดที่ผมใช้
Private Sub btnReport_Click()
On Error GoTo Err_Handler
Dim strPath As String
strPath = InputBox("Enter file path", , "C:\sbank.txt")
If Len(strPath) = 0 Then Exit Sub
DoCmd.TransferText acExportDelim, "qryReportTextfile Export Specification", "qryReportTextfile", strPath
MsgBox "Done", vbInformation
Exit_Handler:
Exit Sub
Err_Handler:
MsgBox Err.Description, vbExclamation, "Error No: " & Err.Number
Resume Exit_Handler
End Sub
จะสามารถแก้ไข ส่วนไหนได้บ้างครับเพื่อให้เป็นไปตามเป้าหมายอ่ะครับ ตอนนี้มึนตึบหมดแหละครับ
output :
999000 666 0 0 0 11650 111100000 2850 Brendon Moar อ่ะครับ
เป้าหมายอยากจะได้เป็นแบบนี้อ่ะครับ
9990006660001165011100002850xxxx ประมานี้อ่ะครับ
โค้ดที่ผมใช้
Private Sub btnReport_Click()
On Error GoTo Err_Handler
Dim strPath As String
strPath = InputBox("Enter file path", , "C:\sbank.txt")
If Len(strPath) = 0 Then Exit Sub
DoCmd.TransferText acExportDelim, "qryReportTextfile Export Specification", "qryReportTextfile", strPath
MsgBox "Done", vbInformation
Exit_Handler:
Exit Sub
Err_Handler:
MsgBox Err.Description, vbExclamation, "Error No: " & Err.Number
Resume Exit_Handler
End Sub
จะสามารถแก้ไข ส่วนไหนได้บ้างครับเพื่อให้เป็นไปตามเป้าหมายอ่ะครับ ตอนนี้มึนตึบหมดแหละครับ
6 @R13352
คุณคัดลอกตัวที่ผมให้ไป ไปวางในโมดูลว่างๆ
เอาพ้อยเตอร์ของเม้าส์ วางในบริเวณ sub ดังกล่าว แล้วกดปุ่ม F5
ถ้ามันทำงานได้เป็นปกติ มันจะแว๊บเดียวหายเลย ไปตรวจดูใน ไดรฟ C ได้เลยครับ
ถ้ามัน Error บรรทัดไหน บอกด้วยครับ ว่าบรรทัดไหน
ผมเขียนสด หน้าเว็บนี่เลย ไม่ได้ทดสอบใดๆ ทั้งสิ้น แต่เท่าที่ย้อนดู ไม่น่าจะมีอะไรผิดปรกตินะครับ หรือผมดูไม่ทั่วถึงพอ ลองบอกมาหน่อยว่า บรรทัดไหนติด
อ้อ อีกอย่าง ถ้าอยากประยุกต์ใส่ในปุ่มง่ายๆ ก็ อย่าเอาหัว sub กับ ท้าย sub ไป เอาทั้งหมดเลย ไปวางแทนทุกๆ บรรทัดใน sub command ของคุณนั่นแหละครับ
เอาพ้อยเตอร์ของเม้าส์ วางในบริเวณ sub ดังกล่าว แล้วกดปุ่ม F5
ถ้ามันทำงานได้เป็นปกติ มันจะแว๊บเดียวหายเลย ไปตรวจดูใน ไดรฟ C ได้เลยครับ
ถ้ามัน Error บรรทัดไหน บอกด้วยครับ ว่าบรรทัดไหน
ผมเขียนสด หน้าเว็บนี่เลย ไม่ได้ทดสอบใดๆ ทั้งสิ้น แต่เท่าที่ย้อนดู ไม่น่าจะมีอะไรผิดปรกตินะครับ หรือผมดูไม่ทั่วถึงพอ ลองบอกมาหน่อยว่า บรรทัดไหนติด
อ้อ อีกอย่าง ถ้าอยากประยุกต์ใส่ในปุ่มง่ายๆ ก็ อย่าเอาหัว sub กับ ท้าย sub ไป เอาทั้งหมดเลย ไปวางแทนทุกๆ บรรทัดใน sub command ของคุณนั่นแหละครับ
7 @R13362
ทดสอบแล้วครับ มันขึ้น error ว่า
Run-time error '438'
Object doesnt support this property or method
และพอผมกด debug มันจะไปแสดง ที่ บรรทัด
set conn = currentproject.connecion
ครับ ถ้าเป็นแบบนี้ มีวิธีแก้ยังงัยบ้างครับ
Run-time error '438'
Object doesnt support this property or method
และพอผมกด debug มันจะไปแสดง ที่ บรรทัด
set conn = currentproject.connecion
ครับ ถ้าเป็นแบบนี้ มีวิธีแก้ยังงัยบ้างครับ
8 @R13363
พิมพ์ใหม่ครับ ตก ตัว t ไปตัวหนึ่ง
คำว่า connection
คำว่า connection
9 @R13365
สุโค่ย ๆๆๆๆๆ ได้แหละครับ ขอบคุณมากครับ ไม่ได้ คุณ yeadram ชีวิตอาจดับได้ครับ
รบกวนอีกนิดนึงครับ ถ้าเรา ต้องการจะใส่ 0 ใน
999000 666 0 0 0 11650 111100000 2850 Brendon Moar อ่ะครับ
เลขศูนย์หลัง 666 เพิ่มอีก 10 หลักอ่ะครับ ผมจะเพิ่มในส่วนไหนได้บ้างครับ ผม query แล้ว มัน exp1 ได้แค่ หลักเดียวอ่ะครับ
รบกวนอีกนิดนึงครับ ถ้าเรา ต้องการจะใส่ 0 ใน
999000 666 0 0 0 11650 111100000 2850 Brendon Moar อ่ะครับ
เลขศูนย์หลัง 666 เพิ่มอีก 10 หลักอ่ะครับ ผมจะเพิ่มในส่วนไหนได้บ้างครับ ผม query แล้ว มัน exp1 ได้แค่ หลักเดียวอ่ะครับ
10 @R13366
ฟิลด์ 666 ของคุณเป็นฟิลด์ลำดับที่เท่าไหร่ (นับฟิลด์แรกเริ่มจาก 0)
สมมติว่าเป็นฟิลด์ 1 ก็แล้วกัน ก็แก้เป็น
do while not rs.eof
sq = ""
for i = 0 to j
sq= sq & rs(i)
if i = 1 then sq = sq & "0000000000" ' เพิ่มบรรทัดนี้เข้ามาครับ
next
สมมติว่าเป็นฟิลด์ 1 ก็แล้วกัน ก็แก้เป็น
do while not rs.eof
sq = ""
for i = 0 to j
sq= sq & rs(i)
if i = 1 then sq = sq & "0000000000" ' เพิ่มบรรทัดนี้เข้ามาครับ
next
11 @R13367
ได้แล้วครับ เป็นไปตามที่ต้องการเลยครับ
ขอบคุณมากครับ
ขอบคุณมากครับ
12 @R13413
ต่ออีก 1 คำถามครับ ผมใส่ code เหล่านี้ใน vb access 2003 เรียกรันได้ปกติ แต่พอเป็น 2007 มันไม่ effect ใด ๆ เลยครับ มีวิธีการเรียกใช้ ยังงัยบ้างครับ
Time: 0.3951s
ตรงช่วงที่จะให้เป็นช่องว่างก็ใส่ Space(ใส่ตัวเลขจำนวนช่องว่าง)
Save Query แล้วไปคลิ๊กขวาที่ Query ส่งออกเป็น Text File
ลองเลือกตัวเลือกต่างๆ ดูนะครับ