Desenvolvimento - C#
Gerando arquivo .dbf a partir de um Dataset
Recentemente no trabalho me deparei com a tarefa de extrair os dados de um Dataset e gerar um arquivo *.dbf. Pesquisei bastante uma forma de executar esta tarefa, mas nenhuma foi satisfatória, então baseado em todo material que...
por Thiago CavalcanteResumo
Recentemente no trabalho me deparei com a tarefa de extrair os dados de um Dataset e gerar um arquivo *.dbf. Pesquisei bastante uma forma de executar esta tarefa, mas nenhuma foi satisfatória, então baseado em todo material que encontrei consegui executar a tarefa e resolvi postar sobre o assunto, como senti bastante dificuldades de encontrar material que sanasse todas as dúvidas e fosse mais objetivo, resolvi abordar esse assunto. Para ajudar na compreensão do assunto criei um aplicação WPF que recebe alguns dados de textboxes, monta o Dataset, cria o arquivo *.dbf e insere os valores do Dataset.>
Este artigo aplica-se aos seguintes produtos e tecnologias:
<Visual Studio 2005/2008/2010>
<C# .Net>
<Microsoft Visual FoxPro>
<WPF>
<Dataset >
Introdução
Recentemente no trabalho me deparei com a tarefa de extrair os dados de um Dataset e gerar um arquivo *.dbf. Pesquisei bastante uma forma de executar esta tarefa, mas nenhuma foi satisfatória, então baseado em todo material que encontrei consegui executar a tarefa e resolvi postar sobre o assunto, como senti bastante dificuldades de encontrar material que sanasse todas as dúvidas e fosse mais objetivo, resolvi abordar esse assunto. Para ajudar na compreensão do assunto criei um aplicação WPF que recebe alguns dados de textboxes, monta o Dataset, cria o arquivo *.dbf e insere os valores do Dataset.
De onde vem essa extensão *.dbf ?
Tem sua origem no
dBASE o primeiro SGBD largamente utilizado industrialmente, pelo Apple II,
Apple Macintosh e PC’s IBM para DOS, onde se tornou um dos softwares mais
vendidos durante alguns anos. A partir de meados dos anos oitenta, muitas
outras companhias produziram seus próprios "dialetos" ou variações do
produto e da linguagem. Entre esses, estão: FoxPro (atual Microsoft
Visual FoxPro), Arago, Force, Recital, dbFast, dbXL, QuickSilver, Clipper,
xBase++, FlagShip e Harbour.
O formato de arquivo do dBase, o DBF, é muito usado por diversos aplicativos
que precisam somente de um formato para armazenar seus dados estruturadamente.
Fonte: http://pt.wikipedia.org/wiki/DBase.
Criando e Preparando o Projeto WPF
Primeiro abriremos o Visual Studio 2010, criar novo projeto e colocar o nome do projeto, conforme a figura 01:
Figura 01 – Criando projeto WPF no Visual Studio 2010.
Após criar o projeto temos que adicionar uma referência ao projeto, clique com o botão direito na pasta References e depois em Add Reference, depois vá na aba COM e selecione “Microsoft ADO Ext. 2.8 for DDL and Security”, e clique em OK conforme figuras 02 e 03:
Figura 02 – Abrindo a janela de referências .
Figura 03 – Selecionando a referência “Microsoft ADO Ext. 2.8 for DDL and
Security”, na aba COM .
Agora vamos adicionar alguns componentes ao projeto, no modo design adicione três Labels, duas Textboxes, um Combobox, e um Botão, conforme figura 04:
Figura 04 – Adicionando componentes da toolbox ao projeto GeraDBF.
Codificando o método para criação do Dataset
Após esse passos vamos a parte mais divertida, a codificação. Clique em qualquer área do formulário e aperte F7, para ir ao codebehind. Agora criaremos o método que cria o Dataset, e faz as devidas validações para a chamada do método que cria o arquivo *.dbf, conforme a Listagem 01:
1: public DataSet datasetexample() 2: { 3: //Instanciando os objetos Dataset e Datatable para receber os valores do formulário 4: DataSet ds = new DataSet(); 5: DataTable dt = new DataTable(); 6: 7: //Setando o nome da tabela 8: dt.TableName = "Arquivo"; 9: DataColumn col; 10: 11: //Criando as colunas 12: col = new DataColumn(); 13: col.DataType = Type.GetType("System.Int32"); 14: col.ColumnName = "Id"; 15: 16: dt.Columns.Add(col); 17: 18: col = new DataColumn(); 19: col.DataType = Type.GetType("System.String"); 20: 21: col.ColumnName = "Name"; 22: dt.Columns.Add(col); 23: 24: col = new DataColumn(); 25: col.DataType = Type.GetType("System.String"); 26: 27: col.ColumnName = "Sexo"; 28: dt.Columns.Add(col); 29: 30: //Criando e atribuindo os valores as linhas 31: DataRow row; 32: row = dt.NewRow(); 33: 34: row["Id"] = int.Parse(txtId.Text); 35: row["Name"] = txtName.Text; 36: row["Sexo"] = cbbSexo.SelectedValue.ToString().Substring(37,9); 37: row = dt.NewRow(); 38: 39: dt.Rows.Add(row); 40: 41: //Adicionando a tabela ao Dataset 42: ds.Tables.Add("Arquivo"); 43: 44: /* Efetuando checagem para criação do diretório 45: onde será salvo o arquivo *.dbf */ 46: if (!(Directory.Exists("c:\\GeraDBF"))) 47: { 48: Directory.CreateDirectory("c:\\GeraDBF"); 49: } 50: 51: /* Checando a existência do arquivo *.dbf 52: e exibindo validação para substituição do arquivo. */ 53: if (File.Exists("c:\\GeraDBF\\Arquivo.dbf")) 54: { 55: MessageBoxResult result = MessageBox.Show("Você deseja realmente apagar o arquivo?", "GeraDBF", 56: MessageBoxButton.YesNo, 57: MessageBoxImage.Question); 58: 59: if (result.Equals(MessageBoxResult.Yes)) 60: { 61: //Deleta o arquivo se a opção for sim 62: File.Delete("c:\\GeraDBF\\Arquivo.dbf"); 63: 64: //Chama o método que cria o arquivo *.dbf e o preencha com o Dataset 65: criarDBF(ds); 66: } 67: 68: 69: } 70: else 71: { 72: //Chama o método que cria o arquivo *.dbf e o preencha com o Dataset 73: criarDBF(ds); 74: } 75: 76: return ds; 77: } Listagem 01 – Criando o método do tipo Dataset para validar e preencher o Dataset |
Codificando o método para criação do arquivo *.dbf e preencher com o Dataset
Criado o método datasetexample(), agora iremos criar o método criarDBF(), que gera o arquivo *.dbf e o preenche com o Dataset, conforme Listagem 02:
1: public DataSet criarDBF(DataSet ds) 2: { 3: //Seta as configurações de conexão OLEDB e o caminho do arquivo dbf, e abre a conexão 4: OleDbConnection oConn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\\GeraDBF;Extended Properties=dBase III"); 5: oConn.Open(); 6: 7: //dDfine o comando de criação 8: OleDbCommand cmd = new OleDbCommand(" CREATE TABLE Arquivo (Id INTEGER, Name VARCHAR(16), Sexo VARCHAR(16))"); 9: 10: cmd.Connection = oConn; 11: 12: //Execute o comando de criação para criar a tabela vazia 13: cmd.ExecuteNonQuery(); 14: 15: //Adapter para pegar a base de dados vazia 16: OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM Arquivo", oConn); 17: 18: //Atualiza a base de dados vazia com o Dataset, e fecha a conexão 19: da.Update(ds, "Arquivo"); 20: 21: oConn.Close(); 22: 23: return ds; 24: } Listagem 02 – Criando o método do tipo Dataset para criar o arquivo *.dbf e preencher arquivo *.dbf com o Dataset. |
Criando chamada do método para gerar arquivo *.dbf no botão
Agora volte ao modo design e dê dois cliques no botão, e chame o método datasetexample(), no evento on_click do botão, conforme Listagem 03:
1: private void btnGerarDbf_Click(object sender, RoutedEventArgs e) 2: { 3: datasetexample(); 4: } Listagem 03 – Chamando o método datasetexample(), no evento on_click do botão |
Conclusão
Pronto, agora é só rodar o projeto e testar. Qualquer dúvida
é só entrar em contato.
Segue abaixo link para download da solução para Visual Studio 2010, criada
nesse post.
Download da solução: http://bit.ly/gOeZj5