GARANTIR DESCONTO

Fórum ver o tipo de campo do banco de dado no clientdataset #333277

17/11/2006

0

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:
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

Fabiotb

Responder

Posts

18/11/2006

Marco Salles

acredito ter várias maneiras...

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;



Responder

Gostei + 0

20/11/2006

Fabiotb

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???


Responder

Gostei + 0

20/11/2006

Marco Salles

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

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;



Responder

Gostei + 0

20/11/2006

Fabiotb

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


Responder

Gostei + 0

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

Aceitar