Newsletter
Nome:
E-mail:

Artigos

| TI24x7 Cursos Online

Gerando arquivo *.dbf a partir de um Dataset

31/03/2011

Gerando arquivo .dbf a partir de um Dataset.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 encontrei, conseguir 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.
Agora 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

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.

Primeiro abriremos o Visual Studio 2010, criar novo projeto e colocar o nome do projeto, conforme a figura 01:
geradbf01.jpg
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 AddReference, 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:

geradbf02.jpg
Figura 02 - Abrindo a janela de referências .

geradbf03.jpg
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.

geradbf04.jpg

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:
publicDataSetdatasetexample()
{
//Instanciando os objetos Dataset e Datatable para receber os valores do formulário
DataSet ds = new DataSet();
DataTable dt = new DataTable();

//Setando o nome da tabela
dt.TableName = "Arquivo";
DataColumncol;

//Criando as colunas
col = newDataColumn();
col.DataType = Type.GetType("System.Int32");
col.ColumnName = "Id";

 dt.Columns.Add(col);

 col = new DataColumn();
col.DataType = Type.GetType("System.String");

    col.ColumnName = "Name";
dt.Columns.Add(col);

    col = new DataColumn();
col.DataType = Type.GetType("System.String");

    col.ColumnName = "Sexo";
dt.Columns.Add(col);

//Criando e atribuindo os valores as linhas
DataRow row;
row = dt.NewRow();

    row["Id"] = int.Parse(txtId.Text);
row["Name"] = txtName.Text;
row["Sexo"] = cbbSexo.SelectedValue.ToString().Substring(37,9);
row = dt.NewRow();

    dt.Rows.Add(row);

//Adicionando a tabela ao Dataset
ds.Tables.Add("Arquivo");

/* Efetuando checagem para criação do diretório
onde será salvo o arquivo *.dbf */
if (!(Directory.Exists("c:\\GeraDBF")))
{
Directory.CreateDirectory("c:\\GeraDBF");
}

/* Checando a existência do arquivo *.dbf
e exibindo validação para substituição do arquivo. */
if (File.Exists("c:\\GeraDBF\\Arquivo.dbf"))
{
MessageBoxResultresult = MessageBox.Show("Você deseja realmente apagar o arquivo?", "GeraDBF",
MessageBoxButton.YesNo,
MessageBoxImage.Question);

if (result.Equals(MessageBoxResult.Yes))
{
//Deleta o arquivo se a opção for sim
File.Delete("c:\\GeraDBF\\Arquivo.dbf");

//Chama o método que cria o arquivo *.dbf e o preencha com o Dataset
criarDBF(ds);
}

 

}
else
{
//Chama o método que cria o arquivo *.dbf e o preencha com o Dataset
criarDBF(ds);
}

returnds;
}


Listagem 01 - Criando o método do tipo Dataset para validar e preencher 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:
public DataSet criarDBF(DataSet ds)
{
//Seta as configurações de conexão OLEDB e o caminho do arquivo dbf, e abre a conexão
OleDbConnection oConn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\\GeraDBF;Extended Properties=dBase III");
oConn.Open();

//dDfine o comando de criação
OleDbCommand cmd = new OleDbCommand(" CREATE TABLE Arquivo (Id INTEGER, Name VARCHAR(16), Sexo VARCHAR(16))");

cmd.Connection = oConn;

//Execute o comando de criação para criar a tabela vazia
cmd.ExecuteNonQuery();

//Adapter para pegar a base de dados vazia
OleDbDataAdapter da = newOleDbDataAdapter("SELECT * FROM Arquivo", oConn);

//Atualiza a base de dados vazia com o Dataset, e fecha a conexão
da.Update(ds, "Arquivo");

  oConn.Close();

return ds;
}
Listagem 02 - Criando o método do tipo Dataset para criar o arquivo *.dbf e preencher arquivo *.dbf com o Dataset.

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:

privatevoid btnGerarDbf_Click(object sender, RoutedEventArgs e)

{

datasetexample();

}
Listagem 03 - Chamando o método datasetexample(), no evento on_click do botã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



Colunista

Thiago Cavalcante

Profissional certificado Microsoft, atuando na área de TI desde 2000, inicialmente trabalhando com infra-estrutura de redes e atualmente trabalhando com Desenvolvimento .Net C#. Membro fundador do Grupo de Profissionais ITPro Brasil, graduando em Sistemas de Informação pela FANOR, na qual é facilitador da Célula Acadêmica Kangaceiros .Net, entusiasta e estudante da plataforma .Net.
© Copyright 2011 - Todos os direitos reservados. Proibida a reprodução parcial ou total do conteúdo deste site.
Como Funciona Formas de Pagamento Logo Ebit Compra Segura

TI 24x7 - O Maior portal de cursos online especializado em TI do Brasil