GARANTIR DESCONTO

Fórum Pegar valor de um campo na importação #311312

01/02/2006

0

e ai blz, é a terceira vez somente hoje... hehehe

usando o código abaixo para importar uma base de dados...

AssignFile( t , NomeArquivo);
Reset(t);
while not eof( t ) do
begin
readln(t,s);
TABELA.FieldByName(´Codigo´).AsString := copy( s , 1 , pos(´;´,s)-1 );
s:=copy(s,pos(´;´,s)+1, length(s) );
TABELA.FieldByName(´NOME´).AsString := copy( s , 1 , pos(´;´,s)-1 );
s:=copy(s,pos(´;´,s)+1, length(s) );
TABELA.FieldByName(´End´).AsString := copy( s , 1 , pos(´;´,s)-1 );
s:=copy(s,pos(´;´,s)+1, length(s) );
TABELA.FieldByName(Cpf´).AsString := copy( s , 1 , pos(´;´,s)-1 );
s:=copy(s,pos(´;´,s)+1, length(s) );
TABELA.FieldByName(´Rg´).AsString := copy( s , 1 , pos(´;´,s)-1 );
s:=copy(s,pos(´;´,s)+1, length(s) );
TABELA.FieldByName(´Fone´).AsString := copy( s , 1 , pos(´;´,s)-1 );
s:=copy(s,pos(´;´,s)+1, length(s) );
Tabela.Post;
Tabela.ApplyUpdate;



como eu faço para fazer com que usando a função copy eu pegue o valor do final de uma linha para comparar os valores tipo assim:

vou importar um txt na ordem: Codigo,Nome,End,CPF,Rg,Fone
quero fazer o seguinte: ler primeiro o CPF jogar numha variavel e depois comprar com o cadastro da minha tabela pra verificar se já existe, em seguida, quero fazer com que a variavel ´S´ volte a assumir o valor do campo codigo novamente.

tem como fazer isso?


Paullsoftware

Paullsoftware

Responder

Posts

02/02/2006

Aroldo Zanela

Colega,

A forma de menor esforço é utilizar a classe TStringList para ´quebrar´ cada linha (registro) em colunas (campos) associada a abordagem que está utilizando agora.


Responder

Gostei + 0

02/02/2006

Aroldo Zanela

Colega,

Desculpe, postei antes de incluir um exemplo:

var LineData: String;
    FileData: TextFile;
    LineFields: TStringList;
begin
  if not dlgOpenTexto.Execute then Exit;

  AssignFile(FileData, dlgOpenTexto.FileName);
  Reset(FileData);
  LineFields    := TStringList.Create;
  LineFields.Delimiter  := ´;´; // Delimitador

  try
    while not Eof(FileData) do
    begin
      Readln(FileData, LineData);
      LineFields.Clear;
      LineFields.DelimitedText  := LineData;
      { TODO: Desenvolver rotina }
      LineFields.Strings[0]; // Código
      LineFields.Strings[1]; // Nome
      LineFields.Strings[2]; // Endereço
      LineFields.Strings[3]; // CPF
      LineFields.Strings[4]; // RG
      LineFields.Strings[5]; // Fone
    end;
  finally
    CloseFile(FileData);
    LineFields.Free;
  end;
end;



Responder

Gostei + 0

02/02/2006

Paullsoftware

valeu Aroldo vou testar e retorno... abraços! 8)


Responder

Gostei + 0

18/05/2007

Alc2003

Seguinte,
usei esse delimiter := ´;´ com uma linha em um txt.

AROLDO FONSECA;11121980;300;RUA SEVILLA MORAES

ai mandei um show nas Strings e deu o seguinte:

STRINGS[0] = AROLDO
STRINGS[1] = FONSECA
STRINGS[2] = 11121980
STRINGS[3] = 30
STRINGS[4] = RUA
STRINGS[5] = SEVILLA
STRINGS[6] = MORAES

Não sei por que ele pegou o espaço em branco como delimitador tambem se eu coloquei somente o ponto e virgula.

Alguem sabe como posso resolver isso?


Responder

Gostei + 0

18/05/2007

Paullsoftware

Seguinte, usei esse delimiter := ´;´ com uma linha em um txt. AROLDO FONSECA;11121980;300;RUA SEVILLA MORAES ai mandei um show nas Strings e deu o seguinte: STRINGS[0] = AROLDO STRINGS[1] = FONSECA STRINGS[2] = 11121980 STRINGS[3] = 30 STRINGS[4] = RUA STRINGS[5] = SEVILLA STRINGS[6] = MORAES Não sei por que ele pegou o espaço em branco como delimitador tambem se eu coloquei somente o ponto e virgula. Alguem sabe como posso resolver isso?

aqui funciona perfeitamente, verifique se existe algum espaço nas aspas que vc ta usando...


Responder

Gostei + 0

22/05/2007

Alc2003

já verifiquei tudo que podia e nao sei pq ele considera os espaçõs como delimitador e nao só a virgula como foi colocado;

Se alguem souber ou ja tiver tido esse erro me avise.

Obrigado!!!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar