Fórum Gravar Registros em Banco de Dados #353105
06/02/2008
0
Bom Dia
Estou usando Delphi 7 e Banco de Dados FireBird 2.0.
Tenho um arquivo.txt (cad_cliente.txt) com 1975 linhas, isso quer dizer 1975 clientes no arquivo com varios campos.
Preciso importar e gravar esse arquivo no banco de dados, para não precisar cadastrar manualmente os 1975 registros, estou fazendo da seguinte maneira.
No form eu tenho um grid onde vou mostrar os registros gravados no banco e um botão para executar a importação do arquivo e para inserir os registros.
Tudo isso acontesse, mas fica grava na memoria do ClientDataSet, mas não esta gravando no banco, qd eu fecho a aplicação e abro novamente não ficou nada gravado, e para visualizar preciso importar o arquivo novamente.
Segue abaixo o código completo .
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
I,C : Integer;
STR : String;
begin
Gauge1.Visible :=True;
Gauge1.Progress:=0;
Gauge1.MaxValue:=ListBox1.Items.Count-1;
for I := 0 to ListBox1.Items.Count - 1 do
begin
Gauge1.AddProgress(1);
STR := ListBox1.Items.Strings[i];
// Length(STR) = 290 then
with DataModule2.ClientDataSet1 do
begin
if not locate(´COD_CLIENTE´,copy(STR,1,6),[]) then
begin
Insert;
FieldByName(´COD_CLIENTE´).AsString :=IntToStr(StrToInt(COPY(STR,1,6)));
FieldByName(´RZ_SOCIAL´).AsString :=COPY(STR,7,49);
FieldByName(´CNPJ´).AsString :=COPY(STR,57,13);
FieldByName(´IE´).AsString :=COPY(STR,70,19);
FieldByName(´ENDERECO´).AsString :=COPY(STR,90,75);
FieldByName(´CIDADE´).AsString :=COPY(STR,166,29);
FieldByName(´CEP´).AsString :=IntToStr(StrToInt(COPY(STR,197,8)));
FieldByName(´UF´).AsString :=COPY(STR,205,2);
FieldByName(´BAIRRO´).AsString :=COPY(STR,207,24);
FieldByName(´REDE_ASSOC´).AsString :=COPY(STR,232,2);
FieldByName(´COD_REDE´).AsString :=IntToStr(StrToInt(COPY(STR,234,6)));
FieldByName(´RZ_REDE´).AsString :=COPY(STR,240,24);
FieldByName(´COD_ASSOC´).AsString :=IntToStr(StrToInt(COPY(STR,265,6)));
FieldByName(´RZ_ASSOC´).AsString :=COPY(STR,271,20);
DataModule2.ClientDataSet1.Post;
DataModule2.ClientDataSet1.ApplyUpdates(0);
Application.ProcessMessages;
DBGrid1.Visible :=False
end;
end;
end;
ShowMessage(´Arquivo Carregado com Sucesso !!!´+#13+´Total de registro: ´ + IntToStr(DataModule2.ClientDataSet1.RecordCount));
Gauge1.Progress:=0;
Gauge1.Visible :=False;
DBGrid1.Visible :=True;
DBGrid1.DataSource.DataSet.First;
SpeedButton1.Enabled :=False;
ListBox1.Visible :=False;
Form1.Height :=750;
Form1.Top :=3;
Form1.Left :=5;
Form1.Width :=1015;
DBGrid1.Top :=10;
DBGrid1.Left :=10;
DBGrid1.Height :=650;
DBGrid1.Width:=990;
Panel1.Align :=alBottom;
Button2.Left :=900;
SpeedButton2.Left :=550;
end;
Desde já agradeço pela atenção de todos.
Estou usando Delphi 7 e Banco de Dados FireBird 2.0.
Tenho um arquivo.txt (cad_cliente.txt) com 1975 linhas, isso quer dizer 1975 clientes no arquivo com varios campos.
Preciso importar e gravar esse arquivo no banco de dados, para não precisar cadastrar manualmente os 1975 registros, estou fazendo da seguinte maneira.
No form eu tenho um grid onde vou mostrar os registros gravados no banco e um botão para executar a importação do arquivo e para inserir os registros.
Tudo isso acontesse, mas fica grava na memoria do ClientDataSet, mas não esta gravando no banco, qd eu fecho a aplicação e abro novamente não ficou nada gravado, e para visualizar preciso importar o arquivo novamente.
Segue abaixo o código completo .
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
I,C : Integer;
STR : String;
begin
Gauge1.Visible :=True;
Gauge1.Progress:=0;
Gauge1.MaxValue:=ListBox1.Items.Count-1;
for I := 0 to ListBox1.Items.Count - 1 do
begin
Gauge1.AddProgress(1);
STR := ListBox1.Items.Strings[i];
// Length(STR) = 290 then
with DataModule2.ClientDataSet1 do
begin
if not locate(´COD_CLIENTE´,copy(STR,1,6),[]) then
begin
Insert;
FieldByName(´COD_CLIENTE´).AsString :=IntToStr(StrToInt(COPY(STR,1,6)));
FieldByName(´RZ_SOCIAL´).AsString :=COPY(STR,7,49);
FieldByName(´CNPJ´).AsString :=COPY(STR,57,13);
FieldByName(´IE´).AsString :=COPY(STR,70,19);
FieldByName(´ENDERECO´).AsString :=COPY(STR,90,75);
FieldByName(´CIDADE´).AsString :=COPY(STR,166,29);
FieldByName(´CEP´).AsString :=IntToStr(StrToInt(COPY(STR,197,8)));
FieldByName(´UF´).AsString :=COPY(STR,205,2);
FieldByName(´BAIRRO´).AsString :=COPY(STR,207,24);
FieldByName(´REDE_ASSOC´).AsString :=COPY(STR,232,2);
FieldByName(´COD_REDE´).AsString :=IntToStr(StrToInt(COPY(STR,234,6)));
FieldByName(´RZ_REDE´).AsString :=COPY(STR,240,24);
FieldByName(´COD_ASSOC´).AsString :=IntToStr(StrToInt(COPY(STR,265,6)));
FieldByName(´RZ_ASSOC´).AsString :=COPY(STR,271,20);
DataModule2.ClientDataSet1.Post;
DataModule2.ClientDataSet1.ApplyUpdates(0);
Application.ProcessMessages;
DBGrid1.Visible :=False
end;
end;
end;
ShowMessage(´Arquivo Carregado com Sucesso !!!´+#13+´Total de registro: ´ + IntToStr(DataModule2.ClientDataSet1.RecordCount));
Gauge1.Progress:=0;
Gauge1.Visible :=False;
DBGrid1.Visible :=True;
DBGrid1.DataSource.DataSet.First;
SpeedButton1.Enabled :=False;
ListBox1.Visible :=False;
Form1.Height :=750;
Form1.Top :=3;
Form1.Left :=5;
Form1.Width :=1015;
DBGrid1.Top :=10;
DBGrid1.Left :=10;
DBGrid1.Height :=650;
DBGrid1.Width:=990;
Panel1.Align :=alBottom;
Button2.Left :=900;
SpeedButton2.Left :=550;
end;
Desde já agradeço pela atenção de todos.
Help Desk1
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)