Pegar valor de um campo na importação
e ai blz, é a terceira vez somente hoje... hehehe
usando o código abaixo para importar uma base de dados...
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?
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
Curtidas 0
Respostas
Aroldo Zanela
01/02/2006
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.
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
Aroldo Zanela
01/02/2006
Colega,
Desculpe, postei antes de incluir um exemplo:
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
Paullsoftware
01/02/2006
valeu Aroldo vou testar e retorno... abraços! 8)
GOSTEI 0
Alc2003
01/02/2006
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?
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
Paullsoftware
01/02/2006
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...
GOSTEI 0
Alc2003
01/02/2006
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!!!
Se alguem souber ou ja tiver tido esse erro me avise.
Obrigado!!!
GOSTEI 0