FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Delphi 7 y Access 2003
Hola a todos/as, he comenzado el hilo en OOP, pero conforme investigo en el problema parece ser más correcto ponerlo en este foro.
Antes trabajaba con WMe, Delphi 7 y Access 2000 pero he tenido que cambiar de ordenador pasando a WXp Profesional, Delphi 7 y Access 2003. La aplicación compiló sin ningún error pero aparece un problema, no funciona correctamente en lo siguiente (de momento): 1.- No actualiza el valor del campo relacionado en los TDBLookupComboBox 2.- En 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 Por favor es muy urgente que alguien me eche una mano. Gracias de antemano.
__________________
Se hace lo que se puede que siempre es menos de lo que se dice |
#2
|
||||
|
||||
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: 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: Pasa lo mismo con una asignación a una etiqueta de un valor null 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 |
#3
|
||||
|
||||
Lo que realmente es extraño es que te funcionara anteriormente ya que la versión de Delphi es la misma y me parecería extraño que se debiera al cambio de versión de Access.
Pero bueno, cosas más raras he visto . En Delphi está la variable global NullStrictConvert que determina qué hacer cuando se debe convertir un valor Null en otro tipo de datos. Su valor por defecto es true, que significa que se lanzará la excepción EVariantTypeCastError, tal como te ocurre. Si NullStrictConvert es false, se convierte de acuerdo al tipo de datos destino como sigue:
Así que, de acuerdo a esto, basta que pongas NullStrictConvert := false. // Saludos |
#4
|
||||
|
||||
Muchas gracias Roman, lo pruebo inmediatamente.
Gracias de nuevo.
__________________
Se hace lo que se puede que siempre es menos de lo que se dice |
#5
|
||||
|
||||
Roman, funciona perfectamente. Gracias de nuevo
__________________
Se hace lo que se puede que siempre es menos de lo que se dice |
|
|
|