Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hướng dẫn] Tư vấn import data(đuôi csv) vào file access nguồn
#1
Xin chào A/C/E diễn đàn Thuthuataccess.
Do vừa mới tập tành đến với access nên rất mong mọi người hướng dẫn trong việc áp dụng access trong công việc.
Mình có công việc được mô tả như bên dưới, rất mong mọi người hướng dẫn.
Vào mỗi cuối tháng, hệ thống công ty sẽ export ra khoảng 10 file data thô ở dạng *.csv theo tên được đặt như yyyymmdd_XXXX.csv(XXXX là tên file).
Nhiệm vụ của mình là xử lý trên 10 file data thô này.
Do như cầu mình muốn đưa 10 file này vào access để xử lý nhưng việc import thủ công rất mất thời gian nên mình đang tìm hiểu để import tự động bằng code VBA.
Thêm nữa, data này có nhiều người xài nên mình phải để ở ổ đĩa chung.
Và mình làm như bên dưới.
Một file access chứa data nguồn được import tự động từ 10 file data thô csv được share chung trên ở đĩa chung.
Các máy client được kết nối với data nguồn để xử lý dữ liệu.
+ Với file data nguồn, mình muốn viết code để có thể tự động đến đường dẫn mặc định tìm file import những file data cần thiêts và append vào các table có sẵn trong file data nguồn bằng một button trên form.
+ Với các máy client, mình muốn viết code để có thể kết nối và truy vấn đến data nguồn khi data nguồn được cập nhật.
Hiện tại,ý tưởng mình đang là như thế nên mong mọi người tư vấn.
Với cách trên có khả thi không ? và làm như trên cần chú ý những vấn đề gì ?
Nếu có thể, A/C/E cho em xin một vài link hướng dẫn việc import tự động bằng VBA. Cảm ơn mọi người.
Chữ ký của subasatran Xin chào, mình là subasatran, Tham gia http://thuthuataccess.com/forum từ ngày 18-12 -14.
Reply
Những người đã cảm ơn
#2
Chào Bạn,

File CSV là file text, có phần phân loại trong tên file là CSV (Bạn gọi là đuôi CSV đó), lưu trữ danh sách theo dạng hàng / cột, có đặc điểm định dạng sau:
+ Nếu có tiêu đề cột thì dòng đầu tiên là tiêu đề các cột
+ với phân tách cột là dấu phẩy (cho tiêu đều cột và nội dung các dòng bên dưới)

[Hình: 77lgsluc77ktxcr4g.jpg]

Trong Access, nếu bạn muốn dùng VBA để import file CSV này ta dùng method TransferText theo cú pháp sau:
Mã:
expression. TransferText ( TransferType, SpecificationName, TableName, FileName, HasFieldNames, HTMLTableName, CodePage )
(xin tham khảo link nguồn: https://msdn.microsoft.com/VBA/Access-VB...hod-access)

Thí dụ: để import file tbldaanhsach.csv lưu trong folder "C:\TEMP" vào database thành bảng tblDanhsach tôi dùng câu lệnh như sau:
Mã:
docmd.TransferText acImportDelim ,,"tblDanhsach","C:\TEMP\tbldanhsach.csv",true,,65001
Trong câu lệnh trên, số 65001 chính là CodePage của Unicode UTF-8 (vì danh sách này là tiếng Việt Unicode có dấu)

[Hình: gcn2b0yxjab18di4g.jpg]
Chữ ký của lehongduc Lê Hồng Đức
Số ĐT: 0913.941.144
Email: lhongduc@gmail.com, lehongduc@quantribanhang.vn
Website: http://quantribanhang.vn
Reply
Những người đã cảm ơn subasatran , maidinhdan , thegioi2018
#3
(18-07-17, 08:07 AM)lehongduc Đã viết: Chào Bạn,

File CSV là file text, có phần phân loại trong tên file là CSV (Bạn gọi là đuôi CSV đó), lưu trữ danh sách theo dạng hàng / cột, có đặc điểm định dạng sau:
+ Nếu có tiêu đề cột thì dòng đầu tiên là tiêu đề các cột
+ với phân tách cột là dấu phẩy (cho tiêu đều cột và nội dung các dòng bên dưới)

[Hình: 77lgsluc77ktxcr4g.jpg]

Trong Access, nếu bạn muốn dùng VBA để import file CSV này ta dùng method TransferText theo cú pháp sau:
Mã:
expression. TransferText ( TransferType, SpecificationName, TableName, FileName, HasFieldNames, HTMLTableName, CodePage )
(xin tham khảo link nguồn: https://msdn.microsoft.com/VBA/Access-VB...hod-access)

Thí dụ: để import file tbldaanhsach.csv lưu trong folder "C:\TEMP" vào database thành bảng tblDanhsach tôi dùng câu lệnh như sau:
Mã:
docmd.TransferText acImportDelim ,,"tblDanhsach","C:\TEMP\tbldanhsach.csv",true,,65001
Trong câu lệnh trên, số 65001 chính là CodePage của Unicode UTF-8 (vì danh sách này là tiếng Việt Unicode có dấu)

[Hình: gcn2b0yxjab18di4g.jpg]
Rất cảm ơn lehongduc.
Nhưng mình có làm đoạn code như bên dưới nhưng khi click vào button thì nó không chạy lệnh. không biết bị lỗi gì ?
Mã PHP:
Private Sub Command10_Click()
DoCmd.TransferText acImportDelim, , "Table_Report""D:\DATA\20170630_Production.csv"True, , 65001
End Sub 
Chữ ký của subasatran Xin chào, mình là subasatran, Tham gia http://thuthuataccess.com/forum từ ngày 18-12 -14.
Reply
Những người đã cảm ơn
#4
Bạn có thể sử dụng Code này:
DoCmd.TransferText acLinkDelim, , "Table_Report","D:\DATA\20170630_Production.csv", True

Để linh hoạt hơn trong việc chọn File bạn nên tạo ra một Text Box và 1 Bottom, chức năng của Bottom là mở File dialog và ghi đường link của file dialog vào Text box, sau đó ở đường dẫn D:**** ở Code trên bạn chỉ cần thay giá trị của Text box vào là Ok rồi. Có thể sử dụng để mở nhiều file bạn muốn rồi!

Một lưu ý nữa là trước khi ghi Code trên thì bạn nhớ xóa file cũ đi đã nhé.

Code bottom mình để bạn tham khảo
Mã:
Private Sub example_Click()
   
   Dim dialog As Office.FileDialog
   Set dialog = Application.FileDialog(msoFileDialogFilePicker)
   
   With dialog
       .AllowMultiSelect = False
       .Filters.Clear
       .Filters.Add "CSVFiles", "*.csv*"
       
       If .Show = True Then
           Me.textBoxName = .SelectedItems(1)
       End If
   End With

End Sub
Chữ ký của duynamvnn1208 duynamvnn1208,gia nhập Thủ Thuật Access từ 25-06 -17.
Reply
Những người đã cảm ơn maidinhdan , subasatran
#5
(29-07-17, 02:20 PM)duynamvnn1208 Đã viết: Bạn có thể sử dụng Code này:
DoCmd.TransferText acLinkDelim, , "Table_Report","D:\DATA\20170630_Production.csv", True

Để linh hoạt hơn trong việc chọn File bạn nên tạo ra một Text Box và 1 Bottom, chức năng của Bottom là mở File dialog và ghi đường link của file dialog vào Text box, sau đó ở đường dẫn D:**** ở Code trên bạn chỉ cần thay giá trị của Text box vào là Ok rồi. Có thể sử dụng để mở nhiều file bạn muốn rồi!

Một lưu ý nữa là trước khi ghi Code trên thì bạn nhớ xóa file cũ đi đã nhé.

Code bottom mình để bạn tham khảo
Mã:
Private Sub example_Click()
   
   Dim dialog As Office.FileDialog
   Set dialog = Application.FileDialog(msoFileDialogFilePicker)
   
   With dialog
       .AllowMultiSelect = False
       .Filters.Clear
       .Filters.Add "CSVFiles", "*.csv*"
       
       If .Show = True Then
           Me.textBoxName = .SelectedItems(1)
       End If
   End With

End Sub
Bạn có thể cho mình một ví dụ được không ?
Do mình mới làm quen access nên conment của bạn mình không hiểu và làm như vậy được
Chữ ký của subasatran Xin chào, mình là subasatran, Tham gia http://thuthuataccess.com/forum từ ngày 18-12 -14.
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Hướng Dẫn Hàm kiểm tra dữ liệu để import dữ liệu từ excel vào access subasatran 12 481 3 Giờ trước
Bài mới nhất: kieu manh
  [Hàm] Chia xẻ file tùy biến ẩn mọi thứ hay một vài thành thần! NguyenDungAnh 0 167 07-10-18, 12:05 PM
Bài mới nhất: NguyenDungAnh
  [Thủ Thuật] Demo Tổng hợp tất cả các kiểu thông báo tiếng việt trong Access maidinhdan 39 8,388 22-09-18, 12:40 PM
Bài mới nhất: NguyenDungAnh
  Xin hỏi cách : Ép phần mềm phải dùng File có đuôi OCX cũ ledangvan 6 269 07-09-18, 10:42 AM
Bài mới nhất: ongke0711
  [Hỏi] Điền kết quả của 1 query từ Access sang Excel killitmore 0 203 21-08-18, 12:33 PM
Bài mới nhất: killitmore

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ| PMA Nha Trang| Gỗ Acrylic Không Đường Line