Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-04-2021
muli muli is offline
Miembro
 
Registrado: jun 2003
Ubicación: A Coruña
Posts: 194
Poder: 21
muli Va por buen camino
Invalid class typecast

Hola buenos dias, estoy totalmente desencajado con este error que me sale ahora en Delphi Rio, lo llevo usando desde Delphi 6 y nunca tuve ningún problema, resulta que cuando abro una consulta(query) recorro los campos del mismo y asigno propiedades de displayformat, trabajo con Firebird 2.5 y pongo el código en cuestión, antes no usaba la variable campo

Código Delphi [-]
Procedure TDatos.Query1AfterOpen(DataSet: TDataSet);
var
  n:Integer;
  Campo : String;

begin
  For N:=0 to Query1.FieldCount-1 Do
  Begin
    if Query1.Fields[n].DataType =  ftBCD then
    Begin
      (Query1.Fields[N] as tBCDfield).displayformat:='##,##0.00 €';
    End;
    Campo:=UpperCase(Query1.Fields[N].FieldName);
    if Campo='GRAVAME' then
    Begin
      (Query1.Fields[N] as tBCDfield).displayformat:='##,##0.00 %';
    End;
    if Campo='BONIFICACION' then
    Begin
      (Query1.Fields[N] as tBCDfield).displayformat:='##,##0.00 %';
    End;
  End;
end;
__________________
SI UN PROBLEMA TIENE SOLUCION, YA NO ES UN PROBLEMA, Y SI NO LA TIENE PARA QUE PREOCUPARSE.
Responder Con Cita
  #2  
Antiguo 08-04-2021
Garada Garada is offline
Miembro
 
Registrado: jul 2004
Posts: 66
Poder: 20
Garada Va por buen camino
Buenas.

No debes usar la misma clase que asignaría Delphi a esos campos.

Añade la consulta y los campos en diseño y echa un vistazo para averiguar que clase asigna a esos campos para que la uses en vez de tBCDfield
O revisa Query1.Fields[N].classname en tiempo de ejecución.
Responder Con Cita
  #3  
Antiguo 08-04-2021
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Coincido con el amigo Garada.

Te propongo lo siguiente:
Código Delphi [-]

Procedure TDatos.Query1AfterOpen(DataSet: TDataSet);
var
  i:Integer;
  Sufix:String;
begin
     For i:=0 to Query1.FieldCount-1 Do
     Begin
            Sufix:='€';
          if (Query1.Fields[i].Fieldname='GRAVAME' or Query1.Fields[i].Fieldname='BONIFICACION') then
             Sufix:='%'
          endif

          Case (Query1.Fields[i].DataType) Of
              ftSmallint:TSmallIntField(Query1.Fields[i]).DisplayFormat :='##,##0 '+Sufix;
              ftInteger :TIntegerField(Query1.Fields[i]).DisplayFormat  :='##,##0 '+Sufix;
              ftFloat   :TFloatField(Query1.Fields[i]).DisplayFormat   :='##,##0.00 '+Sufix;
          End;
     End;
end;
Saludos cordiales
Responder Con Cita
  #4  
Antiguo 08-04-2021
muli muli is offline
Miembro
 
Registrado: jun 2003
Ubicación: A Coruña
Posts: 194
Poder: 21
muli Va por buen camino
Gracias por vuestras aportaciones. He visto que lo que antes era

tBCDfield ahora es tFMTBCDfield

Y en el DataType

ftBCD ahora es ftFMTBCD

Cambiando eso ya todo funciona como antes. El campo en la base de datos está definido como Numeric(15,2).

Saludos. a todos.
__________________
SI UN PROBLEMA TIENE SOLUCION, YA NO ES UN PROBLEMA, Y SI NO LA TIENE PARA QUE PREOCUPARSE.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema en RAVE 6.0.2 RvLEModule.pas "Invalid class typecast". JoseQ Impresión 2 13-11-2007 12:40:02
Invalid class typecast en rave JoseQ Impresión 1 13-11-2007 12:36:38
Invalid Class Typecast FGarcia Varios 11 13-07-2006 20:34:07
Invalid TypeCast Enan0 Varios 3 28-02-2005 16:13:59
Invalid call typecast - As TMenuItem dmguridi Varios 4 14-01-2005 15:49:32


La franja horaria es GMT +2. Ahora son las 01:17:26.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi