Fórum Pegar valor de um campo na importação #311312
01/02/2006
0
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
Curtir tópico
+ 0Posts
02/02/2006
Aroldo Zanela
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.
Gostei + 0
02/02/2006
Aroldo Zanela
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;
Gostei + 0
02/02/2006
Paullsoftware
Gostei + 0
18/05/2007
Alc2003
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?
Gostei + 0
18/05/2007
Paullsoftware
aqui funciona perfeitamente, verifique se existe algum espaço nas aspas que vc ta usando...
Gostei + 0
22/05/2007
Alc2003
Se alguem souber ou ja tiver tido esse erro me avise.
Obrigado!!!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)