Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-05-2008
Edgtho Edgtho is offline
Miembro
 
Registrado: abr 2006
Posts: 47
Poder: 0
Edgtho Va por buen camino
Problemas con clientdataset y limit

Buenas,

Primero no se si esta opcion tendria que ir aqui o en provider, si esta mal que el moderador lo cambie.

Segundo, me ha surgido un problema con los clientdataset del que todavia no salgo de mi asombro, en la SQL que lo alimenta se pone la clausula LIMIT para poder traer menos registros y mostrar como si fueran paginas. He comprobado que en determinadas ocasiones el CLIENT me devuelve menos registros de los que esta establecido en el limit.

Imaginaros lo siguiente, tengo una tabla con 500 registros y la siguiente SQL

select * from clientes limit 20,10

Esto en teoria mostraria 10 clientes concretamente del 21 al 30, pues bien en el client a veces en vez de retornarme 10 registros me devuelve 3 ó 5 ó 6 ó los que le da la gana.


Me hundo en un mar de confusiones. ¿A que puede ser debido?

Un saludoy gracias por la respuesta
__________________
Dios es real a menos que sea declarado entero

Última edición por Edgtho fecha: 29-05-2008 a las 08:47:18.
Responder Con Cita
  #2  
Antiguo 29-05-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
¡Hola!

De entrada debes mencionar qué base de datos utilizas y considera que la tabla puede tener realmente menos de 30 registros.

Desconocía eso de "Limit" ya que no es del estándar SQL (que yo sepa).

También te faltó mencionar qué componentes utilizas para conectarte a la base de datos y ejecutar la consulta.

Esperamos retroalimentación.

Al González.
Responder Con Cita
  #3  
Antiguo 29-05-2008
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Cita:
Empezado por Al González Ver Mensaje
¡Hola!

De entrada debes mencionar qué base de datos utilizas y considera que la tabla puede tener realmente menos de 30 registros.

Desconocía eso de "Limit" ya que no es del estándar SQL (que yo sepa).

También te faltó mencionar qué componentes utilizas para conectarte a la base de datos y ejecutar la consulta.

Esperamos retroalimentación.

Al González.

Es Mysql,

Limit mysql, Top Sql Server y otros, RowNum Oracle, Fetch N Rows Forward Only Db2, Y así.
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #4  
Antiguo 29-05-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Ese MySQL siempre tan rebelde. Mira que usar el "limit" al final y no al comienzo de la sentencia....

Por cierto, te faltó el de Firebird, Edgar: First.

Saludos.

Al.
Responder Con Cita
  #5  
Antiguo 29-05-2008
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Cita:
Empezado por Al González Ver Mensaje

Por cierto, te faltó el de Firebird, Edgar: First.


Al.


jajaj, buen complemento amigo AL, pero firebird no es un motor que me guste. (No digo que sea malo o bueno, solo no cumple con mis necesidades)

Saludos.
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #6  
Antiguo 29-05-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por poliburro Ver Mensaje
jajaj, buen complemento amigo AL, pero firebird no es un motor que me guste. (No digo que sea malo o bueno, solo no cumple con mis necesidades)

Saludos.
oout, perdone usted.
Responder Con Cita
  #7  
Antiguo 30-05-2008
[Andreano] Andreano is offline
Miembro Premium
 
Registrado: sep 2006
Posts: 155
Poder: 18
Andreano Va por buen camino
InterBase 7.x y 2007

ROWS value
[TO upper_value]
[BY step_value]
[PERCENT][WITH TIES]

Ejemplos

SELECT SALESMAN, SALES_DOLLARS, SALES_REGION
FROM SALESPEOPLE
ORDER BY SALES_DOLLARS DESC
ROWS 1 TO 50;

SELECT SALESMAN, SALES_DOLLARS, SALES_REGION
FROM SALESPEOPLE
ORDER BY SALES_DOLLARS DESC
ROWS 50 TO 100 WITH TIES;

Si puede utilizar en Updates y Deletes

Saludos,
Andreano
Responder Con Cita
  #8  
Antiguo 30-05-2008
Edgtho Edgtho is offline
Miembro
 
Registrado: abr 2006
Posts: 47
Poder: 0
Edgtho Va por buen camino
Buenas, el problema no es con la base de datos por eso no la especifique. Ahora que os confirmo que es MYSQL 5.

Continuo haciendo pruebas y he descubierto algo bastante extraño, he creado una aplicacion nueva que contiene un client y un dbgrid completamente nuevecitos (para probar de forma aislada) y parece no fallar nunca.

Es posible que me toque eliminar el form y volverlo a crear de nuevo porque se haya jodido el componente. (cosa plausible ya que es una migracion de Delphi7 a Delphi2007)
__________________
Dios es real a menos que sea declarado entero
Responder Con Cita
  #9  
Antiguo 31-05-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por Andreano Ver Mensaje
InterBase 7.x y 2007

ROWS value
[TO upper_value]
[BY step_value]
[PERCENT][WITH TIES]

Ejemplos

SELECT SALESMAN, SALES_DOLLARS, SALES_REGION
FROM SALESPEOPLE
ORDER BY SALES_DOLLARS DESC
ROWS 1 TO 50;

SELECT SALESMAN, SALES_DOLLARS, SALES_REGION
FROM SALESPEOPLE
ORDER BY SALES_DOLLARS DESC
ROWS 50 TO 100 WITH TIES;

Si puede utilizar en Updates y Deletes

Saludos,
Andreano
Muy interesante Andreano, desconocía esa característica de InterBase.

Saludos.

Al.
Responder Con Cita
  #10  
Antiguo 31-05-2008
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por Edgtho Ver Mensaje
Buenas, el problema no es con la base de datos por eso no la especifique. Ahora que os confirmo que es MYSQL 5.

Continuo haciendo pruebas y he descubierto algo bastante extraño, he creado una aplicacion nueva que contiene un client y un dbgrid completamente nuevecitos (para probar de forma aislada) y parece no fallar nunca.

Es posible que me toque eliminar el form y volverlo a crear de nuevo porque se haya jodido el componente. (cosa plausible ya que es una migracion de Delphi7 a Delphi2007)
Revisa la propiedad PacketRecords del ClientDataSet, probablemente lo que necesitas es que su valor sea igual a -1, ya que estas definiendo la cantidad de registros a mostrar desde la BD.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #11  
Antiguo 02-06-2008
Edgtho Edgtho is offline
Miembro
 
Registrado: abr 2006
Posts: 47
Poder: 0
Edgtho Va por buen camino
Lo he revisado y ya estaba en "-1", hoy os contare si consigo algo ya que voy a eliminar los componentes y volverlos a crear.
__________________
Dios es real a menos que sea declarado entero
Responder Con Cita
  #12  
Antiguo 02-06-2008
Edgtho Edgtho is offline
Miembro
 
Registrado: abr 2006
Posts: 47
Poder: 0
Edgtho Va por buen camino
Es la cosa mas rara que me he podido encontrar pero... se ha solucionado eliminando los componentes y volviendolos a poner ¡¡con las mismas opciones puestas!!
__________________
Dios es real a menos que sea declarado entero
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
Problemas con el MasterSource en un ClientDataset ygkw Conexión con bases de datos 2 05-03-2015 22:59:59
Problemas con Clientdataset.Open; jmlifi Varios 1 16-11-2006 13:51:13
Problemas con ClientDataSet evento OnChange jmlifi Varios 2 30-10-2006 09:42:49
problemas a la hora de abrir un ClientDataset jmlifi Conexión con bases de datos 4 01-06-2006 12:28:20
Problemas con DBExpress - ClientDataset argami Conexión con bases de datos 4 26-07-2004 11:21:12


La franja horaria es GMT +2. Ahora son las 11:43:19.


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