อยากจะสอบถามเกี่ยวกับการ export file to text file
กระทู้เก่าบอร์ด อ.Yeadram

 3,867   12
URL.หัวข้อ / URL
อยากจะสอบถามเกี่ยวกับการ export file to text file

อยากจะสอบถามเกี่ยวกับการ export file จากการ query ให้ export ออกมาเป็น txt file ที่ส่ง bank ได้
ลักษณะ ข้อมูลใน field ต่าง ๆ ติดกันหมดเลย เป็น reccord ๆ ไป อ่ะครับ พอจะมีตัวอย่างมั้ยครับ

12 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R13342
ก็ทำข้อมูลลงใน Query ให้ได้ตามโครงสร้างที่เราต้องการก่อน
ตรงช่วงที่จะให้เป็นช่องว่างก็ใส่ Space(ใส่ตัวเลขจำนวนช่องว่าง)
Save Query แล้วไปคลิ๊กขวาที่ Query ส่งออกเป็น Text File
ลองเลือกตัวเลือกต่างๆ ดูนะครับ
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

นี้อ่ะครับ รบกวนด้วยน่ะครับ ด่วนได้จะเยี่ยมเลยครับ เพราะต้องส่งงานวันนี้แล้ว
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
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

จะสามารถแก้ไข ส่วนไหนได้บ้างครับเพื่อให้เป็นไปตามเป้าหมายอ่ะครับ ตอนนี้มึนตึบหมดแหละครับ
6 @R13352
คุณคัดลอกตัวที่ผมให้ไป ไปวางในโมดูลว่างๆ
เอาพ้อยเตอร์ของเม้าส์ วางในบริเวณ 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

ครับ ถ้าเป็นแบบนี้ มีวิธีแก้ยังงัยบ้างครับ
8 @R13363
พิมพ์ใหม่ครับ ตก ตัว t ไปตัวหนึ่ง
คำว่า connection
9 @R13365
สุโค่ย ๆๆๆๆๆ ได้แหละครับ ขอบคุณมากครับ ไม่ได้ คุณ yeadram ชีวิตอาจดับได้ครับ

รบกวนอีกนิดนึงครับ ถ้าเรา ต้องการจะใส่ 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
11 @R13367
ได้แล้วครับ เป็นไปตามที่ต้องการเลยครับ
ขอบคุณมากครับ
12 @R13413
ต่ออีก 1 คำถามครับ ผมใส่ code เหล่านี้ใน vb access 2003 เรียกรันได้ปกติ แต่พอเป็น 2007 มันไม่ effect ใด ๆ เลยครับ มีวิธีการเรียกใช้ ยังงัยบ้างครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3951s