criar/gravar/ler arquivo dbf no delphi
Bom dia
Desenvolvo software em delphi
Preciso de um programa medelo em delphi que cria uma estrutura de um arquivo em dbf, grave o arquivo dbf e le o arquivo dbf
exemplo da estrutura no dbf
codigo numeric 5,0
nome char 50
datavenda date
vrvenda numeric 12,2
grato
placido
Desenvolvo software em delphi
Preciso de um programa medelo em delphi que cria uma estrutura de um arquivo em dbf, grave o arquivo dbf e le o arquivo dbf
exemplo da estrutura no dbf
codigo numeric 5,0
nome char 50
datavenda date
vrvenda numeric 12,2
grato
placido
Placido
Curtidas 0
Respostas
Uasan
22/06/2009
Bom Dia,
Essa eu sei resolver :oops:
Segue o codigo para criar um tabela DBF com index.
Tipos de campos:
ftString = Char
ftInteger= NUmerico
ftboolean = Booleando
ftcurrency = currency
ftFloat = Float
ftDate = DATA
Depois para ler e so criar uma tabela em modo run time:
Espero ter dado uma luz.
[]´s
Essa eu sei resolver :oops:
Segue o codigo para criar um tabela DBF com index.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
Table1 : TTable;
begin
{ Criar arquivos }
Table1 := TTable.create(Application);
{ Cria arquivo }
with Table1 do
begin
Active := False;
DatabaseName := ´C:\´;
TableName := ´teste´;
TableType := ttdBASE;
with FieldDefs do
begin
Clear;
Add(´Name1´, ftString, 20, False);//ver lista abaixo de tipos de campos.
Add(´Name2´, ftString, 20, False);
Add(´Name3´, ftString, 20, False);
Add(´Name4´, ftString, 20, False);
end;
CreateTable;
AddIndex(´Indice1´, ´Name1 + Name2´, [ixExpression]);
AddIndex(´Indice2´, ´Name2 + Name3´, [ixExpression]);
AddIndex(´Indice3´, ´Name3 + Name4´, [ixExpression]);
end;
end;
end.
Tipos de campos:
ftString = Char
ftInteger= NUmerico
ftboolean = Booleando
ftcurrency = currency
ftFloat = Float
ftDate = DATA
Depois para ler e so criar uma tabela em modo run time:
procedure TForm1.Button2Click(Sender: TObject); var tabela:ttable; begin tabela := tabela.Create(nil); tabela.Database := ´C:\teste.dbf´; tabela.IndexName := ´C:\teste.mdx´; tabela.Open := true; end;
Espero ter dado uma luz.
[]´s
GOSTEI 0
Placido
22/06/2009
Muito obrigado pela ajuda
Mas está dando erro na criação do campo do tipo data
veja o meu programa abaixo
--------------------------
procedure Tfrmexportaarquivofaturamento.SpeedButton1Click(Sender: TObject);
var
Table1 : TTable;
begin
{ Criar arquivos }
Table1 := TTable.create(Application);
{ Cria arquivo }
with Table1 do
begin
Active := False;
DatabaseName := ´C:\sgcadm\dbf\´;
TableName := ´ppndbf.dbf´;
TableType := ttdBASE;
with FieldDefs do
begin
Clear;
Add(´dataemi´, ftDate, 10 , False);
Add(´dataven´, ftDate, 10, False);
Add(´documento´, ftString, 12, False);
Add(´cfop´, ftString, 4, False);
Add(´valor´, ftCurrency, 14, False);
Add(´nomecli´, ftString, 55, False);
Add(´cro´, ftString, 5, False);
Add(´cpf´, ftString, 14, False);
Add(´parcela´, ftString, 5, False);
end;
CreateTable;
AddIndex(´Indice1´, ´DATAEMI´, [ixExpression]);
end;
end;
----------------------
se for possivel passe um exmplo para definição do campo do tipo data e numeric com 2 casas decimais
Obrigado pela ajuda
Plácido
Mas está dando erro na criação do campo do tipo data
veja o meu programa abaixo
--------------------------
procedure Tfrmexportaarquivofaturamento.SpeedButton1Click(Sender: TObject);
var
Table1 : TTable;
begin
{ Criar arquivos }
Table1 := TTable.create(Application);
{ Cria arquivo }
with Table1 do
begin
Active := False;
DatabaseName := ´C:\sgcadm\dbf\´;
TableName := ´ppndbf.dbf´;
TableType := ttdBASE;
with FieldDefs do
begin
Clear;
Add(´dataemi´, ftDate, 10 , False);
Add(´dataven´, ftDate, 10, False);
Add(´documento´, ftString, 12, False);
Add(´cfop´, ftString, 4, False);
Add(´valor´, ftCurrency, 14, False);
Add(´nomecli´, ftString, 55, False);
Add(´cro´, ftString, 5, False);
Add(´cpf´, ftString, 14, False);
Add(´parcela´, ftString, 5, False);
end;
CreateTable;
AddIndex(´Indice1´, ´DATAEMI´, [ixExpression]);
end;
end;
----------------------
se for possivel passe um exmplo para definição do campo do tipo data e numeric com 2 casas decimais
Obrigado pela ajuda
Plácido
GOSTEI 0
Uasan
22/06/2009
Bom Dia,
Esqueci de avisa os campos DATA e CURRENCY não precisa estipular tamanho do campo.
Tente dessa maneira assim evita o erro do ADD, que necessita adicionar informação completa.
[]´s
Esqueci de avisa os campos DATA e CURRENCY não precisa estipular tamanho do campo.
Tente dessa maneira assim evita o erro do ADD, que necessita adicionar informação completa.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
Table1 : TTable;
begin
{ Criar arquivos }
Table1 := TTable.create(Application);
{ Cria arquivo }
with Table1 do
begin
Active := False;
DatabaseName := ´C:\sgcadm\dbf\´;
TableName := ´ppndbf.dbf´;
TableType := ttdBASE;
with FieldDefs do
begin
Clear;
with AddFieldDef do
begin
Name := ´dataven´;
DataType := ftdate;
Required := True;
end;
with AddFieldDef do
begin
Name := ´documento´;
DataType := ftString;
Required := false;
Size := 12;
end;
with AddFieldDef do
begin
Name := ´cfop´;
DataType := ftString;
Required := false;
size := 4;
end;
with AddFieldDef do
begin
Name := ´valor´;
DataType := ftCurrency;
Required := false;
end;
with AddFieldDef do
begin
Name := ´nomecli´;
DataType := ftString;
Required := false;
size := 50;
end;
with AddFieldDef do
begin
Name := ´cro´;
DataType := ftString;
Required := false;
size := 5;
end;
with AddFieldDef do
begin
Name := ´cpf´;
DataType := ftString;
Required := false;
size := 14;
end;
with AddFieldDef do
begin
Name := ´parcela´;
DataType := ftString;
Required := false;
size := 5;
end;
end;
CreateTable;
AddIndex(´Indice1´, ´DATAEMI´, [ixExpression]);
end;
end;
end.
[]´s
GOSTEI 0
Placido
22/06/2009
Boa tarde..
Mru amigo obriagod pela ajuda para criar o arquivo dbf e o indice deu tudo certo
Agora me ajede a resolver outra coisa
estou lendo um clientdadaset e preciso gravar estas informações do
clientdadaset para esta tabela dbf
veja o meu exemplo
-------------------------------------------------------------
procedure Tfrmexportaarquivofaturamento.btnGravaDbfClick(Sender: TObject);
var
Table1 : TTable;
begin
Table1 := TTable.create(Application);
with Table1 do
begin
Active := False;
DatabaseName := ´C:\sgcadm\dbf\´;
TableName := ´ppndbf.dbf´;
TableType := ttdBASE;
end;
QueryFaturamento.Close;
cdsFaturamento.Close;
QueryFaturamento.ParamByName(´EMPRESA´).Value := FrmPrincipalSGCAdm.CodEmpresa;
QueryFaturamento.ParamByName(´DATAINICIAL´).AsDate := dbDatainicial.Date ;
QueryFaturamento.ParamByName(´DATAFINAL´).AsDate := dbDatafinal.date;
QueryFaturamento.Open;
cdsFaturamento.Open;
while (cdsFaturamento.Eof = false) do
begin
// fazer um exemplo para gravar o campo (dataemi)
// fazer um exemplo para gravar o campo (valor)
// fazer um exemplo para gravar o campo (documento)
cdsPadrao.Next;
end; // while
end;
-----------------------------------------------------------
Ou seja me ajudar a fazer um procedimneto para incluir os dados na tabela dbf
Grato
Plácido
Mru amigo obriagod pela ajuda para criar o arquivo dbf e o indice deu tudo certo
Agora me ajede a resolver outra coisa
estou lendo um clientdadaset e preciso gravar estas informações do
clientdadaset para esta tabela dbf
veja o meu exemplo
-------------------------------------------------------------
procedure Tfrmexportaarquivofaturamento.btnGravaDbfClick(Sender: TObject);
var
Table1 : TTable;
begin
Table1 := TTable.create(Application);
with Table1 do
begin
Active := False;
DatabaseName := ´C:\sgcadm\dbf\´;
TableName := ´ppndbf.dbf´;
TableType := ttdBASE;
end;
QueryFaturamento.Close;
cdsFaturamento.Close;
QueryFaturamento.ParamByName(´EMPRESA´).Value := FrmPrincipalSGCAdm.CodEmpresa;
QueryFaturamento.ParamByName(´DATAINICIAL´).AsDate := dbDatainicial.Date ;
QueryFaturamento.ParamByName(´DATAFINAL´).AsDate := dbDatafinal.date;
QueryFaturamento.Open;
cdsFaturamento.Open;
while (cdsFaturamento.Eof = false) do
begin
// fazer um exemplo para gravar o campo (dataemi)
// fazer um exemplo para gravar o campo (valor)
// fazer um exemplo para gravar o campo (documento)
cdsPadrao.Next;
end; // while
end;
-----------------------------------------------------------
Ou seja me ajudar a fazer um procedimneto para incluir os dados na tabela dbf
Grato
Plácido
GOSTEI 0
Placido
22/06/2009
Boa tarde..
Consegui criar o arquivo dbf
Agora para gravar o arquivo dbf esta dando erro
Veja no exemplo
Estou utilizando o componente BDE (ttable)
Estou lendo uma query e quero gravar os dados na tabela dbf
Preciso de uma ajuda para resolver o problema.
Exemplo do programa
-----------------------------------------------------------------------
procedure Tfrmexportaarquivofaturamento.btnGravaDbfClick(Sender: TObject);
begin
// Table1 := TTable.create(Application);
with tabelappn do
begin
Active := False;
end;
QueryFaturamento.Close;
cdsFaturamento.Close;
QueryFaturamento.ParamByName(´EMPRESA´).Value := FrmPrincipalSGCAdm.CodEmpresa;
QueryFaturamento.ParamByName(´DATAINICIAL´).AsDate := dbDatainicial.Date ;
QueryFaturamento.ParamByName(´DATAFINAL´).AsDate := dbDatafinal.date;
QueryFaturamento.Open;
cdsFaturamento.Open;
while (cdsFaturamento.Eof = false) do
begin
tabelappn.Insert; ??? que comando coloco aqui para inserir um registro na tabela
tabelappndataemi.Value := cdsFaturamentoPED_DATAVENDA.AsDateTime;
tabelappndataven.Value := cdsFaturamentoPED_DATAVENDA.AsDateTime;
tabelappn.??; que comando coloco aqui para gravar o registro
cdsFaturamento.Next;
end; // while
end;
---------------------------------------------------------------------
Grato
Plácido
Consegui criar o arquivo dbf
Agora para gravar o arquivo dbf esta dando erro
Veja no exemplo
Estou utilizando o componente BDE (ttable)
Estou lendo uma query e quero gravar os dados na tabela dbf
Preciso de uma ajuda para resolver o problema.
Exemplo do programa
-----------------------------------------------------------------------
procedure Tfrmexportaarquivofaturamento.btnGravaDbfClick(Sender: TObject);
begin
// Table1 := TTable.create(Application);
with tabelappn do
begin
Active := False;
end;
QueryFaturamento.Close;
cdsFaturamento.Close;
QueryFaturamento.ParamByName(´EMPRESA´).Value := FrmPrincipalSGCAdm.CodEmpresa;
QueryFaturamento.ParamByName(´DATAINICIAL´).AsDate := dbDatainicial.Date ;
QueryFaturamento.ParamByName(´DATAFINAL´).AsDate := dbDatafinal.date;
QueryFaturamento.Open;
cdsFaturamento.Open;
while (cdsFaturamento.Eof = false) do
begin
tabelappn.Insert; ??? que comando coloco aqui para inserir um registro na tabela
tabelappndataemi.Value := cdsFaturamentoPED_DATAVENDA.AsDateTime;
tabelappndataven.Value := cdsFaturamentoPED_DATAVENDA.AsDateTime;
tabelappn.??; que comando coloco aqui para gravar o registro
cdsFaturamento.Next;
end; // while
end;
---------------------------------------------------------------------
Grato
Plácido
GOSTEI 0