FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problema con GotoBookmark
Tengo un problema al recorrer los registros de un Grid que no consigo solucionar.
Lo que tengo es un listado de facturas y quiero recorrer los registros que selecciono y mostrar en un label la suma de los registros seleccionados. con este codigo funciona bien pero lo que ocurre es que el grid se va moviendo cuando selecciono los registros que están muy abajo y me gustaría que el grid se quedara exactamente en la misma posición.
Probé con este otro código pero al recorrer los registros cuando estaban ordenados por fecha descendentemente no se recorrian correctamente (se posiciobnaba en otro registro y no se porqué)
Gracias. |
#2
|
||||
|
||||
Si los registros del grid lo has obtenido con un select, entonce sólo añade el sum(campo) al select y el resultado lo asocias a un dbedit.
En cuanto a usar un TBookMark, como lo estás haciendo, me parece que estás asignando el bookmark en el bucle, a cada registro, quita esa línea. |
#3
|
||||
|
||||
Casimiro
me parece que el amigo quiere sumar solo los que estan marcados
__________________
Dulce Regalo que Satanas manda para mi..... |
#4
|
||||
|
||||
Vaya, entonces no he entendido bien la pregunta al decir: "pero lo que ocurre es que el grid se va moviendo cuando selecciono los registros que están muy abajo".
Se tendrá que mover el dbgrid para marcarlos, digo yo. O no acabo de entender la pregunta Si es sólo sumar los marcados entonces lo que he dicho antes está bien, creo, ya que sólo hace falta recorrer y comprobar si está seleccionado, pero no asignarle un bookmark a cada uno, como hace en el bucle. |
#5
|
||||
|
||||
Una cosa que veo en el primer código, es que no estás haciendo una llamada a EnableControls. Por otro lado, no me queda claro el problema que estás teniendo con el primer código.
Saludos, Chris |
#6
|
||||
|
||||
Pues ahora que lo veo más tranquilo, aparte de lo que dice Chris, no veo que esté mal.
Habrá que esperar que aclare glopez exactamente el problema. |
#7
|
|||
|
|||
Cita:
A ver que pasa ahora... |
#8
|
|||
|
|||
Es cierto que me falta
Q.EnableControls; al copiar el codigo me salte esa linea El problema exacto con el primer código es el siguiente: Imaginemos que tengo un grid con las siguientes lineas visibles Nº Frac nombre total 1 Pepe 5 2 Juan 7.5 3 Pedro 8 . . . 30 Antonio 475 Entonces después de seleccionar varios registros y ejecutarse el código anterior para recorrer los registros seleccionados y sumarlos (sólo los seleccionados). Puede que el primer registro que tenga visible ahora no sea la Factura 1 si no la 3 y la última la 33. Es decir los registros se han desplazado un poco hacia arriba. Espero haberme explicado bien. Gracias. |
#9
|
||||
|
||||
Cita:
Humm, sigo con la duda de haber entendido bién lo que buscas. Según entiendo deseas que cuando termines de seleccionar varios registros desde el DBGrid, haya hecho los scrolls que fueran, vuelva a posicionarse en el primero de la seleccion. Si es así, creo que tendrías que hacer algo como:
Un saludo.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#10
|
|||
|
|||
Intentare explicarme un poco mejor. Lo que quiero hacer es lo siguiente:
Tengo una tabla con 1000 lineas pero en el grid tengo visible sólo 10 lineas. 1 2 3 ... 10 y selecciono las lineas 2 y 8 haciendo click con el ratón. Quiero que después de recorrer las lineas seleccionas con GotoBookmark siga viendo los registros del 1 al 10 y no otros. |
#11
|
||||
|
||||
Hola glopez.
Soy medio duro de mollera pero ahora creo que te entendí... Una solución que se me ocurre es crearte al vuelo una consulta apuntando a la misma tabla y obtener el dato de ella utilizando el BookmarkList del DBGrid: (asumo que la tabla involucrada se llama: TU_TABLA) Al no realizarse posicionamiento sobre la consulta relacionada al TDBGrid, este permanecerá inamovible. Como no especificaste con que motor de BD ni componentes estas trabajando hice el ejemplo con Firebird/IBX, reemplazá por los componentes que utilices. Un saludo.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#12
|
|||
|
|||
Co la mollera mala estamos más de uno, pero ahora si me has entendido bien. Pero si te fijas en el segundo código que puse al principio yo hacia lo mismo que me explicas ahí.
Pero no entiendo porque a veces no se posiciona en los registros correctamente. Me pasa que algunas veces en vez de irse a unos de los registros que tengo seleccionado se me queda en el anterior. Utilizo Firebird y IBX pero he probado con FibPlus y tambien falla ya estoy pensando que puede que sea el Grid (ExDBGrid). Pero lo que no comprendo es que cuando recorro la consulta (Q) que esta directamente asociada al Grid no falla. Sólo pasa a veces y casi siempre cuando ordeno el listado por fecha descendentemente. Gracias. |
#13
|
||||
|
||||
Hola glopez.
Cita:
Seguramente no lo he probado tán a fondo como vos, y por eso no he detectado el fallo. Voy a revisar con cuidado y cualquier novedad que encuentre te comento. Un saludo.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#14
|
||||
|
||||
Hola de nuevo.
Cita:
Y en la consulta secundaria: Lo cuál es lógico por que en la consulta relacionada al DBGrid se ha alterado el órden mediante 'ORDER BY FECHA DESC'. Se solucionó immediatamente con:
Un saludo.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 06-10-2011 a las 23:05:44. |
#15
|
|||
|
|||
Hola ecfisa, si te fijas bien en el 2 codigo que pongo a Q2 le asigno exactamente la misma sentencia que tiene la consulta asociada al Grid Q.
Q2.SQL.Assign(Q.SQL); Es decir ambas son identicas. Lo único que hago y que no puse en el código para no liar más es después de asignar: Q2.SQL<-Q.SQL. es sustituir la linea de: select numero, nombre, fecha,... por select * que lo hago así Q2.SQL[0]:='select *' y en la primera linea del SQL sólo hay eso. Ej: select numero, nombre, fecha,... from facturas where ... order by fecha desc |
#16
|
||||
|
||||
Hola glopez.
Entonces realmente no se que decirte ya que hice muchas pruebas con el código del mensaje #11 y se comportó correctamente. Quizá, como comentás en un mensaje anterior, el problema lo provoque el componente ExDBGrid... Un saludo.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#17
|
|||
|
|||
Muchas gracias de todas formas. Estoy pensando en cambiar el Grid pero me supone muchos cambios y lo estoy dejando un poco. cuando lo haga ya te comentaré.
Un Saludo. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
GotoBookMark | BPL | Varios | 5 | 08-09-2010 20:52:47 |
GotoBookMark en TClientDataSet | jzginez | Conexión con bases de datos | 0 | 30-08-2006 17:11:25 |
Ayuda de Delphi - Gotobookmark | juanchi | Conexión con bases de datos | 4 | 21-02-2004 18:43:51 |
|