C#
- Importando dados de um arquivo DBF para um DataGridView
Ora, ora e aqui estamos novamente voltando a falar sobre acesso a arquivos DBF.
Nota: Arquivos DBF -
Wikipedia (http://pt.wikipedia.org/wiki/Dbase) Um dos maiores legados do dBase é seu formato de arquivo .dbf, que foi amplamente adotado. O famoso padrão Xbase. O termo XBase é frequentemente utilizado para esse grupo de aplicações. O sistema de banco de dados dBase foi um dos primeiros a prover uma seção de cabeçalho (header) para descrever a estrutura dos dados dentro do arquivo. Isso significa que o programa não mais necessitava conhecimento avançado da estrutura de dados, mas poderia perguntar diretamente ao arquivo de dados como este estava estruturado. |
Mas afinal existe alguém na face da terra que ainda usa arquivos DBF ?
Existe e não são poucos.
A resposta pode ser surpreendente e os motivos também mas vamos deixar essa discussão de lado e passar para a parte prática.
Nota: Uma vez visitei um cliente que possui todos os dados do seu negócio em arquivos .dbf (algo em torno de 150.000 registros. Isso é que eu chama de viver perigosamente...)
Um belo dia , em pleno século XXI, por um capricho da profissão, você precisa tratar com arquivos DBF.
E agora , por onde começar ???
Bem , você poderia usar o DBase, FoxPro , um utilitário de terceiros, etc., etc.
Para acessar arquivos DBF usando Visual Basic 6 ou ASP veja os meus artigos : |
Mas você precisa fazer isso usando C# e ponto final.
Acessando arquivos DBF com C#
Abra o Visual C# 2010 Express Edition e crie um novo projeto Windows Forms Application com o nome acessandoDBF;
No formulário form1.cs inclua um controle DataGridView, um controle Label, um controle TextBox e um controle Button conforme o leiaute abaixo:
![]() |
![]() |
Finalmente inclua o seguinte código no formulário:
using System; using System.Data; using System.Windows.Forms; using System.Data.Odbc; using System.IO; namespace ImportarDBF { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public static string SelectedTable = string.Empty; private void button1_Click(object sender, EventArgs e) { OpenFileDialog fdlg = new OpenFileDialog(); fdlg.Title = "Selecione o arquivo"; fdlg.InitialDirectory = @"c:\"; fdlg.FileName = txtNomeArquivo.Text; fdlg.Filter = "DBF Files(*.dbf)|*.dbf|All Files(*.*)|*.*"; fdlg.FilterIndex = 1; fdlg.RestoreDirectory = true; if (fdlg.ShowDialog() == DialogResult.OK) { txtNomeArquivo.Text = fdlg.FileName; Importar(); Application.DoEvents(); } } private void Importar() { if (txtNomeArquivo.Text.Trim() != string.Empty) { try { DataTable dt = GetDataTableDBF(txtNomeArquivo.Text); gdvDados.DataSource = dt.DefaultView; } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } } public static DataTable GetDataTableDBF(string strFileName) { OdbcConnection conn = new OdbcConnection("Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" + _ Path.GetFullPath(strFileName).Replace(Path.GetFileName(strFileName), "") + ";Exclusive=No"); conn.Open(); string strConsulta = "SELECT * FROM [" + Path.GetFileName(strFileName) + "]"; OdbcDataAdapter adapter = new OdbcDataAdapter(strConsulta, conn); System.Data.DataSet ds = new System.Data.DataSet(); adapter.Fill(ds); return ds.Tables[0]; } } } |
Agora é só alegria, basta selecionar o arquivo FoxPro padrão Dbase e importar para o DataGridView.
Pegue o projeto completo aqui :
Importar_DBF.zip
João 7:37
Ora, no seu último dia, o grande dia da festa, Jesus pôs-se em pé e clamou, dizendo: Se alguém tem sede, venha a mim e beba.Referências: