Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   error raro en firebird (https://www.clubdelphi.com/foros/showthread.php?t=52604)

leo_037 25-01-2008 17:47:26

error raro en firebird
 
tengo una tabla con varios campos, por ejemplo clientes con los campos codigo, nombre e id_localidad. ejecuto la siguiente consulta: select * from clientes where id_localidad = 5000 y deberia devolverme 3 registros pero me devuelve 2, el que no me devuelve tiene el valor 5000 en el campo, pero como que no lo lee. me ocurre con registros nuevos, en algun registro cada tanto. alguna idea de que puede ser?

maeyanes 25-01-2008 17:49:33

Hola...

Transacciones...

El problema está a veces en las transacciones... en la aplicación cliente puede que dieron de alta a un cliente nuevo, pero la transacción sigue activa y mientras esta no se aplique, los otros clientes no verán los registros más nuevos...



Saludos...

leo_037 25-01-2008 17:56:22

son registros de ventas, el error me aparece cuando hago la consulta dias despues, en los listados de venta por dia. cuando me pasa eso reemplazo manualmente el valor por el mismo, pero lo escribo yo arriba, desde la base directamente, y se soluciona, como si hubiera basura en el dato que no permitiera la compracion

duilioisola 25-01-2008 21:49:53

El tipo del campo sea double precision?
Si es así, puede ser que donde ves 5000 en realidad haya 5000.0000001.
En este caso se soluciona cambiando el tipo a integer.

También puedes probar :
Código SQL [-]
select * from clientes where id_localidad >= 5000 and id_localidad <5001

Si el campo es varchar, puede ser que haya un espacio delante o detras del valor.
Se solucionaría "trimando" la cadena antes del insert/update (trim(id_localidad))

leo_037 26-01-2008 01:16:59

el campo es integer. creo que el problema debe estar en como el motor de firebird guarda el valor, porque a medida que la base de datos crece en tamaño (o la tabla) se empieza a repetir mas seguido, porque no se modifico en nada el codigo ni la base de datos. estuve investigando en paginas pero no se como llamarlo al error. gracias por el interes

Lepe 26-01-2008 03:32:21

versión de Firebird, Dialecto y por si acaso... componentes de acceso.... por favor ;).

Saludos

jachguate 26-01-2008 04:26:40

Debo decir en defensa de firebird que nunca he visto nada parecido, y creeme que he trabajado con bases de datos de tamaño considerable (millones de registros).

Hasta luego.

;)

duilioisola 26-01-2008 11:28:03

También se me ocurre que la base de datos pueda estár dañada.

Prueba a hacer un backup/restore
Prueba a hacer un gfix
Prueba a quitar el índice sobre ese campo y volver a crearlo.

Yo trabajo con bases de datos de 4.5Gb y no he tenido ningún problema con integer's.
Yo los utilizo mucho para unir cabecera/detalle de tablas.

leo_037 28-01-2008 23:23:29

Muchas gracias por el interes. Voy a probar todas las sugerencias. Por lo pronto el backup/restore no funciono. Voy a seguir con las demas. Nuevamente muchas gracias

Al González 29-01-2008 04:08:57

Al final, no dejes de comentarnos cuál fue el problema, por favor.

Saludos.

Al.

PepeLolo 03-02-2008 19:22:23

Hola,

Tengo que decir al igual que "jachguate", que eso no tiene sentido alguno.

"leo_037", estas completamente seguro que el tipo de campo es Integer?

El problema no estará en la consulta que realizas?

un saludo.


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

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