Sorry, ko cố ý spam nhưng mà ko biết file dbf là do chương trình nào tạo ra :P
Chỉ biết mdf do SQL Server tạo ra và mdb do Access tạo ra. Kiến thức CSDL còn hạn chế, dbf có phải do Oracle tạo ra ko vậy?
Em có hàm đọc header của file DBF sau đây, nhưng ko biết làm sao để lấy được nội dung của nó bỏ vào datagrid. Em cũng chỉ mới bắt đầu làm quen với C# thôi. Mong được giúp đỡ.
Code://Input: tên file DBF public void ReadFileDBF(string filename) { // Mở file DBF System.IO.FileStream filestream = new System.IO.FileStream(filename, System.IO.FileMode.Open, System.IO.FileAccess.Read); System.IO.BinaryReader bReader = new System.IO.BinaryReader(filestream); // Chỉ định vị trí bắt đầu đọc dữ liệu từ stream bReader.BaseStream.Position = 0; // Đọc dữ liệu vào buffer tạm và phân tích thành các thành phần trong CMainHeader byte[] buffer = new byte[32]; bReader.Read(buffer, 0, 32); header = new CMainHeader(buffer); // Tính số field, đọc dữ liệu vào buffer tạm và phân tích thành các thành phần trong CFieldHeader int nField = (header.header_length - 1) / 32 - 1; field_header = new CFieldHeader[nField]; for (int i = 0; i < nField; i++) { bReader.Read(buffer, 0, 32); field_header[i] = new CFieldHeader(buffer); } // Đóng file DBF bReader.Close(); filestream.Close(); }
-----------------------------------------------------------------------
Đề nghị bạn để code vào trong thẻ [code]. Lần sau sẽ xóa. nhc1987.
Đã được chỉnh sửa lần cuối bởi nhc1987 : 11-01-2008 lúc 08:49 PM.
Sorry, ko cố ý spam nhưng mà ko biết file dbf là do chương trình nào tạo ra :P
Chỉ biết mdf do SQL Server tạo ra và mdb do Access tạo ra. Kiến thức CSDL còn hạn chế, dbf có phải do Oracle tạo ra ko vậy?
DBF === Database FoxPro.
Về cái FoxPro, nói thật Dr chưa hề sờ mó tới, thậm chí còn không có cài nó.
Theo Dr nghĩ thì bạn có thể sử dụng Jet OLEDB Provider và dBase ISAM driver để làm việc này đó.
Dựa vào tư tưởng đó bạn có thể tìm ra ngay được một bài viết rất rõ ràng về nó ở trên Microsoft nè:
http://forums.microsoft.com/MSDN/Sho...09324&SiteID=1
Chúc thành công!
Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó.Email: kevin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
Phone: 0972 89 7667
Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp hoặc bị sự thiếu kỷ luật làm tiêu tan sự nghiệp.
DBF đúng là file CSDL FoxPro. Hoàn toàn có thể đọc nó bằng các stream như bình thường (cấu trúc header được public)
Cái DBF này đã có làm qua hồi lúc năm 2, viết chương trình convert từ DBF sang XML.
Keep moving forward!
... Retired ...
Có thể dùng ADO hoặc ADO.NET để truy cập DBF file
Xem chi tiếtCode:Dim cnn As New ADODB.Connection Dim rs As New ADODB.Recordset 'Open folder where dBase files are located cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=E:\My Documents\dBase;Extended Properties=dBase 5.0;" rs.Open "Select * from MyDBase.dbf", cnn, adOpenStatic, adLockBatchOptimistic
http://caulacbovb.com/forum/viewtopi...97&hilit=DBASE
Sorry ! đây là mã C# dùng ADO.NET, giả sử file DBF đặt ở ổ d:\ ví dụ d:\Table1.DBF
Lưu ý chuối connection nhé , tên DBF không có trong connection mà chỉ có thư mục cha thôi.
Cho dù cấu trúc DBF đã được public những ko có nghĩa là chúng ta phải viết code view lai ,tận dụng ado chỉ mất vài dòng code.
Code:System.Data.OleDb.OleDbConnection cn= new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\;Extended Properties=dBase 5.0"); System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM Table1", cn); System.Data.DataTable dt =new System.Data.DataTable () ; da.Fill (dt); this.dataGridView1.DataSource = dt;
Đã được chỉnh sửa lần cuối bởi Haipt : 12-01-2008 lúc 08:53 AM.
Vấn đề ở đây là có thể đây là bài tập về Cấu trúc dữ liệu, mà khi đó thì làm gì cho xài ADO.net
Keep moving forward!
... Retired ...
Hơ hơ, đây đâu phải box cấu trúc dữ liệu và giải thuật đâu
Trong các post trả lời thì post nào sát yêu cầu tác giả nhất nào!
Sau này nếu có ai hỏi cách đọc file MDB rùi lưu vào DATAGRID không lẽ em cũng giả định là không được sài ADO sao
nhc1987 thích tự coding hết tất cả nhỉ, ko cần dùng hỗ trợ à? Ko phải tự dưng mà người ta viết ra mấy cái hỗ trợ ấy đâu. Đừng nghĩ code ko dựa vào hint, ko dựa vào hỗ trợ là pro. Cũng đừng nghĩ có hint thì sẽ làm mai một kỹ năng code. Máy cũng tự động code được, cái chính là mình biết tận dụng công nghệ phục vụ cho việc làm của mình. Làm việc bằng cái đầu vẫn thích hơn là làm việc bằng tay.
Em nghĩ nếu dùng hỗ trợ thì cũng phải biết hỗ trợ làm sao mà được (Thuật toán ) , mình làm lại có được không ? . Xai như thế mới hiệu quả