Gerando arquivo *.dbf a partir de um Dataset (pt-Br)
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:
http://thiagocfc.files.wordpress.com/2010/12/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 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:
http://thiagocfc.files.wordpress.com/2010/12/geradbf02.jpg
Figura 02 – Abrindo a janela de referências .
http://thiagocfc.files.wordpress.com/2010/12/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:
http://thiagocfc.files.wordpress.com/2010/12/geradbf04.jpg
Figura 04 – Adicionando componentes da toolbox ao projeto GeraDBF.
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:
*
01.public DataSet datasetexample()
02.{
03.//Instanciando os objetos Dataset e Datatable para receber os valores do formulário
04.DataSet ds = new DataSet();
05.DataTable dt = new DataTable();
06.
07.//Setando o nome da tabela
08.dt.TableName = "Arquivo";
09.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.
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:
*
01.public DataSet criarDBF(DataSet ds)
02.{
03. //Seta as configurações de conexão OLEDB e o caminho do arquivo dbf, e abre a conexão
04. OleDbConnection oConn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\\GeraDBF;Extended Properties=dBase III");
05. oConn.Open();
06.
07. //dDfine o comando de criação
08. OleDbCommand cmd = new OleDbCommand(" CREATE TABLE Arquivo (Id INTEGER, Name VARCHAR(16), Sexo VARCHAR(16))");
09.
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.
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. Pronto, agora é só rodar o projeto e testar.
Segue abaixo link para download da solução para Visual Studio 2010.
Download da solução: http://bit.ly/gOeZj5