Fórum Tabela maluca...trazendo informação errada... #316907
21/03/2006
0
if MDPrincipal.tbl_temp.FieldByname(´CIC____FU´).AsInteger <> 0 then
begin
if Length(Trim(IntToStr(MDPrincipal.tbl_temp.FieldByname (´CIC____FU´).AsInteger))) < 11 then
begin
vCPF := StrZero(MDPrincipal.tbl_temp.FieldByname(´CIC____FU´).AsInteger,11);
MDPrincipal.tbl_temp1.FieldByname(´CIC____FU´).AsString := vCPF;
end
else
begin
(´CIC____FU´).AsInteger));
vCPF := IntToStr(MDPrincipal.tbl_temp.FieldByname(´CIC____FU´).AsInteger);
MDPrincipal.tbl_temp1.FieldByname(´CIC____FU´).AsString := vCPF;
end;
end;
ja fiz de tudo e nada...
valeu pela força.
fabio cavalcanti
Cavalcanti.fabio
Curtir tópico
+ 0Posts
21/03/2006
Rjun
Números como CPF não devem ser tratados como inteiros. Acho que a maioria dos programadores definiem CPF/CGC como sendo strings.
Gostei + 0
21/03/2006
Martins
vc poderia postar o código completo.
if MDPrincipal.tbl_temp.FieldByname(´CIC____FU´).AsInteger <> 0 then begin if Length(Trim(IntToStr(MDPrincipal.tbl_temp.FieldByname(´CIC____FU´).AsInteger))) < 11 then begin vCPF := StrZero(MDPrincipal.tbl_temp.FieldByname(´CIC____FU´).AsInteger,11); MDPrincipal.tbl_temp1.FieldByname(´CIC____FU´).AsString := vCPF; end else begin (´CIC____FU´).AsInteger)); //De onde é essa linha? vCPF := IntToStr(MDPrincipal.tbl_temp.FieldByname(´CIC____FU´).AsInteger); MDPrincipal.tbl_temp1.FieldByname(´CIC____FU´).AsString := vCPF; end; end;
Não deveria ter nenhum mistério para fazer isso.
pseudo código.
Tabela_A.First; While not (Tabela_A.Eof) do begin Tabela_B.Campo := Tabela_A.Campo; .... Tabela_A.next; ... end;
Gostei + 0
21/03/2006
Martins
Ótima observação [b:123ac2f43c]Rjun[/b:123ac2f43c], eu uso String, e acredito q o colega poderia ter convertido sua tabela de Dbase para Paradox usando DataPump q vem com o Delphi.
Gostei + 0
21/03/2006
Cavalcanti.fabio
o estranho e que no cadastro vamos dizer 6879 o cpf em inteiro e 38803207256 ou seja um valor inteiro com 11 e ao transformar em string ele esta me jogando este valor doido...
esta linha eu coloquei sem quere no poster ((´CIC____FU´).AsInteger)); //De onde é essa linha? ) pode desconsiderar
tem alguma outra forma de pegar este valor inteiro e transfromar em string sem que ele me retorno um estouro por exemplo.
grato.
fabio
Gostei + 0
21/03/2006
Rjun
Gostei + 0
21/03/2006
Cavalcanti.fabio
valeu,
fabio
Gostei + 0
21/03/2006
Rjun
Gostei + 0
21/03/2006
Cavalcanti.fabio
grato,
fabio
Gostei + 0
21/03/2006
Rjun
Vamos lá:
Se eu estiver errado, alguem me corrija.
No DBASE você define um tipo com numérico, e não inteiro. Você define o tamanho e o número de casas decimais. Se você quer representar um inteiro define o numero de casas decimais como sendo 0. Por isso o número 38802365780 é suportado no DBASE.
Nessa linha:
MDPrincipal.tbl_temp.FieldByname(´CIC____FU´).AsInteger <> 0
você está fazendo uma conversão. Eu sugeri que você faça assim:
MDPrincipal.tbl_temp.FieldByname(´CIC____FU´).Value <> 0
Aqui você também esta fazendo uma conversão:
vCPF := IntToStr(MDPrincipal.tbl_temp.FieldByname(´CIC____FU´).AsInteger);
Seria melhor você fazer isso:
vCPF := MDPrincipal.tbl_temp.FieldByname(´CIC____FU´).AsString;
Quando você usa AsInteger, o Delphi vai converter o valor para um inteiro. O número [b:b8f77151d3]38802365780[/b:b8f77151d3] está fora da faixa de inteiros que é [b:b8f77151d3]-2147483648 a 2147483647[/b:b8f77151d3].
Gostei + 0
21/03/2006
Cavalcanti.fabio
Seria melhor você fazer isso:
Código:
vCPF := MDPrincipal.tbl_temp.FieldByname(´CIC____FU´).AsString;
grato,
fabio
Gostei + 0
21/03/2006
Martins
var vCPF :Variant; begin ... vCPF := MDPrincipal.tbl_temp.FieldByname(´CIC____FU´).Value; MDPrincipal.tbl_temp1.FieldByname(´CIC____FU´).AsString := vCPF; ...
Tente colocar mais ou menos como descrito acima.
e retorne aqui.
Gostei + 0
22/03/2006
Cavalcanti.fabio
abraço,
fabio cavalcanti
Gostei + 0
22/03/2006
Martins
Blz :wink:
Valew pela participação [b:5e2976b877]Rjun[/b:5e2976b877]
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)