สมัครสมาชิก
 

ต้องการเปลี่ยนนามสกุลไฟล์หลังจากimport



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

27 พ.ย. 61 , 23:21:22
อ่าน 218 ครั้ง

aek

จากกระทู้นี้ https://www.thai-access.com/index.php?topic=540.0 ครับ

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

คือ strPath จะมีไฟล์ใหม่มาเพิ่มตลอด ต้องการไม่ให้ import ไฟล์เดิมซ้ำ(เพราะทำให้โปรแกรม importนานเกินจำเป็น) และไม่อยากลบไฟล์ต้นฉบับ(ต้องการเปลี่ยนจาก *.txt เป็น *.xxx หลักจาก import แล้ว) ต้องเขียนโค้ดเพิ่มอย่างไรครับ ขอบคุณครับ

 

28 พ.ย. 61 , 08:39:36
ตอบกลับ #1

ปิ่นณรงค์

: ต้องการเปลี่ยนนามสกุลไฟล์หลังจากimport
« ตอบกลับ #1 เมื่อ: 28 พ.ย. 61 , 08:39:36 »
เพิ่มนิดนึงประมาณนี้ครับ เพิ่ม CODE ให้เมื่อ Dir มาแล้ว Import เข้าไปในตารางแล้วก็ให้แก้นามสกุลไฟล์นั้นเป็น .XXX ก่อนจึงจะไป Dir อันใหม่มา Import ต่อ

Private Sub import_Click()
    Dim strPath As String
    Dim strFile As String
    Dim strTable As String
    Dim StrFileName As String
    Dim strextensionNew As String

    strTable = "Table1"
    strPath = "D:\textfile\"
    strFile = Dir(strPath & "*.txt")
    If strFile = "" Then
    MsgBox "ไม่พบไฟล์ที่จะ Import !!", vbCritical, "แจ้งเตือน"
    Exit Sub
    End If
    Do While strFile <> ""
    StrFileName = strPath & strFile
    DoCmd.TransferText acImportDelim, "", strTable, StrFileName, False
   
    strextensionNew = Left(StrFileName, InStrRev(StrFileName, ".") - 1) & ".xxx"
   
   
   
    Name StrFileName As strextensionNew
    strFile = Dir
    Loop
End Sub
« แก้ไขครั้งสุดท้าย: 28 พ.ย. 61 , 12:03:39 โดย ปิ่นณรงค์ »
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: aek

28 พ.ย. 61 , 09:57:23
ตอบกลับ #2

aek

: ต้องการเปลี่ยนนามสกุลไฟล์หลังจากimport
« ตอบกลับ #2 เมื่อ: 28 พ.ย. 61 , 09:57:23 »
สุดยอดไปเลย ขอบคุณมากๆครับ ได้ตามที่ต้องการเลยครับ :grin: :grin: :grin:

 

07 ม.ค. 62 , 14:51:55
ตอบกลับ #3

aek

: ต้องการเปลี่ยนนามสกุลไฟล์หลังจากimport
« ตอบกลับ #3 เมื่อ: 07 ม.ค. 62 , 14:51:55 »
อ.ปิ่นณรงค์ ครับขออนุญาติสอบถามเพิ่ม ถ้าต้องการทราบจำนวนไฟล์ที่ *.txt ในโฟล์เดอ strPath ก่อนที่จำทำการ import ว่ามีกีไฟล์ ไม่ทราบว่าจะต้องเขียน code เพิ่มอย่างไรครับ ขอบคุณครับ :prettiness: :prettiness: :prettiness:

 

07 ม.ค. 62 , 18:29:43
ตอบกลับ #4

aek

: ต้องการเปลี่ยนนามสกุลไฟล์หลังจากimport
« ตอบกลับ #4 เมื่อ: 07 ม.ค. 62 , 18:29:43 »
ทำได้แล้วครับ แต่ทำให้โปรแกรม import ช้าลงอีก ผู้ใช้งานคงไม่ Happy ขอบคุณครับ

 

07 ม.ค. 62 , 20:49:45
ตอบกลับ #5

ปิ่นณรงค์

: ต้องการเปลี่ยนนามสกุลไฟล์หลังจากimport
« ตอบกลับ #5 เมื่อ: 07 ม.ค. 62 , 20:49:45 »
โทษทีที่ตอบช้านะครับ
ลองดูตัวอย่างนี้ ใช้การแสดงจำนวนแล้ว สอบถามผู้ใช้เลยว่า ต้องการนำเข้าข้อมูลเลยหรือไม่ครับ ถ้าตอบใช่ก็จะทำการนำเข้าให้ทันที พร้อมเปลี่ยนนามสกุล เป็น .xxx เมื่อนำเข้าแล้วครับ  ส่วนที่ผมใส่สีแดงไว้คือส่วนที่ต้องแก้ให้ตรงกับ Floder และ ตาราง ที่มีอยู่นะครับ


Private Sub Command0_Click()
    Dim Msg As Integer
    Dim count As Integer
    Dim strPath As String
    Dim strFile As String
         
        strPath = "D:\textfile\"
        strFile = Dir(strPath & "*.txt")
    If strFile = "" Then
    MsgBox "ไม่เจอไฟล์ที่จะ import !!", vbCritical, "แจ้งเตือน"
    Exit Sub
    Else
    Do While strFile <> ""
       count = count + 1
        strFile = Dir()
    Loop

     Msg = MsgBox("พบ File =  " & count & " อัน" & vbCrLf & " ต้องการนำเข้าไฟล์เลยหรือไม่?", vbYesNo+vbQuestion, "จำนวนไฟล์ทั้งหมด")

    If Msg = vbYes Then
    Call Import
    End If
           End If     
End Sub


Sub Import()
    Dim strPath As String
    Dim strFile As String
    Dim strTable As String
    Dim StrFileName As String
    Dim strextensionNew As String
   
    strTable = "Table1"
    strPath = "D:\textfile\"
   
    strFile = Dir(strPath & "*.txt")
   
    Do While strFile <> ""
    StrFileName = strPath & strFile
    DoCmd.TransferText acImportDelim, "", strTable, StrFileName, False
    strextensionNew = Left(StrFileName, InStrRev(StrFileName, ".") - 1) & ".xxx"
    Name StrFileName As strextensionNew
    strFile = Dir
    Loop
End Sub

« แก้ไขครั้งสุดท้าย: 07 ม.ค. 62 , 23:58:49 โดย ปิ่นณรงค์ »
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: aek

07 ม.ค. 62 , 21:36:41
ตอบกลับ #6

aek

: ต้องการเปลี่ยนนามสกุลไฟล์หลังจากimport
« ตอบกลับ #6 เมื่อ: 07 ม.ค. 62 , 21:36:41 »
ได้แล้วครับ ขอบคุณมากๆ ตอบไม่ช้าหรอกครับ ผมรอได้ครับ :grin: :grin: :grin:

 


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