กระทู้เก่าบอร์ด อ.Yeadram
2,802 16
URL.หัวข้อ /
URL
ส่งออกข้อมูลตัวเลขหาย
ทำไมเวลาส่งออกมา 0 6 ตัวข้างหน้าถึงหายหรอครับช่วยหาวิธีแก้ด้วยครับ
นี้คือโค๊ดโมดูลที่ผมเขียนส่วน ฟิวส์ที่ใช้คือ AGREEMENT_NO
Sub OutputFile()
Dim db As Database
Dim rs As Recordset
Dim strOutput As String
Set db = CurrentDb
Set rs = db.OpenRecordset("HAIRCUT UPLOAD OA15")
Open getpath(CurrentDb.name) & "HAIRCUT UPLOAD OA15.txt" For Output As #1
rs.MoveFirst
Do While Not rs.EOF
strOutput = Format(rs!DETAIL, "0") & "|" & _
Format(rs!PRODUCT_CODE) & "|" & _
Format(rs!AGREEMENT_NO) & "|" & _
Format(rs!HAIRCUT_DATE) & "|" & _
Format(rs!BUCKET) & "|" & _
Format(rs!OA_CODE) & "|" & _
Format(rs!OS_BEFORE, "0.00") & "|" & _
Format(rs!OS_AFTER, "0.00") & "|" & _
Format(rs!DISCOUNT_AMT, "0.00") & "|" & _
Format(rs!TERM) & "|" & _
Format(rs!DISCOUNT_RATE, "0.00") & "|" & _
Format(rs!REASON, "000") & "|" & _
Format(rs!MESSAGE) & "|" & _
Format(rs!PP_SEQ) & "|" & _
Format(rs!PP_DATE_SEQ) & "|" & _
Format(rs!PP_DATE_AMT, "0.00")
Print #1, strOutput
rs.MoveNext
Loop
Close #1
End Sub
Function getpath(name As String) As String
getpath = (Mid(CurrentDb.name, 1, Len(CurrentDb.name) - Len(Dir(CurrentDb.name))))
End Function
Sub OutputFileTabDelimited()
Dim db As Database
Dim rs As Recordset
Dim strOutput As String
Set db = CurrentDb
Set rs = db.OpenRecordset("HAIRCUT UPLOAD OA15")
Open getpath(CurrentDb.name) & "HAIRCUT UPLOAD OA15.txt" For Output As #1
rs.MoveFirst
Do While Not rs.EOF
strOutput = rs!DETAIL & """" & vbTab & "|" & _
rs!PRODUCT_CODE & "|" & vbTab & _
rs!AGREEMENT_NO & "|" & vbTab & _
rs!HAIRCUT_DATE & "|" & vbTab & _
rs!BUCKET & "|" & vbTab & _
rs!OA_CODE & "|" & vbTab & _
rs!OS_BEFORE & "|" & vbTab & _
rs!OS_AFTER & "|" & vbTab & _
rs!DISCOUNT_AMT & "|" & vbTab & _
rs!TERM & "|" & vbTab & _
rs!DISCOUNT_RATE & "|" & vbTab & _
rs!REASON & "|" & vbTab & _
rs!MESSAGE & "|" & vbTab & _
rs!PP_SEQ & "|" & vbTab & _
rs!PP_DATE_SEQ & "|" & vbTab & _
rs!PP_DATE_AMT
Print #1, strOutput
rs.MoveNext
Loop
Close #1
End Sub
16 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R04974
Field type ของผมเป็น text อยู่แล้วอะครับ
3 @R04977
คืออย่างนี้ครับ ในขั้นตอนของการนำเข้าหรือส่งออกข้อมูลนั้น
ตัว Access เองจะมีการกำหนดรูปแบบชนิดของข้อมูล เรียกว่า Spect ซึ่งรูปแบบนี้ตัว Wizard เองจะช่วยกำหนดให้ แต่ในบางครั้งการช่วยเหลือนี้กลับทำให้รูปแบบที่เราต้องการนั้นผิดไปจากที่เราต้องการ
เราสามารถกำหนดและบันทึกทับ [Save As] เก็บไว้ได้ครับ โดยให้สังเกตว่า Spect เดิมนั้นชื่ออะไร
ตัว Access เองจะมีการกำหนดรูปแบบชนิดของข้อมูล เรียกว่า Spect ซึ่งรูปแบบนี้ตัว Wizard เองจะช่วยกำหนดให้ แต่ในบางครั้งการช่วยเหลือนี้กลับทำให้รูปแบบที่เราต้องการนั้นผิดไปจากที่เราต้องการ
เราสามารถกำหนดและบันทึกทับ [Save As] เก็บไว้ได้ครับ โดยให้สังเกตว่า Spect เดิมนั้นชื่ออะไร
4 @R04978
5 @R04979
6 @R04980
7 @R04981
8 @R04982
โดยให้สังเกตว่า ชื่อ Spec นั้นมีชื่ออะไรบ้างให้คลิ๊กดูที่ปุ่ม Specs ใต้ปุ่ม Save As
ลองดูนะครับ
ลองดูนะครับ
9 @R04983
โทษทีนะครับถ้าผมส่งออกแบบปกติมันก็จะมี 0 ติดมาด้วยอะครับ แต่พอดีผมใช้ปุ่มคำสั่งรันอัตโนมัติอะครับในฟอร์มเวลาเปิดฟอร์ม ขึ้นมามันก็จะส่งออกเองโดยอัตโนมัติแต่ไม่เข้าใจว่าทำไม่มันถึงไม่มี 0 ผมก็เข้าไปเช็คตามที่คุณศรี-นคร บอกแล้วนะครับก็ไม่ได้อะครับ ไม่ทราบว่ามีวิธีอื่นอีกหรือเปล่าครับ
10 @R04985
ผมว่ามันน่าจะเป็นเพราะ ฟังก์ชั่น Format
ถ้าเป็นเท็กซ์ ลองใช้ฟังก์ชั่น Cstr ดูครับ
ถ้าเป็นเท็กซ์ ลองใช้ฟังก์ชั่น Cstr ดูครับ
11 @R04986
ใน Sub OutputFile() ทำไม ต้องทีฟังก์ชั่น Format() กำกับทุกฟิลด์ล่ะครับ
ในบรรทัดที่คุณ เน้นหนามา
Format(rs!AGREEMENT_NO) & "|" & _
ลองเอา format() ออกดูซิครับ
หรือไม่คุณก็กำกับมันไปเลยว่าให้เป็น string
cstr(rs!AGREEMENT_NO) & "|" & _
ในบรรทัดที่คุณ เน้นหนามา
Format(rs!AGREEMENT_NO) & "|" & _
ลองเอา format() ออกดูซิครับ
หรือไม่คุณก็กำกับมันไปเลยว่าให้เป็น string
cstr(rs!AGREEMENT_NO) & "|" & _
12 @R04987
กรรม! ช่วงง่วงนอนตอนบ่าย คนเข้าอ่านพร้อมกันเยอะแฮะ
อิอิ ตอบตามหลังคุณ รักน้องบิวท์ เลย
อิอิ ตอบตามหลังคุณ รักน้องบิวท์ เลย
13 @R04996
โทษครับรักน้องบิวท์ ฟังก์ชั่น Cstr คือไรหรอแล้วเปลี่ยนตรงไหนหรอครับ รบกวนด้วยนะครับ
14 @R04999
ตามที่ อ.Yeadram บอกไว้ด้านบนครับ
มันเป็นฟังก์ชั่นแปลงค่าเป็นตัวอักษร
มันเป็นฟังก์ชั่นแปลงค่าเป็นตัวอักษร
15 @R05047
Cstr มันคือ ฟังก์ชั่นไรหรอครับ
16 @R05062
cStr() = convert to string แปลงค่าทุกอย่างในวงเล็บให้เป็นข้อความ
cStr(75/3) คือให้ Access รับทราบว่ามันคือบ้านเลขที่ 75/3 ห้ามมองว่าเป็นการเอา 75 หารด้วย 3
cStr(0812220000) ให้ Access ทราบว่ามันคือเบอร์โทรศัพท์ ถือเป็นข้อความ ห้ามเอา 0 ที่อยู่ด้านหน้าออก ถ้าเอาออกมันจะใช้ไม่ได้ ค่าตัวนี้ไม่ได้มีไว้เอาไปบวกลบคูณหารกับใคร เพราะมันคือข้อความ! เบอร์โทรศัพท์! มันคือข้อความ! มันคือ string! ห้ามมองมันเป็น number!
cStr() คือฟังก์ชั่นแปลงค่าเป็นอักษร!
cStr(75/3) คือให้ Access รับทราบว่ามันคือบ้านเลขที่ 75/3 ห้ามมองว่าเป็นการเอา 75 หารด้วย 3
cStr(0812220000) ให้ Access ทราบว่ามันคือเบอร์โทรศัพท์ ถือเป็นข้อความ ห้ามเอา 0 ที่อยู่ด้านหน้าออก ถ้าเอาออกมันจะใช้ไม่ได้ ค่าตัวนี้ไม่ได้มีไว้เอาไปบวกลบคูณหารกับใคร เพราะมันคือข้อความ! เบอร์โทรศัพท์! มันคือข้อความ! มันคือ string! ห้ามมองมันเป็น number!
cStr() คือฟังก์ชั่นแปลงค่าเป็นอักษร!
Time: 0.3616s
แต่ถ้าเป็น text จะมอง 0 เป็นตัวอักษร ไม่ตัดออก
ไม่แน่ใจว่า เกี่ยวข้องกันรึเปล่านะคับ