ต้องการให้ import ไฟล์ตามหมายเลขที่กรอกลงไปในฟอร์ม



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

07 พ.ย. 61 , 12:23:11
อ่าน 646 ครั้ง

aek

รบกวนสอบถามอีกครั้งครับ ผมมีไฟล์ชื่อ 01234.txt   อยู่ใน D  ถ้าผมต้องการ import ไฟล์นี้ โดยการกรอกหมายเลข 1234 ในฟอร์มชื่อ interface แล้วกด Enter (ให้ import ตามหมายเลขที่กรอกลงไปในฟอร์มครับ) ผมต้องพิมพ์.........ว่าอย่างไร
DoCmd.TransferText acImportDelim, "importdata", "import", "d:\..................."
หรืออื่นๆครับ รบกวนด้วยครับ  :prettiness: :prettiness: :prettiness:
« แก้ไขครั้งสุดท้าย: 07 พ.ย. 61 , 12:27:38 โดย aek »

 

07 พ.ย. 61 , 19:43:58
ตอบกลับ #1

ปิ่นณรงค์

เวลาคุณกรอกข้อมูล เป็นการสร้าง textbox1 และใส่ชื่อไฟล์รวมทั้งนามสกุลไปเลยหรือเปล่า
เช่น ใน textbox1 คุณใส่ไปว่า 1234.txt แล้วกด Enter แล้วคำสั่ง Import ก็จะทำงานแบบนี้หรือเปล่า ถ้าใช่

ให้กำหนด Event Afterupdate ของ textbox1 ดังนี้
โค๊ด: [Select]
Private Sub textbox1_AfterUpdate()
Dim StrFileName As string
StrFileName =  "d:\" & Me.textbox1
DoCmd.TransferText acImportDelim, "importdata", "import", StrFileName ,True
End Sub

หรือถ้าไฟล์ทุกอันที่จะ Import เป็นไฟล์ .txt ทั้งหมดก็ใส่คำสั่งเป็นแบบนี้ กรณีนี้ใส่แค่ชื่อไฟล์ฺ 1234
โค๊ด: [Select]
Private Sub textbox1_AfterUpdate()
Dim StrFileName As string
StrFileName =  "d:\" & Me.textbox1 & ".txt"
DoCmd.TransferText acImportDelim, "importdata", "import", StrFileName ,True
End Sub
« แก้ไขครั้งสุดท้าย: 07 พ.ย. 61 , 19:59:15 โดย ปิ่นณรงค์ »
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: aek

07 พ.ย. 61 , 20:34:31
ตอบกลับ #2

aek

ขอบคุณ อ.ปิ่นณรงค์ ที่เข้ามาตอบ ผมใช้วิธีการยิงจากเครื่องอ่านบาร์โค้ด เป็นตัวเลขครับ ผมจะลองทำดูครับ ขอถามเพิ่มนิดนึงครับ ไฟล์ที่ผมจะ import จะมี 0 นำหน้าเช่น 01234 ผมจะต้องปรับโค้ดอย่างไรเพิ่มหรือไม่ครับ ถ้าผมไม่ต้องการพิมพ์ 0 ใน textbox1 (ใช้วิธีการยิงจากเครื่องอ่านบาร์โค้ดจะไม่มี 0) ขออภัยที่อธิบายไม่ครบ ขอบคุณครับ  :want: :want:
« แก้ไขครั้งสุดท้าย: 07 พ.ย. 61 , 20:50:56 โดย aek »

 

07 พ.ย. 61 , 20:49:21
ตอบกลับ #3

ปิ่นณรงค์

กำหนดให้ คำสั่งใส่ 0 รอไว้ให้เราเลยครับ
พอได้รหัสจากบาร์โคด เช่น 1234 ข้อมูลจากคำสั่งนี้จะได้เป็น 01234.txt และทำการ Import ให้ทันทีครับ
Private Sub textbox1_AfterUpdate()
Dim StrFileName As string
StrFileName =  "d:\0" & Me.textbox1 & ".txt"
DoCmd.TransferText acImportDelim, "importdata", "import", StrFileName ,True
End Sub
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: aek

08 พ.ย. 61 , 13:39:57
ตอบกลับ #4

aek

อ.ครับ ขอถามเพิ่มอีกนิด ถ้าเปลี่ยนเป็นประมาณว่าเราต้องการให้ import ทุกไฟล์ที่นามสกุล txt เข้ามาในตารางในคราวเดียวกันก่อน(กด F9) โดยไฟล์แต่ละไฟล์ชื่อไม่เหมือนกัน แล้วค่อยมาทำ dlookup เอาข้อมูลที่ต้องการ ทำได้ไหมครับ
« แก้ไขครั้งสุดท้าย: 08 พ.ย. 61 , 13:51:33 โดย aek »

 

08 พ.ย. 61 , 15:06:27
ตอบกลับ #5

ปิ่นณรงค์

หมายถึง จะสร้างปุ่มขึ้นมา 1 ปุ่ม แล้วกดครั้งเดียวให้ File ทั้งหมดที่เป็น .txt Import เข้าตารางทั้งหมดใช่ไหมครับ


Private Sub Command1_Click()
    Dim strPath As String
    Dim strFile As String
    Dim strTable As String
    Dim StrFileName As string

    strTable = "ชื่อตารางเป้าหมาย"     
    strPath = "d:\โฟลเดอร์ที่เก็บไฟล์ .txt"
    strFile = Dir(strPath & "*.txt")

    Do While strFile <> ""
    StrFileName = strPath & strFile       
    DoCmd.TransferText acImportDelim, "importdata", strTable, StrFileName ,False
           
    strFile = Dir
    Loop
End Sub

ลองเทสดูก่อนนะครับ พอดีไม่ได้ทดสอบคำสั่งก่อนถ้ามีผิดพลาดบอกได้นะ
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: aek

09 พ.ย. 61 , 09:43:28
ตอบกลับ #6

aek

อ.เก่งจังเลยครับ ได้ตามที่ต้องการเลย ถ้าติดส่วนไหนอีกจะขอถามเพิ่มนะครับ เป็นประโยชน์ต่อท่านอื่นด้วย ขอบคุณครับ :grin: :grin: :grin:

 


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