Đưa dữ liệu từ excel vào fox!

Liên hệ QC

ThuNghi

Hãy cho rồi sẽ nhận!
Thành viên đã mất
Tham gia
16/8/06
Bài viết
3,808
Được thích
4,449
Tôi có file excel là Data, nhờ các anh chị hướng dẫn giúp viết code để đưa dữ liệu từ file data sh data vào file chtuct.dbf theo đúng các trường tương ứng với cột của sh Data.
Xin cám ơn.
Bạn giúp trong file kèm.
 

File đính kèm

  • ConvertExToFox.rar
    2.9 KB · Đọc: 95
Tôi có file excel là Data, nhờ các anh chị hướng dẫn giúp viết code để đưa dữ liệu từ file data sh data vào file chtuct.dbf theo đúng các trường tương ứng với cột của sh Data.
Xin cám ơn.
Bạn giúp trong file kèm.

quỏa,
cái này chỉ cần đổi đuôi thôi anh àh, chỉ có từ fox convert sang excel thì mới viết thôi vì trong file excel bị giới hạn số record nhận, còn từ excel sang dbf thì dễ lắm, dbf không bị giới hạn số record, hình như chỉ giới hạn dung lương thôi thì phải, mình làm thế này:
đang đứng ở excel, anh bung hết các column ra hết, đừng để bị che chữ, nếu không sang DBF sẽ bị mất phần bị che đó,
---> save as
---> chọn save as type là DBF, có nhiều version, em chọn DBF4 (vì em thấy nó...mới nhất), còn mục file name thì phải đặt tên không có khoảng trắng
---> Ok,
sau đó phải đóng file excel lại thì mới mở cái file có đuôi dbf đó ra được
thấy anh hay dùng fox nhỉ,
 
quỏa,
cái này chỉ cần đổi đuôi thôi anh àh, chỉ có từ fox convert sang excel thì mới viết thôi vì trong file excel bị giới hạn số record nhận, còn từ excel sang dbf thì dễ lắm, dbf không bị giới hạn số record, hình như chỉ giới hạn dung lương thôi thì phải, mình làm thế này:
đang đứng ở excel, anh bung hết các column ra hết, đừng để bị che chữ, nếu không sang DBF sẽ bị mất phần bị che đó,
---> save as
---> chọn save as type là DBF, có nhiều version, em chọn DBF4 (vì em thấy nó...mới nhất), còn mục file name thì phải đặt tên không có khoảng trắng
---> Ok,
sau đó phải đóng file excel lại thì mới mở cái file có đuôi dbf đó ra được
thấy anh hay dùng fox nhỉ,
Cám ơn Phúc nhiều lắm. Bên a dùng ct viết trên fox nhưng mấy bước cập nhật mã HH ... nó phải qua nhiều bước nhiêu khê quá. Từ Fox thì anh cũng học hỏi từ em lấy data từ Ex rồi.
Bây giờ muốn là từ Ex duyệt qua file dbf theo ADO hay ODBC gì đó. Sau đó appen file ex vào dbf.
Tất cả các code đều chạy từ Ex.
Cám ơn em 1 lần nữa vì có xem qua bài và nợ e 1 chầu về vụ hôm trước. Còn nhiều vấn đề về Fox muốn học hỏi từ em lắm cụ th63 như appe dữ liệu từ ex sang dbf mà các dbf có quan hệ với file .dbc.
Anh có google và tạo 1 code lấy dbf vào ex. Còn ngược lại là thế nào nhờ em và các anh chị hỗ trợ.
 

File đính kèm

  • DbfToExcel.rar
    14.2 KB · Đọc: 73
Lần chỉnh sửa cuối:
Sau khi google và may quá gặp bài của anh Sealand tại link sau
http://www.giaiphapexcel.com/forum/showthread.php?15637-Giúp-đỡ-về-code-cho-CT-nhập-xuất-tồn-kho&
Tôi xào lại theo code trên nhưng hiện vẫn chưa hiểu, báo lỗi.
Screen.MousePointer = vbHourglass
Tạm thời bỏ dòng đó.
Code sau là lấy những dòng từ sh Data mà TK Có =1111
Anh Sealand giải thích giúp em cách xóa hoàn toàn dbf từ ex.
Em mới nghiên cứu tới đó.
PHP:
Dim cnEx As ADODB.Connection
Dim recEx As ADODB.Recordset
Dim cnFox As New ADODB.Connection
Dim rsFox As New ADODB.Recordset
Dim tb As String, myPath As String
Dim i As Long
Sub ConvertExToFox()
'Screen.MousePointer = vbHourglass
'Screen.MousePointer = 11
Set cnEx = New ADODB.Connection
Set cnFox = New ADODB.Connection
tb = ThisWorkbook.FullName
myPath = ThisWorkbook.Path
cnEx.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & tb & ";Persist Security Info=False; Extended Properties=Excel 8.0;"
cnEx.Open
Set recEx = New ADODB.Recordset
'recEx.Open "select * from [Data$] where matkco like 'GTGT01-3LL'and KHHD like 'DN/00B'", cnEx, adOpenKeyset, adLockOptimistic
recEx.Open "select * from [Data$] where matkco like '1111'", cnEx, adOpenKeyset, adLockOptimistic
cnFox.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;Extended Properties=Driver={Microsoft Visual FoxPro Driver};UID=;SourceDB=" & myPath & "\;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"
cnFox.Open
Set rsFox = New ADODB.Recordset
rsFox.CursorLocation = adUseClient
'rsFox.Open "select * from chtuct where idsector = ''", cnFox, adOpenKeyset, adLockOptimistic
rsFox.Open "select * from chtuct ", cnFox, adOpenKeyset, adLockOptimistic
While Not recEx.EOF
  'appen
  rsFox.AddNew
  For i = 0 To recEx.Fields.Count - 1
    rsFox(recEx(i).Name) = recEx(i)
  Next i
  rsFox.Update
  recEx.MoveNext
Wend
recEx.Close
Set recEx = Nothing
rsFox.Close
Set rsFox = Nothing
cnEx.Close
Set cnEx = Nothing

cnFox.Close
Set cnFox = Nothing
'Screen.MousePointer = vbDefault
'Screen.MousePointer = 0
End Sub
 

File đính kèm

  • ConvertExToFox.rar
    10.9 KB · Đọc: 75
Sau khi google và may quá gặp bài của anh Sealand tại link sau
http://www.giaiphapexcel.com/forum/showthread.php?15637-Giúp-đỡ-về-code-cho-CT-nhập-xuất-tồn-kho&
Tôi xào lại theo code trên nhưng hiện vẫn chưa hiểu, báo lỗi.

Tạm thời bỏ dòng đó.
Code sau là lấy những dòng từ sh Data mà TK Có =1111
Anh Sealand giải thích giúp em cách xóa hoàn toàn dbf từ ex.
Em mới nghiên cứu tới đó.
PHP:
Dim cnEx As ADODB.Connection
Dim recEx As ADODB.Recordset
Dim cnFox As New ADODB.Connection
Dim rsFox As New ADODB.Recordset
Dim tb As String, myPath As String
Dim i As Long
Sub ConvertExToFox()
'Screen.MousePointer = vbHourglass
'Screen.MousePointer = 11
Set cnEx = New ADODB.Connection
Set cnFox = New ADODB.Connection
tb = ThisWorkbook.FullName
myPath = ThisWorkbook.Path
cnEx.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & tb & ";Persist Security Info=False; Extended Properties=Excel 8.0;"
cnEx.Open
Set recEx = New ADODB.Recordset
'recEx.Open "select * from [Data$] where matkco like 'GTGT01-3LL'and KHHD like 'DN/00B'", cnEx, adOpenKeyset, adLockOptimistic
recEx.Open "select * from [Data$] where matkco like '1111'", cnEx, adOpenKeyset, adLockOptimistic
cnFox.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;Extended Properties=Driver={Microsoft Visual FoxPro Driver};UID=;SourceDB=" & myPath & "\;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"
cnFox.Open
Set rsFox = New ADODB.Recordset
rsFox.CursorLocation = adUseClient
'rsFox.Open "select * from chtuct where idsector = ''", cnFox, adOpenKeyset, adLockOptimistic
rsFox.Open "select * from chtuct ", cnFox, adOpenKeyset, adLockOptimistic
While Not recEx.EOF
  'appen
  rsFox.AddNew
  For i = 0 To recEx.Fields.Count - 1
    rsFox(recEx(i).Name) = recEx(i)
  Next i
  rsFox.Update
  recEx.MoveNext
Wend
recEx.Close
Set recEx = Nothing
rsFox.Close
Set rsFox = Nothing
cnEx.Close
Set cnEx = Nothing

cnFox.Close
Set cnFox = Nothing
'Screen.MousePointer = vbDefault
'Screen.MousePointer = 0
End Sub

Để xóa tất cả record trong một table làm thế này

cnFox.Execute "delete from tblYourTable"

Nếu muốn xóa các record thỏa mãn các điều kiện thì thêm WHERE

cnFox.Execute "delete from tblYourTable where matkco like '1111' "
 
em gửi anh cái code này để tham khảo, mục đích là chuyển tất cả các file xls có trong 1 thư mục nào đó (ghi đường dẫn cụ thể ra) vào 1 file dbf, em đứng ở fox để thao tác chứ không làm từ excel (do dốt code bên excel quá xá)
em thiết kế với ý tưởng là chuyển 1 xls thành 1 dbf, sau đó apen các dbf lại với nhau thành 1 file dbf tổng.
Còn vấn đề appe dữ liệu từ ex sang dbf mà các dbf có quan hệ với file .dbc thì em chưa làm bao giờ nên em hỏng có biết làm
em chỉ biết query từ CSDL có sẵn (do phục vụ cho 1 ít công việc của em) còn code là "mò mẫm" để làm chứ hỏng có giỏi giang gì hết, nên anh mà hỏi em về cái này là em...điếc luôn. Với lại do em chỉ làm cho biết chứ công việc thì hỏng có yêu cầu, biết sơ sơ thôi, có yêu cầu thì em làm từ từ cũng ra nhưng em làm hỏng có nhanh,
em hỏng biết làm sao để post cái dòng code, đành gửi file vậy
 

File đính kèm

  • p.7z
    1.3 KB · Đọc: 68
Tôi dùng code sau để đưa dữ liệu từ Ex file Data.xls sh Data sang chtuct.dbf nhưng 2 file trên phải nằm chung 1 folder, nay tôi muốn tách file Data.xls sang folder khác dù đã khai báo path rồi mà vẫn báo lỗi dòng
Nhờ các bạn hướng dẫn tại sao.
Xin cám ơn.
PHP:
Dim cnEx As ADODB.Connection
Dim recEx As ADODB.Recordset
Dim cnFox As New ADODB.Connection
Dim recFox As New ADODB.Recordset
Dim wbName As String, foxName As String, myPath As String
Dim iC As Long, iR As Long, endR As Long, endC As Long
Dim ArrData()
Sub ConvertExToFoxArr()
'Khai bao ten file
wbName = ThisWorkbook.FullName
myPath = ThisWorkbook.Path
With Sheets("Data")
  endR = .Cells(65000, 1).End(xlUp).Row
  endC = .Cells(1, 256).End(xlToLeft).Column
  ArrData = .Range("A1").Resize(endR, endC).Value
  ' .Range("A1").Resize(endR, endC).Select
End With
KetNoiFox
cnFox.Open
'Khai Bao ten file DBF
foxName = "chtuct.dbf"
'foxName = myPath & "\" & foxName
'xoa toan bo dbf con appen thi bo dong Execute sau
cnFox.Execute "delete from " & foxName
recFox.Open "select * from " & foxName & Chr(10), cnFox, adOpenKeyset, adLockOptimistic
For iR = 2 To UBound(ArrData, 1)
  recFox.AddNew
  For iC = 1 To UBound(ArrData, 2)
    recFox(ArrData(1, iC)) = ArrData(iR, iC)
  Next iC
  recFox.Update
Next iR
BoKetNoiFox
Erase ArrData
End Sub

Sub KetNoiFox()
Set cnFox = New ADODB.Connection
cnFox.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;Extended Properties=Driver={Microsoft Visual FoxPro Driver};UID=;SourceDB=" & myPath & "\;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"
Set recFox = New ADODB.Recordset
recFox.CursorLocation = adUseClient
End Sub
Sub BoKetNoiFox()
recFox.Close
Set recFox = Nothing
cnFox.Close
Set cnFox = Nothing
End Sub
Phải cài file VFBODBC để khai báo DNS ODBC.
 

File đính kèm

  • ConvertExToFox.rar
    13.3 KB · Đọc: 53
  • VFPODBC.rar
    697.6 KB · Đọc: 142
Để xóa tất cả record trong một table làm thế này

cnFox.Execute "delete from tblYourTable"

Nếu muốn xóa các record thỏa mãn các điều kiện thì thêm WHERE

cnFox.Execute "delete from tblYourTable where matkco like '1111' "
Đôi với file .dbf, khi dùng lệnh trên thì xóa các record nhưng còn một vấn đề là, các record trên chỉ mới đánh dấu thôi, chưa xóa hẳn hoàn toàn, phải vào fox mở file .dbf và dùng lệnh pack mới xóa hoàn toàn.
Vậy nhờ các bạn viết giúp câu lệnh VBA xóa hẳn các record trên file .dbf giúp tựa như mở file dbf và
1/ Dele All
2/ Pack
Hay là
Zap.
Xin cám ơn.
 
Đôi với file .dbf, khi dùng lệnh trên thì xóa các record nhưng còn một vấn đề là, các record trên chỉ mới đánh dấu thôi, chưa xóa hẳn hoàn toàn, phải vào fox mở file .dbf và dùng lệnh pack mới xóa hoàn toàn.
Vậy nhờ các bạn viết giúp câu lệnh VBA xóa hẳn các record trên file .dbf giúp tựa như mở file dbf và
1/ Dele All
2/ Pack
Hay là
Zap.
Xin cám ơn.

Xin phép cheng ngang bài của Thầy 1 tí trước khi các Thầy cùng trao đổi chia sẻ các câu lệnh VBA xóa hẳn các record của các tập tin dbf.

Thế trong chương trình viết bằng Visual Fox, Foxpro của Thầy sau Thầy không thực hiện lệnh Zap, Pack này trước khi thoát chương trình. Ngoại trừ, Thầy lấy các tập tin dbf đó xử lý thô mới gặp tình trạng trên.
 
Xin phép cheng ngang bài của Thầy 1 tí trước khi các Thầy cùng trao đổi chia sẻ các câu lệnh VBA xóa hẳn các record của các tập tin dbf.

Thế trong chương trình viết bằng Visual Fox, Foxpro của Thầy sau Thầy không thực hiện lệnh Zap, Pack này trước khi thoát chương trình. Ngoại trừ, Thầy lấy các tập tin dbf đó xử lý thô mới gặp tình trạng trên.
Nội dung topic này là đưa dữ liệu từ ex vào fox mà. Có những dbf mà trường maHH là key nên không thể trùng mã được. Thay vì thủ công trước khi xử lý mình mở dbf và dùng lệnh Zap, nhưng như vậy chưa pro nên muốn viết dòng lệnh từ VBA luôn. Những trường hợp xảy ra là đưa lần 1 sai nên mới update lại mà mahh cũ chưa bị xóa hẳn nên lệnh recordupdate kg thực hiện.
Cám ơn Bác đã xem qua.
 
Tôi dùng code sau để đưa dữ liệu từ Ex file Data.xls sh Data sang chtuct.dbf nhưng 2 file trên phải nằm chung 1 folder, nay tôi muốn tách file Data.xls sang folder khác dù đã khai báo path rồi mà vẫn báo lỗi dòng

Nhờ các bạn hướng dẫn tại sao.
Xin cám ơn.

Phải cài file VFBODBC để khai báo DNS ODBC.
Các bạn giúp mình phần pack hay zap file dbf bằng VB với.
Tiện thể giải thích vấn đề 2 file năm khác folder thì kg chạy được.
Chân thành hậu tạ.
 
các anh có thể viết dúp em như thề này được không?

trong excel của em co nhiều cột stt-ho va ten- nam sinh....
và một database DBF khi convert thi no chỉ vào ten thôi giả sử B3 là tên thì nó cập nhật tên người đó vào database vào phan ten còn lại không vào cái gì hết.
cảm ơn các anh nhiều
 
các anh có thể viết dúp em như thề này được không?

trong excel của em co nhiều cột stt-ho va ten- nam sinh....
và một database DBF khi convert thi no chỉ vào ten thôi giả sử B3 là tên thì nó cập nhật tên người đó vào database vào phan ten còn lại không vào cái gì hết.
cảm ơn các anh nhiều
Convert cả sh vào data còn được vậy convert chỉ 1 field sẽ dễ hơn. Mình sẽ chọn phần cần convert hay là mình làm thêm 1 sh chỉ có tên lấy từ sh trước và convert sh đó.
 
Web KT
Back
Top Bottom