Lấy dữ liệu Foxpro

Liên hệ QC
Mọi thứ rất tuyệt vời rồi. Chỉ không hiểu cái đoạn "tranh thủ" cài cắm quảng cáo vào thôi.

Theo "thông lệ" diễn đàn đã ban hành thì cần "cắt/ tách" ngay và luôn phần đó sang mục này, ngược lại thì phải xóa.

1645850197595.png

-----
Ngoài ra, BQT cũng nên xem lại điều khoản và cách kiểm duyệt điều khoản về chữ ký. Theo như hiện tại thì nick thành viên có chữ ký là nội dung quảng cáo to tướng, dài thoòng lòong, hễ cứ đăng bài ở bất kỳ đâu là được quảng cáo miễn phí ở đó.
Vậy theo đó thì nên xóa bỏ ngay điều khoản hạn chế quảng cáo đi cho rồi. Nếu không hài lắm.
 
Chia sẻ thư viện BSDataService32 để kết nối database 32-bit trong ứng dụng 64-bit
(Hướng dẫn trong video này lấy ví dụ CSDL Foxpro tại bài đầu tiên)
Thư viện BSDataService32 là miễn phí, hỗ trợ cho những người chỉ dùng hàm và công cụ mà không biết lập trình (làm theo các bước trong video dưới đây) ; với người lập trình cũng có thể viết code để tùy biến lấy dữ liệu.
(*) Download thư viện BSDataService32
(*) Video hướng dẫn chi tiết ứng dụng
Anh Tuân cho em hỏi thư viện này có dùng để truy vấn các loại dữ liệu khác như Excel, SQL bằng cách thay đổi ConnectionString không hả anh?
 
Anh Tuân cho em hỏi thư viện này có dùng để truy vấn các loại dữ liệu khác như Excel, SQL bằng cách thay đổi ConnectionString không hả anh?

Giải pháp của mình để mở, tức áp dụng cho tất cả các loại csdl 32-bit, chỉ cần khai báo đúng ConnectionString và các csdl đó Windows cho phép là được.
 
code két cơ bản khó khăn ở chỗ khai phá và mở đường ... khi hiểu phương thức hoạt động của nó rồi thì mọi cái nó trở nên đơn giản nhất có thể

Tùy biến và viết sao là do mình thích .... với code sau thấy họ viết cũng bắt trước viết cho có thôi .. trong VB6 chỉ kết nối xong trả lại kết quả VBA

Chịu khó đọc kỹ lại các bài trước + 1 chút kiến thức ADODB là làm tốt .... à quên biết 1 tí VB6 nữa là xong thôi

Mã:
Sub CopyRecordset_ADODB()
    Dim rst As Object
    Dim Fox As New VisualFoxProSQL.FoxPro
    ''Set rst = Fox.GetRecordset("D:\Database_Server\Database_FoxPro\CT.DBF") ''ok 1
    Set rst = Fox.CopyRecordset("D:\Database_Server\Database_FoxPro\CT.DBF", "SELECT * FROM CT") ''ok 2
    Cells.Clear
    Range("A6").CopyFromRecordset rst
    rst.Close
    Set Fox = Nothing
End Sub

Bài cuối tại đây ... ko tham gia thớt này nữa .... nếu có Tôi sẻ lập thớt mới chơi cho vui vẻ thôi
 
@Thớt:
Cái đó chỉ có tác dụng liên kết thư viện đã có để dùng thôi. Cái lõi vẫn là cái FoxPro OLE DB Provider của Microsoft ấy (chi tiết ở mấy bài đầu rồi).
Hàng miễn phí người ta chỉ cho nhiêu đó thôi, muốn truy vấn Excel , SQL gì gì nữa thì không có đâu, phải bỏ tiền ra mua.
Còn ở GPE hàng miễn phí, ngon cũng có ở ngay trang chủ đó bạn.

 
Cái dụ connect 64 với 32 này viết delphi với vb6 dễ ẹc có gì mà ghê gớm đâu nhỉ
 
Anh Tuân cho em hỏi thư viện này có dùng để truy vấn các loại dữ liệu khác như Excel, SQL bằng cách thay đổi ConnectionString không hả anh?

Đọc kỹ toàn bộ các câu trả lời của tôi để không hoang mang nhé. Việc sử dụng các thư viện ODBC hay OLE DB để kết kết nối tới các CSDL trên Windows phần lớn là miễn phí (Excel, SQL Server, MySQL, Oracle, Access, Foxpro, ....) là miễn phí. Thông qua cách khai báo ConnectionString để chỉ định CSDL cụ thể là xong.
Các câu lệnh khai báo ConnectionString tại đây:
 
Cái dụ connect 64 với 32 này viết delphi với vb6 dễ ẹc có gì mà ghê gớm đâu nhỉ
Tài nguyên code đã có rất nhiều trên mạng, quan trọng là biết gõ từ khoá để tìm kiếm đúng cái mình cần thôi.
Anh thấy trong Delphi mấy cái framework kết nối có thằng FireDAC là được đánh giá cao nhất và sử dụng được cho các hệ thống khác như Mac OS, iOS, Android. Mà Delphi lại là ngôn ngữ complied nên tốc độ xử lý của nó sẽ nhanh hơn interpreted rồi. Thấy cũng mê mà làm biếng học quá.

dbconnections.png

0201_1set.png
 
Tài nguyên code đã có rất nhiều trên mạng, quan trọng là biết gõ từ khoá để tìm kiếm đúng cái mình cần thôi.
Anh thấy trong Delphi mấy cái framework kết nối có thằng FireDAC là được đánh giá cao nhất và sử dụng được cho các hệ thống khác như Mac OS, iOS, Android. Mà Delphi lại là ngôn ngữ complied nên tốc độ xử lý của nó sẽ nhanh hơn interpreted rồi. Thấy cũng mê mà làm biếng học quá.

View attachment 272496

View attachment 272497
Hihi mỗi cái có 1 cái thế mạnh mà em cũng chưa biết sử dụng hết, mà dạo này nhiều việc quá em bỏ mò code rồi. Cái vụ conect 64 qua 32 phải có 1 chút xíu thủ thuật chứ không có làm bước đó là không connect được.
 
Chào các anh chị, mình cần lấy dữ liệu từ phần mềm kế toán foxpro ra Excel bằng cách Import, để khi dữ liệu thay đổi thì refresh sẽ có dữ liệu cập nhật.
Dữ liệu foxpro ở dạng thư mục, được nén trong file kèm theo, trong file CT.dbf.
Thảo luận quá trời mà chưa đưa file, đây là file xử lý lấy dữ liệu Foxpro chạy trong Excel 64bit đây. (Đính kèm bên dưới)

Screen Shot 2022-02-27 at 10.06.23.png

1. Chạy file [register_foxproDLL.bat] (Run as Administrator) để đăng ý cái Driver FoxPro OLED (vfpoledb.dll).
2. Kéo thả file [FoxproDBConn.exe] vào file [register.vbs] để tiến hành đăng ký cái phiên làm việc trung gian này (viết trên VB6).
3. Mở file Excel [Test _FoxproDB.xlsb], vào màn hình code -> Tool - Reference -> Tìm và bấm chọn thư viện "FoxProDbConnection" ->OK
 

File đính kèm

  • FoxProDBConn.rar
    782.9 KB · Đọc: 15
Thảo luận quá trời mà chưa đưa file, đây là file xử lý lấy dữ liệu Foxpro chạy trong Excel 64bit đây. (Đính kèm bên dưới)

View attachment 272504

1. Chạy file [register_foxproDLL.bat] (Run as Administrator) để đăng ý cái Driver FoxPro OLED (vfpoledb.dll).
2. Kéo thả file [FoxproDBConn.exe] vào file [register.vbs] để tiến hành đăng ký cái phiên làm việc trung gian này (viết trên VB6).
3. Mở file Excel [Test _FoxproDB.xlsb], vào màn hình code -> Tool - Reference -> Tìm và bấm chọn thư viện "FoxProDbConnection" ->OKth

thật tuyệt vời, cách này lấy được dữ liệu không giới hạn bản ghi
 
Đọc kỹ toàn bộ các câu trả lời của tôi để không hoang mang nhé. Việc sử dụng các thư viện ODBC hay OLE DB để kết kết nối tới các CSDL trên Windows phần lớn là miễn phí (Excel, SQL Server, MySQL, Oracle, Access, Foxpro, ....) là miễn phí. Thông qua cách khai báo ConnectionString để chỉ định CSDL cụ thể là xong.
Các câu lệnh khai báo ConnectionString tại đây:

CnnString cũng lấy từ trang web trên.
Em thử nhiều lần không được mới post hỏi đấy anh Tuân à.

1645936462733.png
 
Thớt đọc kỹ lại câu chữ của người ta đi, viết gì gì đó chứ có trả lời cụ tỉ là truy vấn Excel, SQL như thớt hỏi đâu.

Hàng siêu ngon đây này, không phải thao tác rườm rà gì cả, chỉ click 2-3 phát là xong rồi.
 
CnnString cũng lấy từ trang web trên.
Em thử nhiều lần không được mới post hỏi đấy anh Tuân à.

View attachment 272508

Vấn đề kết nối dữ liệu Foxpro chắc bạn đã giải quyết xong và không còn thắc mắc? Còn câu hỏi mới của bạn là kết nối file Excel thì lại càng dễ và tiện vì sẵn được Office hỗ trợ. Bạn làm báo lỗi gì thì gửi thông báo lỗi lên. Cần thiết lắm mới phỉa gửi file Excel nguồn của bạn lên đây (xóa dữ liệu thật đi) tôi hay các bạn trên GPE hỗ trợ. không cần thư viện ngoài mà kết nối từ trong chính Office thôi. Hãy nhớ các vấn đề của bạn đã được nhiều người giải quyết từ nhiều năm nay và nó rất dễ.

Bạn hãy tải lại thư viện và quan trọng là, file Excel ví dụ trong đó tôi đã sửa lại, trong code tôi cập nhật địa chỉ ô chưa câu lệnh SQL và chuỗi ConnectionString. File cũ tôi gửi là câu lệnh cố định nên có thể bạn không ứng dụng được với file hay thư mục khác nếu không sửa code. File tôi update có cả ví dụ kết nối dữ liệu Excel với ConnectionString đúng như bạn đã làm.
(Nhấn mạnh thêm chỉ với dữ liệu 32-bit như là với Foxpro mới cần phải dúng thư viện BSDataService32 hay thư viện người khác làm tương đương. Còn với các CSDL hỗ trợ cho cả 32 hay 64-bit thì nên dùng cách làm với ADO ngay trong mã nguồn sẽ nhanh hơn. Tạm thời bạn cứ test với việc không phải lập trình cho chạy đã. Sau muốn mã nguồn kết nối Excel thì mã nguồn tôi gửi tiếp hawocj bạn tìm trên mạng ra ngay nhưng chịu khó làm vài thao tác insert, copy code cho đúng.

Download file ví dụ cùng BSDataService32

ketnoiexcel.gif
 
Lần chỉnh sửa cuối:
Vấn đề kết nối dữ liệu Foxpro chắc bạn đã giải quyết xong và không còn thắc mắc? Còn câu hỏi mới của bạn là kết nối file Excel thì lại càng dễ và tiện vì sẵn được Office hỗ trợ. Bạn làm báo lỗi gì thì gửi thông báo lỗi lên. Cần thiết lắm mới phỉa gửi file Excel nguồn của bạn lên đây (xóa dữ liệu thật đi) tôi hay các bạn trên GPE hỗ trợ. không cần thư viện ngoài mà kết nối từ trong chính Office thôi. Hãy nhớ các vấn đề của bạn đã được nhiều người giải quyết từ nhiều năm nay và nó rất dễ.

Bạn hãy tải lại thư viện và quan trọng là, file Excel ví dụ trong đó tôi đã sửa lại, trong code tôi cập nhật địa chỉ ô chưa câu lệnh SQL và chuỗi ConnectionString. File cũ tôi gửi là câu lệnh cố định nên có thể bạn không ứng dụng được với file hay thư mục khác nếu không sửa code. File tôi update có cả ví dụ kết nối dữ liệu Excel với ConnectionString đúng như bạn đã làm.
(Nhấn mạnh thêm chỉ với dữ liệu 32-bit như là với Foxpro mới cần phải dúng thư viện BSDataService32 hay thư viện người khác làm tương đương. Còn với các CSDL hỗ trợ cho cả 32 hay 64-bit thì nên dùng cách làm với ADO ngay trong mã nguồn sẽ nhanh hơn. Tạm thời bạn cứ test với việc không phải lập trình cho chạy đã. Sau muốn mã nguồn kết nối Excel thì mã nguồn tôi gửi tiếp hawocj bạn tìm trên mạng ra ngay nhưng chịu khó làm vài thao tác insert, copy code cho đúng.

Download file ví dụ cùng BSDataService32


Dữ liệu PDF thì em lấy được rồi, cảm ơn anh Tuân và GPE. Vì xem trong clip ví dụ của anh Tuân với dữ liệu Foxpro trong Excel 365 thì kết quả được trả về ở dạng hàm mảng động mới rất hay.

1645954460121.png

Nhưng em thử với dữ liệu Excel (đã thay connection string) thì không được, chỉ trả về số 0 thôi.
1645954529402.png

Vì Excel không có hàm truy vấn bằng SQL mà chỉ có một vài hàm mảng động như FILTER, nó không toàn diện và năng động như sử dụng truy vấn SQL. Nên nếu cũng làm được hàm truy vấn dữ liệu SQL, lấy dữ liệu Excel, kết quả trả về hàm mảng động như với Foxpro thế thì tuyệt vời.

Em gửi file dữ liệu TEMP em đã test không được để anh có thể check giúp nhé !
 

File đính kèm

  • TEMP.zip
    121.8 KB · Đọc: 5
Dữ liệu PDF thì em lấy được rồi, cảm ơn anh Tuân và GPE. Vì xem trong clip ví dụ của anh Tuân với dữ liệu Foxpro trong Excel 365 thì kết quả được trả về ở dạng hàm mảng động mới rất hay.

View attachment 272517

Nhưng em thử với dữ liệu Excel (đã thay connection string) thì không được, chỉ trả về số 0 thôi.
View attachment 272518

Vì Excel không có hàm truy vấn bằng SQL mà chỉ có một vài hàm mảng động như FILTER, nó không toàn diện và năng động như sử dụng truy vấn SQL. Nên nếu cũng làm được hàm truy vấn dữ liệu SQL, lấy dữ liệu Excel, kết quả trả về hàm mảng động như với Foxpro thế thì tuyệt vời.

Em gửi file dữ liệu TEMP em đã test không được để anh có thể check giúp nhé !
chủ đề này lấy File DBF thì tôi ko quan tâm nữa vì thấy bạn hỏi lấy dữ liệu khác thì tôi giới thiệu cho bạn 1 Thư viện hàm miễn phí và hơn thế nữa nếu tôi thích thêm các chuỗi kết nối khác vào mà FireDAC trên Delphi nó hổ trợ là xong thôi

1/ Vào link sau tải tất cả các File đó về

2/ Copy code sau vào Worksheet
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Next_Error
    Static Fso  As New FileSystemObject
    Dim DbPath As String, SQL As String, HDR As Boolean
    DbPath = Range("B1").Value
    SQL = Range("B2").Value
    HDR = Range("B3").Value
    Rem ==========
    If Not Fso Is Nothing Then Set Fso = New FileSystemObject
    If Fso.FileExists(DbPath) = False Then Exit Sub
    Rem ==========
    If Target.Address = "$B$2" Or Target.Address = "$B$3" Then
        Range("A5:CE65536").ClearContents
        Call GetSQLDataBaseA(DbPath, SQL, [A5], HDR)
    End If
    Exit Sub
Next_Error:
    Rem If Err Then MsgBox Err.Number & vbLf & Err.Description: Err.Clear
End Sub
Rem ==========
Private Sub ComboBox1_Change()
    Range("B2").Value = "select * from " & ComboBox1.Text
End Sub
Rem ==========
Private Sub SelectFile_Click()
    Dim aPath As Variant
    Dim Arr As Variant
    Dim i As Long
    Dim sArr() As String
    aPath = SelectFilesDialogA()
    Range("B1").Value = aPath
    Rem =========
    Arr = ListTableNamesA(aPath)
    sArr = Split(Arr, vbLf)
    ActiveSheet.ComboBox1.Clear
    Rem ========= Cach 2
    For i = LBound(sArr) To UBound(sArr) - 1
       Rem Debug.Print sArr(i)
       ActiveSheet.ComboBox1.AddItem sArr(i)
    Next
End Sub

3/ Vào linhk sau tham khảo thêm cách tổng hợp tất cả các Sheet + TableName trong 1 File lên Sheet

4/ Lấy dữ liệu Ms Server cách sử dụng tương tự
5/ nếu Rảnh tôi sẻ thêm CSDL FoxPro vào nữa ... chức năng tương tự như trên

....
....
Nếu bạn đang sử dụng Office 365 thì mấy hàm công thức Mảng ko thể xóa được của bất cứ ai nên từng bước bỏ đi vì nó nặng và ì ạch lắm

VD: hãy thử lấy 10 Sheet mỗi Sheet có vùng dữ liệu 1048000 dòng x 50 cột là nó chết đơ và thoát ngay lập tức ... ko tin thử xem

Xem video cách sử dụng Hàm
1/ nhấn nút chọn File Excel - Access - SQLtie
2/ nhấn ComboBox1 chọn Sheetname Or TableName
3/ Tùy chỉnh SQL và Tiêu đề ...
Liên kết: https://youtu.be/CKmtYfmUtCw


Thưởng thức Thư viện miễn phí ... và tùy chỉnh phấn phối lại nếu bạn thích $
 
Lần chỉnh sửa cuối:
Vì Excel không có hàm truy vấn bằng SQL mà chỉ có một vài hàm mảng động như FILTER, nó không toàn diện và năng động như sử dụng truy vấn SQL. Nên nếu cũng làm được hàm truy vấn dữ liệu SQL, lấy dữ liệu Excel, kết quả trả về hàm mảng động như với Foxpro thế thì tuyệt vời.

Muốn lấy dữ liệu nguồn từ Excel bằng câu lệnh truy vấn SQL thì chỉ đơn giản dùng ADODB để kết nối và truy vấn thôi.

Screen Shot 2022-02-27 at 23.55.27.png
 

File đính kèm

  • GetData.xlsm
    50.9 KB · Đọc: 14
Ý mình đang đề cập là kết quả truy vấn trả về ở dạng hàm mảng động mới của Excel đời cao ấy (365 or 2021). Tks
 
Ý mình đang đề cập là kết quả truy vấn trả về ở dạng hàm mảng động mới của Excel đời cao ấy (365 or 2021). Tks

Bạn dùng Excel 365 thì tự trả về mảng động mà. Sự khác nhau các CSDL chỉ là ConnectionString trong tham số của hàm GetData().
 
Web KT
Back
Top Bottom