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 09-08-2005
pjjorda pjjorda is offline
Miembro
 
Registrado: jul 2005
Posts: 34
Poder: 0
pjjorda Va por buen camino
SQL error code = -303 ¿como solucionar?

Saludos cordiales,
tengo en una tabla firebird 1.5, un campo definido como MIN01 NUMERIC(3,2),
y le asigno el valor 480 y me da el error del título.

Lo hago así: TABLA.FIELDBYNAME('MIN01').ASFLOAT:=480;
y al hacer TABLA.POST; da el error.

también desde IBEXPERT le intento poner el valor al campo, y al cambiar de registro da el mismo error.

Agradecería información de donde conseguir el listado de los errores de SQL,
o si me decís como solucionar este error puntual.

Gracias por anticipado.
Responder Con Cita
  #2  
Antiguo 09-08-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Esto fue lo que encontre con una pequeña búsqueda en yahoo sobre "SQL Error Codes", espero que te pueda servir.

Cita:
Empezado por el Link anterior: Error 303
A FETCH, SELECT, CALL, SET, or VALUES INTO cannot be performed because the data type of host variable &2 is not compatible with the data type of the corresponding list item.
  • When selecting a date value, a character host variable must be at least 6 bytes for a Julian date, at least 8 bytes for a date in the MDY, YMD, DMY formats, or at least 10 bytes for all other formats.
  • When selecting a time value, a character host variable must be at least 8 bytes for a time in the USA format and at least 5 bytes for all other formats.
  • When selecting a timestamp value, a character host variable must be at least 19 bytes.
  • If the host variable is C NUL-terminated and the program was compiled with *CNULRQD option, then an additional byte is required for the NUL-terminator for date/time values.
  • The relative position of the host variable in the INTO clause, the SQLDA, or the CALL statement is &1. If the host variable name is *N, an SQLDA was specified on a FETCH statement.
Ensure that the data types are compatible for each of the corresponding list items. Ensure the host variables are defined correctly for date, time, and timestamp values.
Más información sobre Códigos de error en SQL (en ingles)

¿porque no pruebas asignar 480.00 en lugar de solo 480? Igual y funciona.
__________________


Última edición por ContraVeneno fecha: 09-08-2005 a las 16:42:25.
Responder Con Cita
  #3  
Antiguo 09-08-2005
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

En los manuales de interbase 6 hay un listado de todos los errores.

Bajatelos aqui
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #4  
Antiguo 09-08-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Prueba tambien hacer esto:
TABLA.FieldValues['MIN01']:=480;
__________________

Responder Con Cita
  #5  
Antiguo 09-08-2005
cahp cahp is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 90
Poder: 21
cahp Va por buen camino
Hola,

Por lo que tengo entendido, InterBase guarda el físicamente el valor como smallint, integer o double precision.

Precision de 1 a 4 smallint, de 5 a 9 integer y partir de 9 double

Tu campo definido como MIN01 NUMERIC(3,2), lo multiplica por 100 para guardarlo y guarda la escala (el numero de decimales) en una tabla del sistema para despues restaurar el numero original.

Saludos.
Responder Con Cita
  #6  
Antiguo 10-08-2005
pjjorda pjjorda is offline
Miembro
 
Registrado: jul 2005
Posts: 34
Poder: 0
pjjorda Va por buen camino
Gracias a todos,
intenté grabar 480,00 y me da el mismo error,
en el fichero LANGREF.PDF de la documentación de Interbase no he visto el error -303,
y en la respuesta de Contraveneno hace referencias a campos date,time, etc.
He cambiado la definición del campo de NUMERIC (3,2) a (5,2) y a funcionar, me parece un poco raro.

Repito las GRACIAS, da gusto ver que hay personas dispuestas a ayudar a los que estamos empezando.
Responder Con Cita
  #7  
Antiguo 11-08-2005
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
resp

Si no puedes con el enemigo unetele.

Declara el campo como double prescion
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
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


La franja horaria es GMT +2. Ahora son las 04:11:09.


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