Link một bảng *.dbf vào Access

  • Thread starter Đào Việt Cường
  • Ngày gửi
Đào Việt Cường

Đào Việt Cường

Moderator
22/11/05
400
4
18
Khánh Hòa
Dear all,
--------
Tôi có một thắc mắc nhỏ xin được chỉ dẫn:
MS Access (MSA) có khả năng liên kết một bảng tính trên Excel và làm việc với nó như một Data table.
Thắc mắc của tôi là:
- Liệu có thể làm được như thế đối với một *.dbf (bảng cơ sở dữ liệu Foxpro)?
- Để thực hiện được thì cần cải đặt bổ sung OLE DB provider nào?
Nói thêm:
- Trong MS Excel tôi thấy OLE DB provider for visual foxpro nhưng trong MSA không thấy provider này
- Nếu sử dụng VBA, chúng ta có thể truy cập thông qua đối tượng Recodeset, nhưng đó là "visual table" chỉ dành riêng cho người lập trình. Theo tính chất công việc, tôi muốn có một bảng tương tự như một link table từ MS Excel có được không?
Rất mong mọi người giúp đỡ!
 
Khóa học Quản trị dòng tiền
hai2hai

hai2hai

VNUNI Makes a difference
29/4/04
2,032
125
63
50
Hà nội
vnuni.net
Chắc là phải có Visual Foxpro ODBC Driver
Bạn thử vào http://msdn.microsoft.com/vfoxpro/downloads
Sau đó bạn chọn Product Updates, rồi chọn Visual FoxPro ODBC Driver để update VFP ODBC Driver.

Sau đó, bạn có thể tạo ra 1 User Data Sources và từ Access có thể link với data source đó.

Cường thử làm nhé.

P/S:
1 chút về Connection String liên quan đến Visual Foxpro (Tuy là 1 chút nhưng nói chung là chẳng còn cái gì khác nữa đâu)

ODBC Driver For Visual FoxPro

With a database container:
oConn.Open "Driver={Microsoft Visual FoxPro Driver};" & _
"SourceType=DBC;" & _
"SourceDB=c:\somepath\mySourceDb.dbc;" & _
"Exclusive=No;"


Without a database container (Free Table Directory):
oConn.Open "Driver={Microsoft Visual FoxPro Driver};" & _
"SourceType=DBF;" & _
"SourceDB=c:\somepath\mySourceDbFolder;" & _
"Exclusive=No;"

For more information, see: Visual FoxPro ODBC Driver and Q165492

OLE DB Provider For Visual FoxPro

oConn.Open "Provider=vfpoledb;" & _
"Data Source=.\MyDB.dbc;"

For more information, see: Microsoft OLE DB Provider for Visual FoxPro

Hope that helps!
 
Sửa lần cuối:
paulsteigel

paulsteigel

Trung cấp
13/11/05
103
0
16
48
Hoà Bình
www.sfdp.net
Bạn Cường thân!
Bạn có thể làm thế với bảng dbf của Foxpro, tuy nhiên phải dùng đến ODBC mất rồi.
Nếu bạn đã biết cách dùng VBA để tạo Link thì đây là kết nối đến một bảng dbf của Foxpro trong thuộc tính Connect của bảng liên kết.

ODBC;DSN=Visual FoxPro Tables;SourceDB=d:\Documents and Settings\Paulsteigel\Desktop\Gfa\Db;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;

Nhưng, có điểm là bạn không thế sửa đổi dữ liệu dbf được mà chỉ có thể đọc được mà thôi với dạng kết nối như trên trong access.
Để ghi được thì hiện tại tôi chưa tìm được cách hợp lý. Tôi sẽ trả lời sau khi nghiên cứu xong ... hihi
Thông thường, tôi chỉ dùng cách thế này để làm việc với bảng Fox, rất ít khi làm việc với Link....
Public Sub OpenFoxProTable()

Dim dbsFox As Database
Dim rstAccounts As Recordset

' Open an external FoxPro database.
Set dbsFox = OpenDatabase ("\\FoxPro\Data\AP", False, False, "FoxPro 2.0;")

' Create a Recordset object from
' the Accounts table.
Set rstAccounts = dbsFox.OpenRecordset("Accounts")
End Sub
 
Sửa lần cuối:
Đào Việt Cường

Đào Việt Cường

Moderator
22/11/05
400
4
18
Khánh Hòa
Dear... hai bác!
---------------
Cám ơn hai bác đã chỉ dẫn. Vậy là bắt buộc phải sử dụng recodeset à? Làm như thế thì không đáp ứng được nhu cầu mất rồi... Em đã thử cài vfpoledb.exe nhưng có lỗi cài đặt (!?). Có bác nào đã cài được provider này thì hướng dẫn em nhé? Tạm thời chắc là đành phải "soạn thảo" vậy!:0frown:
Cám ơn các bác nhiều nhé!
 
M

mysterious_girl

Guest
Sao toàn các mod trao đổi với nhau thế nhỉ? các mems còn chờ gì nữa mà không gửi câu hỏi? Box access đã được lập theo yêu cầu của các mems thế mà ko thấy đưa câu hỏi lên nhỉ????
 
hai2hai

hai2hai

VNUNI Makes a difference
29/4/04
2,032
125
63
50
Hà nội
vnuni.net
Phải có Visual Foxpro ODBC Driver
Bạn thử vào http://msdn.microsoft.com/vfoxpro/downloads
Sau đó bạn chọn Product Updates, rồi chọn Visual FoxPro ODBC Driver để update VFP ODBC Driver.

Sau đó, bạn có thể tạo ra 1 User Data Sources và từ Access có thể link với data source đó.
 
Đào Việt Cường

Đào Việt Cường

Moderator
22/11/05
400
4
18
Khánh Hòa
Xin được hỗ trợ chi tiết cài đặt Visual FoxPro ODBC Driver

hai2hai nói:
Phải có Visual Foxpro ODBC Driver
Bạn thử vào http://msdn.microsoft.com/vfoxpro/downloads
Sau đó bạn chọn Product Updates, rồi chọn Visual FoxPro ODBC Driver để update VFP ODBC Driver.

Dear hai2hai,
------------
Cám ơn bác, có thể làm được nếu cài Visual FoxPro ODBC Driver hả bác? Em đã download "vfpoledb.exe" và cài nhưng bị báo lỗi, đại loại là "The Windows Installer Service could not be accessed..." (tiện thể hỏi các bác cách post hình của message box này để các bác thấy thì làm thế nào nhỉ?!)
Em chưa hiểu lỗi do nguồn hay do hệ thống, bác giúp em với nhé!
 
M

mysterious_girl

Guest
Đào Việt Cường nói:
tiện thể hỏi các bác cách post hình của message box này để các bác thấy thì làm thế nào nhỉ?!
Theo em nghĩ bây giờ anh đã là mod thì chắc có quyền gửi kèm file. Anh nhìn xuống phía dưới xem anh có quyền gửi kem file ko?Nếu có thì anh tham khảo ở đây .
Nếu không thì anh hỏi các admin, mod thử xem.
 
hai2hai

hai2hai

VNUNI Makes a difference
29/4/04
2,032
125
63
50
Hà nội
vnuni.net
Đào Việt Cường nói:
Dear hai2hai,
------------
Cám ơn bác, có thể làm được nếu cài Visual FoxPro ODBC Driver hả bác? Em đã download "vfpoledb.exe" và cài nhưng bị báo lỗi, đại loại là "The Windows Installer Service could not be accessed..." (tiện thể hỏi các bác cách post hình của message box này để các bác thấy thì làm thế nào nhỉ?!)
Em chưa hiểu lỗi do nguồn hay do hệ thống, bác giúp em với nhé!

Re 1 - Cài gì?: Download ODBC Driver, Not OLEDB Driver

Re 2 - Lỗi chạy vfpoledb.exe: Có thể do download file này bị lỗi. Tốt nhất thử dùng 1 phần mềm download như Flashget để down.

Re 3 - Post hình: Muốn copy current window (msgbox cũng là 1 window) thì bấm Alt + PrtScr, còn muốn chụp cả màn hình thì chỉ bấm PrtScr thôi

Sau đó, vào ms paint past và save lại dưới dạng jpg hay gif cho nhỏ. Rồi upload lên đâu đó và dùng thẻ để hiển thị ảnh trên wkt.

Hope that helps!
 
Sửa lần cuối:
W

workman

Guest
22/7/05
372
2
0
51
Ho Chi Minh
Đào Việt Cường nói:
Dear all,
--------
Tôi có một thắc mắc nhỏ xin được chỉ dẫn:
MS Access (MSA) có khả năng liên kết một bảng tính trên Excel và làm việc với nó như một Data table.
Thắc mắc của tôi là:
- Liệu có thể làm được như thế đối với một *.dbf (bảng cơ sở dữ liệu Foxpro)?
- Để thực hiện được thì cần cải đặt bổ sung OLE DB provider nào?
Nói thêm:
- Trong MS Excel tôi thấy OLE DB provider for visual foxpro nhưng trong MSA không thấy provider này
- Nếu sử dụng VBA, chúng ta có thể truy cập thông qua đối tượng Recodeset, nhưng đó là "visual table" chỉ dành riêng cho người lập trình. Theo tính chất công việc, tôi muốn có một bảng tương tự như một link table từ MS Excel có được không?
Rất mong mọi người giúp đỡ!

Cường này,

Ý kiến của dân không chuyên nhé. Tôi rất hay link các bảng vào Access. Thường có hai loại:

1. Nếu database trên SQL, ta dùng ODBC
2. Nếu là DBF, trong Access đã có sẵn công cụ. Bạn không cần cài đặt ODBC đâu.

Tôi link DBF như thế này: vào New Table/Link Table. Trong cửa số Link, mục File Type bạn chọn "dBase III". Thế là xong.

Xử lý cũng như đối với một table bình thường thôi. Edit và thêm dòng thoải mái, không có giới hạn gì cả.

Tôi cũng chưa hiểu tại sao bạn paul lại không edit được dữ liệu. Về nguyên tắc cách của bạn cũng tương tự như cách của tôi, chỉ khác là dùng VBA thôi.
 
Đào Việt Cường

Đào Việt Cường

Moderator
22/11/05
400
4
18
Khánh Hòa
Vẫn chưa được... Xin chỉ dẫn thêm lần nữa!

workman nói:
Cường này,
Tôi link DBF như thế này: vào New Table/Link Table. Trong cửa số Link, mục File Type bạn chọn "dBase III". Thế là xong.
Dear WorkMan
-------------
Cám ơn WorkMan đã đưa ra hướng đáp ứng được yêu cầu. Tôi rất mừng và thử ngay... nhưng mà không được (?!). Tôi chưa hiểu lắm về dBase nhưng thấy *.dbf nên cũng đoán là for Visual Foxpro. Trước khi đưa ra thắc mắc này tôi đã thử rất nhiều lần, và cho đến cả sau khi WorkMan chỉ dẫn tôi thử lại vẫn chỉ nhận được thông báo "External table is not in the expected format". Liệu có thể nào *.dbf của tôi là một table "đểu" mà NSX đánh lừa kẻ tọc mạch như tôi không nhỉ(!?). Làm thế nào để biết đó là một *.dbf đích thực? (Tôi đã dùng lệnh Brow và và modify bảng này bình thường, import vào excel cũng được nên đoán chắc nó vẫn là đồ "sịn")
Vui lòng chỉ dẫn giúp, và phải làm như thế nào để "êm" như WorkMan?
Thanks
 
Sửa lần cuối:
W

workman

Guest
22/7/05
372
2
0
51
Ho Chi Minh
Đào Việt Cường nói:
Dear WorkMan
-------------
Cám ơn WorkMan đã đưa ra hướng đáp ứng được yêu cầu. Tôi rất mừng và thử ngay... nhưng mà không được (?!). Tôi chưa hiểu lắm về dBase nhưng thấy *.dbf nên cũng đoán là for Visual Foxpro. Trước khi đưa ra thắc mắc này tôi đã thử rất nhiều lần, và cho đến cả sau khi WorkMan chỉ dẫn tôi thử lại vẫn chỉ nhận được thông báo "External table is not in the expected format". Liệu có thể nào *.dbf của tôi là một table "đểu" mà NSX đánh lừa kẻ tọc mạch như tôi không nhỉ(!?). Làm thế nào để biết đó là một *.dbf đích thực? (Tôi đã dùng lệnh Brow và và modify bảng này bình thường, import vào excel cũng được nên đoán chắc nó vẫn là đồ "sịn")
Vui lòng chỉ dẫn giúp, và phải làm như thế nào để "êm" như WorkMan?
Thanks
To Cường

Tôi giả định là bạn đã thấy DBase III trong danh sách "File Type". Thế thì hơi lạ. Nếu bạn không ngại thì gửi cho tôi cái dbf của bạn (đương nhiên đã delete bớt dòng và xóa những dữ liệu nhạy cảm) vào email workmanvn@gmail.com. Tôi phải xem cụ thể mới trả lời được.
 
paulsteigel

paulsteigel

Trung cấp
13/11/05
103
0
16
48
Hoà Bình
www.sfdp.net
Tôi xin trả lời thế này vậy!
Về nguyên tắc thì có thể cho phép thành lập một link kiểu đó vào Access và bạn có thể sửa chữa được dữ liệu. Tuy nhiên, chúng ta cần hiểu một vấn đề như thế này:
Tập tin dbf là tập tin dữ liệu của Dbase, foxbase Foxpro .. và để tôn trọng khả năng độc lập phát triển thì MS Access có vẻ như không được thiết kế khả năng sửa chữa các bảng dữ liệu liên kết đến các cơ sở dữ liệu khác không phải mdb một cách trực tiếp. Tất nhiên bạn có thể thấy rõ nếu bạn cũng làm liên kết từ access đến Excel.
Ban cung co the cai Borland Database Engine tai day de lien ket voi dbase nhe
http://info.borland.com/devsupport/bde/bdeupdate.html
Mot so noi dung cua Linking trong access cung co the tim thay o day
http://msdn.microsoft.com/library/d...DataSourcesMicrosoftAccessCanImportOrLink.asp
Tuy nhiên, bạn cũng có thể sửa chữa nếu không dùng tính năng liên kết của Access. Đoạn mã kết nối mà tôi đăng trước đây là đoạn mã nằm trong thuộc tính Connect của liên kết chứ không phải là đoạn mã kết nối của VBA. Thủ tục mà tôi gửi ở cuối chính là một cách để bạn làm việc với dữ liệu dbf trong VB nói chung và ở đó bạn hoàn toàn có thể sửa chữa bản ghi.
Tôi đề xuất một cách mà nhiều người vẫn làm là tạo một liên kết để thực thi các lệnh truy vấn đọc vào một bảng có cấu trúc giống hệt trong access.
Sau khi hoàn tất thao tác thì mở file dbf bằng VB và cập nhật nội dung từ bảng vừa rồi của bạn. Như thế dbengine sẽ đảm bảo được tính nhất quán của dữ liệu.
XIn cảm ơn.
 
Sửa lần cuối:

Xem nhiều

Webketoan Zalo OA