Nhân tiện xin được giúp đỡ về ADO và SQL
Tôi cần truy cập 1 file text nhưng các tên của trường lại vi phạm naming rule như sau:
Date-out , Time-out , S/N ,Truck ID , Net ,I/O ,Cust. ID , Cust. name ,Mat. ID , Mat. name ,Lot No. , Bag Qty ,From Loader , Tank ID ,Operator
========== ,=========== ,====== ,======== ,======== ,==== ,======== ,==================== ,======= ,====================
22/11/2006 ,6:45:50 AM , 1 ,16L2504 , 4040 ,Out ,008 ,a CTY HA PHUONG ,P3 ,50KG BAG PCB30 ,623 , 80 ,BCL2 , ,USER ,Auto , 6710 , 2670
22/11/2006 ,6:57:14 AM , 2 ,16K3958 , 15070 ,Out ,008 ,a CTY HA PHUONG ,P3 ,50KG BAG PCB30 ,623 , 300 ,BCL2 , ,USER ,Auto , 20990 , 5920
22/11/2006 ,7:07:09 AM , 3 ,16H9422 , 10060 ,Out ,008 ,a CTY HA PHUONG ,P3 ,50KG BAG PCB30 ,623 , 200 ,BCL2 , ,USER ,Auto , 14470 , 4410
22/11/2006 ,8:31:03 AM , 4 ,16L1274 , 10060 ,Out ,008 ,a CTY HA PHUONG ,P3 ,50KG BAG PCB30 ,623 , 200 ,BCL2 , ,USER ,Auto , 15060 , 5000
22/11/2006 ,9:33:17 AM , 5 ,16K4216 , 15090 ,Out ,008 ,a CTY HA PHUONG ,P3 ,50KG BAG PCB30 ,623 , 300 ,BCL2 , ,USER ,Auto , 20810 , 5720
Xin nói thêm là dũ liệu này xuất từ 1 chương trình quản lý cân (viết bằng Delphi) ra và không thay đổi được format (mỗi lần đổi nó đòi $500), ngoài ra hàng ngày thứ tự các field lại thay đổi lộn xộn. Không vấn đề gì nếu mình Import Text trong Access hay khi Query text file rồi sort theo chiều ngang. Tôi thấy cách này có vẻ nhà quê quá còn khi truy cập file bằng ADO thì nếu SQLstr =
Public Sub QueryTextFile()
Dim Recordset As ADODB.Recordset
Dim ConnectionString As String
ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.Path & ";" & _
"Extended Properties=Text;"
Const SQL As String = _
"SELECT GROSS, NET FROM 20061204.txt;"
Set Recordset = New ADODB.Recordset
Call Recordset.Open(SQL, ConnectionString, _
CursorTypeEnum.adOpenForwardOnly, _
LockTypeEnum.adLockReadOnly, CommandTypeEnum.adCmdText)
Call Sheet1.Range("A1").CopyFromRecordset(Recordset)
Recordset.Close
Set Recordset = Nothing
End Sub
SQL As String = "SELECT * FROM 20061204.txt;" hay là
"SELECT GROSS, NET FROM 20061204.txt;"
thì hoàn toàn OK
nhưng nếu "SELECT CUST.ID FROM 20061204.txt;" thì luôn báo lỗi.
Ngay cả khi in các Field Name bằng Debug.print Field.Name , vd kết quả Cust. ID thì cho là Cust #ID ) ra rồi dán vào thì nó cũng báo lỗi.
Câu hỏi của tôi là làm cách nào xử lý với những tên FIELD (Bag Qty, Scale mode,...)này và làm việc với nó bình thường để có thể trích xuất như các tên khác như Net, Gross,...
Xin cảm ơn nhiều!