FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
locate condicional
Queridos amigos.
como siempre recurro a vuestra buena voluntad cuando no soy capaz de resolver algo. el caso es el siguiente: trabajo con : 1.- Delphi 6 2.- Mysql 3.- Componentes Zeos Quiero ubicar el primer registro que cumpla una condicion dentro de una query Ejemplo : (Ubicar el primer registro con saldo mayor a cero, de todos los reg de la zona 789 generados con la query) para lo cual creo una query que me entrega 6 registros como resultado . la idea es ubicar el primero de esos que cumpla una condicion. por ejemplo que su saldo sea > 0 Resultado de la Query Reg.... ID_zona.. Saldo 1 ........789......... 0 2 ........789......... 0 3 ........789......... 0 4 ........789......... 1 -> Ubicar este, pues su Saldo es mayor a cero 5 ........789......... 2 6 ........789........ 44 ósea necesito un locate condicional para hacer la búsqueda sobre la qry algo así como saldo>0 Nota : QRY.Locate('Saldo',1,[loCaseInsensitive,loPartialKey]'); que seria ubicar saldo=1 No me sirve pues yo no se cual es el valor que resultara como saldo primero. Solo se que sera mayor que cero. de antemano Muchas Gracias .................... Última edición por gatsoft2 fecha: 03-05-2005 a las 18:40:50. |
#2
|
||||
|
||||
no uso componentes zeos pero prueba esto antes de usar el locate
filter := 'Saldo>0'; filtered := true; |
#3
|
|||
|
|||
Gracias amigo mío por tu respuesta
pero al hacer el filter me mostrara solo los que cumplen esa condición y lo malo es que el resultado total de la query se debe mostrar en una grilla. ósea también se deben mostrar los con saldo cero. |
#4
|
||||
|
||||
Otra solución es usar ORDER BY saldo desc, para obtener primero los que son mayor que cero.
Como ultimo recurso, si necesitas el resultado exactamente así, es recorrer todo el dataset con un bucle. Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#5
|
||||
|
||||
Buenas gatsoft2.
En mysql puedes hacer una sentencia para que recupere el primer registro de un grupo que cumple una condicion. Uy qué lio!! Vamos que puedes hacer: SELECT * FROM Tabla WHERE Saldo > 0 ORDER BY Reg LIMIT 1 Esto te recupera el primer valor que te interesa. Creo haber entendido eso, ¿no? |
#6
|
|||
|
|||
Cita:
pero el problema con esta solución es que solo se verán los registros con saldo mayor a cero y el caso es que deben verse todos. y ademas ubicar el primero con saldo mayor a cero sin desordenar la vista (query). gracias por tu ayuda. |
#7
|
|||
|
|||
Cita:
también se vera afectada, por lo tanto no me serviría. ahora parece ser que recorrer como dices tu, con un while la query es la solución mas inmediata pero no la que trataba de encontrar (en ultima instancia tendré que hacer esto). muchas gracias. |
#8
|
||||
|
||||
Intenta Esto
ya lo probé debería funcionar con tu problema:
Código:
var marca : string; begin with miDataset do begin filter := 'Saldo>0'; filtered := true; first; marca := bookmark; filtered := false; bookmark := marca; end; end; |
#9
|
|||
|
|||
gracias amigo DROGUERMAN,
Muy Inteligente tu solucion. Estoy muy agradecido por tu ayuda y la de nuestros otros colegitas. |
|
|
|