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:
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:
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:
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 =
DataTable();
06.
07.
//Setando o nome da tabela
08.
dt.TableName =
"Arquivo"
;
09.
DataColumn col;
10.
11.
//Criando as colunas
12.
col =
DataColumn();
13.
col.DataType = Type.GetType(
"System.Int32"
);
14.
col.ColumnName =
"Id"
15.
16.
dt.Columns.Add(col);
17.
18.
19.
"System.String"
20.
21.
"Name"
22.
23.
24.
25.
26.
27.
"Sexo"
28.
29.
30.
//Criando e atribuindo os valores as linhas
31.
DataRow row;
32.
row = dt.NewRow();
33.
34.
row[
] =
int
.Parse(txtId.Text);
35.
] = txtName.Text;
36.
] = cbbSexo.SelectedValue.ToString().Substring(37,9);
37.
38.
39.
dt.Rows.Add(row);
40.
41.
//Adicionando a tabela ao Dataset
42.
ds.Tables.Add(
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(
49.
}
50.
51.
/* Checando a existência do arquivo *.dbf
52.
e exibindo validação para substituição do arquivo. */
53.
(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.
(result.Equals(MessageBoxResult.Yes))
60.
61.
//Deleta o arquivo se a opção for sim
62.
File.Delete(
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.
73.
74.
75.
76.
return
ds;
77.
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:
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 =
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 =
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 =
OleDbDataAdapter(
"SELECT * FROM Arquivo"
, oConn);
//Atualiza a base de dados vazia com o Dataset, e fecha a conexão
da.Update(ds,
oConn.Close();
1.
private
void
btnGerarDbf_Click(
object
sender, RoutedEventArgs e)
2.
3.
datasetexample();
4.
Leonardo Côco edited Revision 1. Comment: Added tags