Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-11-2004
Avatar de javiermorales
javiermorales javiermorales is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 272
Poder: 21
javiermorales Va por buen camino
Cambio ordenador, componentes no funcionan

Hola a todos/as, he tenido que cambiar de ordenador y de SOP, he pasado de WMe a WXp Profesional. Trabajo con Delphi 7 y todo ha ido bien al compilar de nuevo mi aplicación. El problema aparece en los campos LookUpComboBox, funcionan bien (es decir sacan el valor asociado y cuando te mueves entre registros se actualizan bien), pero no actualizan el valor asociado a dichos campos cuando introduces un nuevo registro.

Es decir tengo un LookUp de Obras (donde me aparece el nombre de la obra) y lo tengo asociado al código de la obra, cuando creo un nuevo registro no actualiza el valor del código de la obra en el campo y al guardar el registro como forma parte de la CP no me deja guardar un valor null.

No he cambiado nada, salvo que la instalación de las Rx la he hecho con instalador en frances que se recomendaba en algún hilo.

Los campos donde dá el problema son del tipo "TDBLookupComboBox".

Por favor , es muy urgente.
__________________
Se hace lo que se puede que siempre es menos de lo que se dice
Responder Con Cita
  #2  
Antiguo 09-11-2004
Avatar de javiermorales
javiermorales javiermorales is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 272
Poder: 21
javiermorales Va por buen camino
Un apunte más. He cambiado de Access Xp a Access 2003.
__________________
Se hace lo que se puede que siempre es menos de lo que se dice
Responder Con Cita
  #3  
Antiguo 09-11-2004
Avatar de javiermorales
javiermorales javiermorales is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 272
Poder: 21
javiermorales Va por buen camino
Otro apunte, las relaciones Maestro/Detalle, no introduce de manera automática los campos del Maestro en el Detalle al crear un nuevo registro en el Detalle
__________________
Se hace lo que se puede que siempre es menos de lo que se dice
Responder Con Cita
  #4  
Antiguo 10-11-2004
Avatar de javiermorales
javiermorales javiermorales is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 272
Poder: 21
javiermorales Va por buen camino
Por favor, cualquier idea será muy bien recibida.
__________________
Se hace lo que se puede que siempre es menos de lo que se dice
Responder Con Cita
  #5  
Antiguo 10-11-2004
Avatar de javiermorales
javiermorales javiermorales is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 272
Poder: 21
javiermorales Va por buen camino
No es que no funcionen los componentes, la BD, la conexión o las actualizaciones de los detalles, el problema reside en que al cambiar de sistema, el motor de base de datos no permite que se hagan cálculos con campos que tengan el valor null.

Es decir, con el antiguo sistema, se podía poner un campo calculado que realizase el calculo de una multiplicación entre valores de un registro y si alguno de ellos era null, le asignaba al resultado el valor cero. pero ahora lo que ocurre es que salta un "raised exception" en la clase "EVariantTypeCastError" con el mensaje "no se puede convertir variant de tipo (Null) al tipo (Double)".

Ejemplo:
Código Delphi [-]
procedure TDM.DSeF1CalcFields(DataSet: TDataSet);
begin
    DataSet.FieldValues['TotIRPF'] := RoundEuros(DataSet.FieldValues['F1_BASE2']*
                                      (DataSet.FieldValues['F1_RIRPF']/100));
end;
Este código antes no fallaba y aunque "F1_BASE2" o "F1_IRPF" fuesen Null, se le asignaba cero al resultado. Ahora aparece el error indicado y además no te indica la línea de código donde falla (se vá a la última línea del proyecto).

Se soluciona poniendo:
Código Delphi [-]
procedure TDM.DSeF1CalcFields(DataSet: TDataSet);
begin
  if (DataSet.FieldValues['F1_BASE2']=null) or
     (DataSet.FieldValues['F1_BASE2']=0) or
     (DataSet.FieldValues['F1_RIRPF']=null) or
     (DataSet.FieldValues['F1_RIRPF']=0) then
    DataSet.FieldValues['TotIRPF'] := 0
  else
    DataSet.FieldValues['TotIRPF'] := RoundEuros(DataSet.FieldValues['F1_BASE2']*
                                      (DataSet.FieldValues['F1_RIRPF']/100));
end;
Pasa lo mismo con una asignación a una etiqueta de un valor null
Código Delphi [-]
Obras.Label1.Caption := DataSource1.DataSet.FieldValues[OBR_NOM];
antes no le ponía nada y le asignaba null sin que pasase nada y ahora salta el error.

Esto hace que tenga que repasar por completo toda la aplicación.
¿Alguien conoce alguna solución?
__________________
Se hace lo que se puede que siempre es menos de lo que se dice
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 18:48:29.


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