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



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

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

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 แล้ว) ต้องเขียนโค้ดเพิ่มอย่างไรครับ ขอบคุณครับ

 
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

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:

 

09 มี.ค. 64 , 11:19:17
ตอบกลับ #7

aung

  • สมาชิกไท.Access
  • กระทู้: 3

  • ขอบคุณ ไท.Access

    • ดูรายละเอียด

: ต้องการเปลี่ยนนามสกุลไฟล์หลังจากimport
« ตอบกลับ #7 เมื่อ: 09 มี.ค. 64 , 11:19:17 »
รบกวน อาจารย์อีกนิดนึงครับพอดีเจอ BUG ในกรณีที่กำลังจะเปลี่ยนนามสกุลจาก *.txt ไปเป็น *.xxx ถ้ามีไฟล์ *.xxx อยู่แล้วก็จะเกิด error ขึ้น ถ้าผมต้องการให้ลบไฟล์*.xxx(ชื่อเดียวกับ*.txt) นั้นออกเพื่อไม่ให้เกิด error ดังกล่าวผมต้องเพิ่ม code อย่างไรครับ ขอบคุณครับ

 

09 มี.ค. 64 , 15:02:37
ตอบกลับ #8

PNR

: ต้องการเปลี่ยนนามสกุลไฟล์หลังจากimport
« ตอบกลับ #8 เมื่อ: 09 มี.ค. 64 , 15:02:37 »
แก้เป็นแบบนี้ครับ ในส่วนของ Import()

โค๊ด: [Select]
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"
   
    If Len(Dir$(strextensionNew)) > 0 Then
                Kill strextensionNew
    End If
    Name StrFileName As strextensionNew

    strFile = Dir(strPath & "*.txt")
    Loop
End Sub
เรียนเพื่อนสมาชิกและอาจารย์ทุกท่าน
ผมไม่ใช่อาจารย์และไม่ใช่ผู้ที่แตกฉานใน Access นะครับ
แค่ผู้หนึ่งที่แชร์ความรู้เท่าที่มี ถ้าหากอาจารย์ทุกท่านเห็นว่ายังไม่ถูกต้อง
กรุณาโพสตอบกระทู้ส่วนเนื้อหาที่น่าจะถูกต้องกว่าให้ด้วยเพื่อเป็นวิทยาทาน
 
โพสต์นี้ได้รับคำขอบคุณจาก: kapiak

09 มี.ค. 64 , 20:35:55
ตอบกลับ #9

kapiak

  • สมาชิกไท.Access
  • กระทู้: 9

  • ขอบคุณ ไท.Access

    • ดูรายละเอียด

: ต้องการเปลี่ยนนามสกุลไฟล์หลังจากimport
« ตอบกลับ #9 เมื่อ: 09 มี.ค. 64 , 20:35:55 »
ขอบคุณครับผม :want: :want:

 


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