ver o tipo de campo do banco de dado no clientdataset
Ola pessoal, preciso saber o tipo de dado de um campo do clientdataset como eu faço?
Eu estou fazendo importação de dados de um arquivo Texto,
eu faço assim para pega o dado do arquivo texto:
O problema q eu preco sabe no meu cds se é do tipo numerico, pois no arquivo texto o valor numerico esta com ´100.50´ o ponto o cds esta desconsiderando :P
Quero trata isso,
Abraços
Eu estou fazendo importação de dados de um arquivo Texto,
eu faço assim para pega o dado do arquivo texto:
cds.Fields[linha-1].AsVariant:=notasaida.Strings[i];
O problema q eu preco sabe no meu cds se é do tipo numerico, pois no arquivo texto o valor numerico esta com ´100.50´ o ponto o cds esta desconsiderando :P
Quero trata isso,
Abraços
Fabiotb
Curtidas 0
Respostas
Marco Salles
17/11/2006
acredito ter várias maneiras...
Uma delas não poderia fazer a troca do ponto para a virgula
Uma delas não poderia fazer a troca do ponto para a virgula
var
str: String;
begin
str:= StringReplace(notasaida.Strings[i],´.´,´,´, [rfReplaceAll]);
cds.Fields[linha-1].asstring:=Str;
GOSTEI 0
Fabiotb
17/11/2006
Essa ideia eu tinha pensado, mas o problema é temos campos string e numerico, por isso q preciso saber o tipo de dados do campo do clientdataset. alguem sabe???
GOSTEI 0
Marco Salles
17/11/2006
Ta esquisito voce ter um clientDataSet e não conhecer previamente o tipo de dados dos seus campos.. Mas de qualquer forma é so ver no Objeto Inpsctor o tipo de dados de um determinado codigo...
Poderia ate testar , mas acho irreduntande
Poderia ate testar , mas acho irreduntande
begin
if cds.FieldByName(´nome´) is TstringField Then
showmessage(´o Campo : ´+cds.FieldByName(´nome´).FieldName +´ é do tipo string´);
if cds.FieldByName(´idade´) is TintegerField Then
showmessage(´O Campo : ´+cds.FieldByName(´Idade´).FieldName+´ é do tipo Idade´);
if cds.FieldByName(´salario´) is TCurrencyField Then
showmessage(´O Campo ´+cds.FieldByName(´salario´).FieldName+´ é do tipo currency´);
end;
GOSTEI 0
Fabiotb
17/11/2006
for i:=0 to notasaida.Count-3 do begin if i>linhadaimportacao then begin if linha = 1 then begin cds.Insert; end; if length(notasaida.Strings[i])>0 then begin if cds.Fields[linha-1] is TfmtbcdField then begin str:= StringReplace(notasaida.Strings[i],´.´,´,´, [rfReplaceAll]); cds.Fields[linha-1].AsFloat:=strtofloat(Str); end else cds.Fields[linha-1].AsVariant:=notasaida.Strings[i]; end;
Com ajuda do brother acima, consegui a solução. Até parece loucura minha com este assunto q eu coloquei no forum. Eu mapei os campos das tabelas Dataflex para um banco de dados SGDB(firebird) e gerei os arquivos de exportacao do sistema q usa o dataflex para importar no meu banco de dados. Agoro posso criar relatorio gerenciais.
Abraços a todos e obrigado.
Fabio
GOSTEI 0