ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

lendo arquivo txt

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
giotramonte
Novato
Novato


Registrado: Terça-Feira, 21 de Março de 2017
Mensagens: 4

MensagemEnviada: Ter Mar 21, 2017 9:46 am    Assunto: lendo arquivo txt Responder com Citação

Ola caros colegas! Estou precisando fazer com que meu sistema leia um arquivo txt. Por exemplo: O Cadastro de clientes será sempre atualizado seja excluindo alunos ou incluindo e preciso que o sistema faça a leitura desse arquivo que estará num pendrive e atualize o banco de dados. Uso Delphi 7 e Firebird 1.5. Se alguém puder me ajudar agradeço
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leo_cj
Colaborador
Colaborador


Registrado: Sábado, 26 de Março de 2011
Mensagens: 1335

MensagemEnviada: Ter Mar 21, 2017 10:39 am    Assunto: Responder com Citação

para ler arquivos utilizo o seguinte:

Código:
procedure TForm1.Button1Click(Sender: TObject);
var
  Arq: TextFile;
  linha: String;
begin
  Assign(Arq, Caminho do seu arquivo);
  {$I-}
    Reset(Arq); // abre o arquivo em modo de readonly
  {$I+}
  if (IOResult <> 0) then
    ShowMessage('Erro na abertura do arquivo!');

  while (not eof(arq)) do
  begin
    readln(arq, linha);
    Memo1.Lines.Add(linha);
  end;
end;


nesse exemplo, as linhas do arquivo serão adicionadas no memo1
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
giotramonte
Novato
Novato


Registrado: Terça-Feira, 21 de Março de 2017
Mensagens: 4

MensagemEnviada: Ter Mar 21, 2017 10:45 am    Assunto: Responder com Citação

Obrigado pela dica Leo, farei o teste. E Teria como fazer a leitura e jogar para a tabela de clientes esses dados por ex: porque na verdade esses dados serão atualizados ou seja terei que fazer a leitura e o sistema verificar os clientes novos e já jogar direto para o banco e os clientes que foram excluidos mudar o status para desativado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leo_cj
Colaborador
Colaborador


Registrado: Sábado, 26 de Março de 2011
Mensagens: 1335

MensagemEnviada: Ter Mar 21, 2017 11:12 am    Assunto: Responder com Citação

a parte de passar as informações do arquivo para a tabela você vai ter que fazer manualmente, utilizando o método que passei você consegue ler o arquivo, ai de acordo com a estrutura do seu arquivo você precisa determinar a ação a ser tomada (inclusão, edição ou exclusão) e no caso de inclusão ou edição, pegar os valores a serem passados para o banco e realizar o append / edit

ex:
Citação:
tabela cliente
- id integer auto incremento
- nome varchar(20)
tipos operações
- 0: inclusão
- 1: edição
- 2: exclusão

estrutura arquivo
campo----inicio---fim
operação---1------1
id------------2------5
coluna------6------9
valor-------10-----29

arquivo
00000nomeLeonardo
10001nomeBaltazar
00000nomeAdelaide
20002


Código:
procedure TForm1.Button1Click(Sender: TObject);
var
  Arq: TextFile;
  linha: String;
  Operacao: Integer;
begin
  Assign(Arq, Caminho do Seu Arquivo);
  {$I-}
    Reset(Arq); // abre o arquivo em modo de readonly
  {$I+}
  if (IOResult <> 0) then
    ShowMessage('Erro na abertura do arquivo!');

  while (not eof(arq)) do
  begin
    readln(arq, linha);
    Operacao := StrToInt(Copy(linha, 1, 1));
    qry.close;
    qry.sql.clear;
    if Operacao = 0 then
    begin
      qry.SQL.Add('INSERT INTO CLIENTE (' + Copy(linha, 6, 4) + ')');
      qry.SQL.Add('VALUES (:VALUE)');
      qry.Parameters.ParamByName('VALUE').Value := Trim(Copy(linha, 10, 20));
      qry.ExecSQL;
    end
    else if Operacao = 1 then
    begin
      qry.SQL.Add('UPDATE CLIENTE');
      qry.SQL.Add('SET ' + Copy(linha, 6, 4) + ' = :VALUE');
      qry.SQL.Add('WHERE ID = :ID');
      qry.Parameters.ParamByName('VALUE').Value := Trim(Copy(linha, 10, 20));
      qry.Parameters.ParamByName('ID').Value := Copy(linha, 2, 4);
      qry.ExecSQL;
    end
    else
    begin
      qry.SQL.Add('DELETE CLIENTE');
      qry.SQL.Add('WHERE ID = :ID');
      qry.Parameters.ParamByName('ID').Value := Copy(linha, 2, 4);
      qry.ExecSQL;   
    end;
  end;
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
giotramonte
Novato
Novato


Registrado: Terça-Feira, 21 de Março de 2017
Mensagens: 4

MensagemEnviada: Dom Mar 26, 2017 6:23 pm    Assunto: RESOLVIDO Responder com Citação

Muito Obrigado pela dica caros colegas.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB