Quay lại   Cộng đồng C Việt > LẬP TRÌNH VISUAL C# > Thắc mắc lập trình C#

Trả lời
 
Các công cụ đề tài Các chế độ hiển thị
  #1  
Cũ 11-01-2008, 08:22 PM
Avatar của Haden
Haden Haden là offline
Thành viên mới
 
Ngày gia nhập: 01 2008
Bài viết: 2
Mặc định

Cách đọc nội dung file DBF


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.
Trả lời cùng với trích dẫn
  #2  
Cũ 11-01-2008, 11:10 PM
Avatar của huynguyen
huynguyen huynguyen là offline
Thành viên nhiệt tình
 
Ngày gia nhập: 11 2006
Bài viết: 633
Mặc định

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?
__________________
Trả lời cùng với trích dẫn
  #3  
Cũ 11-01-2008, 11:18 PM
Avatar của Kevin Hoang
Kevin Hoang Kevin Hoang bây giờ đang online
Founder & Administrator
 
Ngày gia nhập: 07 2006
Nơi ở: Hà Nội
Bài viết: 2,385
Mặc định

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!
__________________
Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
Phone: 0972 89 7667 (Office: 04 667 00248)
Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

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 đó. 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!
Trả lời cùng với trích dẫn
  #4  
Cũ 11-01-2008, 11:26 PM
Avatar của nhc1987
nhc1987 nhc1987 là offline
XCoworker Member
 
Ngày gia nhập: 10 2007
Nơi ở: HCMUNS
Bài viết: 460
Mặc định

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 ...
Trả lời cùng với trích dẫn
  #5  
Cũ 12-01-2008, 08:33 AM
Avatar của Haipt
Haipt Haipt là offline
VIP Member
 
Ngày gia nhập: 06 2007
Nơi ở: Hà Nội
Bài viết: 255
Mặc định

Có thể dùng ADO hoặc ADO.NET để truy cập DBF file
Code:
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
Xem chi tiết
http://caulacbovb.com/forum/viewtopi...97&hilit=DBASE
Trả lời cùng với trích dẫn
  #6  
Cũ 12-01-2008, 08:48 AM
Avatar của Haipt
Haipt Haipt là offline
VIP Member
 
Ngày gia nhập: 06 2007
Nơi ở: Hà Nội
Bài viết: 255
Mặc định

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.
Trả lời cùng với trích dẫn
  #7  
Cũ 12-01-2008, 12:10 PM
Avatar của nhc1987
nhc1987 nhc1987 là offline
XCoworker Member
 
Ngày gia nhập: 10 2007
Nơi ở: HCMUNS
Bài viết: 460
Mặc định

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 ...
Trả lời cùng với trích dẫn
  #8  
Cũ 12-01-2008, 02:19 PM
Avatar của Haipt
Haipt Haipt là offline
VIP Member
 
Ngày gia nhập: 06 2007
Nơi ở: Hà Nội
Bài viết: 255
Mặc định

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
Trả lời cùng với trích dẫn
  #9  
Cũ 12-01-2008, 04:04 PM
Avatar của huynguyen
huynguyen huynguyen là offline
Thành viên nhiệt tình
 
Ngày gia nhập: 11 2006
Bài viết: 633
Mặc định

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.
__________________
Trả lời cùng với trích dẫn
  #10  
Cũ 12-01-2008, 07:57 PM
Avatar của ThanhDN
ThanhDN ThanhDN là offline
Thành viên chính thức
 
Ngày gia nhập: 06 2007
Nơi ở: Đà Nẵng
Bài viết: 41
Mặc định

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ả
Trả lời cùng với trích dẫn
Trả lời
Google
 

Bookmarks

Các công cụ đề tài
Các chế độ hiển thị

Các nguyên tắc gửi bài
Bạn không thể gửi đề tài mới
Bạn không thể gửi bài trả lời
Bạn không thể gửi các đính kèm
Bạn không thể chỉnh sửa bài viết của bạn

[IMG] code: On
HTML code: Off

Nhảy tới diễn đàn

Các đề tài tương tự
Đề tài Người bắt đầu đề tài Diễn đàn Các trả lời Bài viết cuối
ADO.NET Đọc tên file và nội dung file Excel? lucas_it Thắc mắc lập trình C# 0 31-05-2011 11:25 AM
Thay đổi Icon của file phụ thuộc nội dung của file? nam_dkn Thắc mắc lập trình C# 0 14-12-2010 04:45 PM
Bài tập C Tìm dung lượng file kass Thắc mắc lập trình C/C++/C++0x 11 06-07-2010 01:20 AM
Đọc file text? Đọc file dung lượng lớn? Lỗi lưu kết quả khi đọc nhiều lần? totoise Thắc mắc lập trình C/C++/C++0x 6 19-04-2009 08:21 PM


Toàn bộ thời gian tính theo múi GMT +7. Bây giờ là 11:19 AM.