Transferência de dados através de arquivos .txt - Parte IV
Entrando com código para gerar o arquivo de transferência
Agora para concluir o programa de transferência de dados devemos entrar com o código que irá gerar o arquivo desejado de acordo com o layout proposto. Dê um clique duplo no BtnGerar para criar o evento OnClick. Dentro do evento coloque a Listagem 1.
* Todo o código está comentado para melhor compreensão.
|
procedure TFTransf.BtnGerarClick(Sender: TObject); var // Variável do tipo arquivo ArqTransf: TextFile; Cont, Lin, Reg1,
Reg2: Integer; begin ///////////////////////////////////////////////////////////// //
// // Lembrete : Serão adotados os
formatos preestabelecidos // //
no layout
// // // // Obs. : Para identificar que dados
estamos informando // //
colocaremos apenas os nomes dos campos informados no // //
layout criado // // //
///////////////////////////////////////////////////////////// // Inicializando os contadores Lin := 0; Reg1 := 0; Reg2 := 0; // Informando a variável ArqTransf o // nome do arquivo que será gerado AssignFile(ArqTransf, 'Transf.txt'); // Inicializando o arquivo de transferência Rewrite(ArqTransf); // Incrementando o contador de linhas Inc(Lin); // Incluindo uma nova linha no arquivo de
transferência // Registro Tipo 0 WriteLn(ArqTransf, // Tipo '0' + // DtGera FormatDateTime('yyyyymmdd', Now) + // HsGera FormatDateTime('hhmmss', Now) + // Versão '1.0.0' + // Brancos PreencherStr(' ',
' ', 170,
False) + // Linha PreencherStr(IntToStr(Lin), '0', 5, True )); // Abrindo a conexão com a base de dados SQLConnec.Connected := True; /////////////////////////////////////// // // // Inicio da transferência dos dados // // // /////////////////////////////////////// // Quando a variável "Cont" for
igual a 1 estaremos utilizando a // tabela "Cliente". Quando o seu valor for 2 passaremos a usar // a tabela "Produto" // Cont = 1 --> Tabela Cliente // Cont = 2 --> Tabela Produto for
Cont := 1 to 2 do begin // Abrindo tabela de cliente SQLQuery.SQL.Clear; case Cont of // Utilizando a
tabela "Cliente" 1:SQLQuery.SQL.Add('select * from Cliente'); // Utilizando a tabela
"Produto" 2:SQLQuery.SQL.Add('select * from Produto'); end; // Para melhor compreenção não
utilizarei o "with ClientDataSet do" ClientDataSet.Active := False; ClientDataSet.Active := True; // Preparando o TProgressBar para mostrar
o progresso // da transferência dos dados PBarGerar.Position := 0; PBarGerar.Max :=
ClientDataSet.RecordCount; // Entra no loop dos registros da
tabela atual // até chegar no fim do arquivo - Eof
(End of file) while not(ClientDataSet.Eof)
do begin // Incrementando
o contador de linhas Inc(Lin); case Cont of // Utilizando a tabela
"Cliente" 1:begin // Incrementando o contador
do Registro Tipo 1 Inc(Reg1); // Incluindo uma nova linha
no arquivo de transferência // Registro Tipo 1 WriteLn(ArqTransf, // Tipo '1'
+ // Codigo PreencherStr(ClientDataSet.FieldByName('Codigo').AsString, '0', 5, True) +
// CPF PreencherStr(ClientDataSet.FieldByName('CPF').AsString, ' ', 14, False) + // PreencherStr(ClientDataSet.FieldByName('Nome').AsString, ' ', 50, False) +
// Endereço PreencherStr(ClientDataSet.FieldByName('Ender').AsString, ' ', 50, False) +
// Bairro PreencherStr(ClientDataSet.FieldByName('Bairro').AsString, '
', 30, False) + // Cidade PreencherStr(ClientDataSet.FieldByName('Cidade').AsString, ' ', 30, False) +
// UF PreencherStr(ClientDataSet.FieldByName('UF').AsString, ' ', 2, False) +
// DtNasc
FormatDateTime('yyyyymmdd', ClientDataSet.FieldByName('DtNasc').AsDateTime)+
// Linha PreencherStr(IntToStr(Lin),
'0', 5, True)); end; // Utilizando a
tabela "Produto" 2:begin // Incrementando o contador do Registro Tipo
2 Inc(Reg2); // Incluindo uma nova linha
no arquivo de transferência // Registro Tipo 1 WriteLn(ArqTransf, // Tipo '2' + // Codigo PreencherStr(ClientDataSet.FieldByName('Codigo').AsString, '
', 13, False) + // Descr PreencherStr(ClientDataSet.FieldByName('Descr').AsString, '
', 50, False) + // Valor PreencherStr(RemoverChar(Format('%1.2f', [
ClientDataSet.FieldByName('Valor').AsCurrency]), DecimalSeparator), '0', 15, True) + // Brancos PreencherStr(' ', ' ', 111, False) + // Linha PreencherStr(IntToStr(Lin),
'0', 5, True)); end; end; // Pula para o
próximo registro da tabela atual ClientDataSet.Next; //
Incrementa o TProgressBar PBarGerar.Position :=
PBarGerar.Position + 1; // Delay apenas
para mostrar a evolução do TProgressBar // pois os arquivos são muito
pequenos e sem ele não veriamos // essa evolução. Sua remoção não causará efeito algum // ao resultado final do arquivo de
transferência Sleep(100); end; end; // Incrementando o contador de linhas Inc(Lin); // Incluindo uma nova linha no arquivo de
transferência // Registro Tipo 9 WriteLn(ArqTransf, // Tipo '9' + // Reg1 PreencherStr(IntToStr(Reg1), '0', 5, True) + // Reg2 PreencherStr(IntToStr(Reg2),
'0', 5, True)
+ // Brancos PreencherStr(' ',
' ', 179,
False) + // Linha PreencherStr(IntToStr(Lin), '0', 5, True)); // Fechando o arquivo de transferência CloseFile(ArqTransf); ShowMessage('Arquivo
gerado'); end; |
Listagem 1 – Código inserido dentro do evento OnClick do BtnGerar
Devido tamanho, esta parte continua no próximo artigo. Obrigado!!!
|
Artigo criado por http://www.cassic.com.br/ |