Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Varios
Register FAQ Members List Calendar Guía de estilo Search Today's Posts Mark Forums Read

Coloboración Paypal con ClubDelphi

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 03/05/2005
gatsoft2 gatsoft2 is offline
No confirmado
 
Join Date: Apr 2004
Posts: 11
Poder: 0
gatsoft2 Va por buen camino
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


....................

Last edited by gatsoft2 : 03/05/2005 at 18:40.
Reply With Quote
  #2  
Old 03/05/2005
droguerman's Avatar
droguerman droguerman is offline
Miembro
 
Join Date: Apr 2005
Location: tierra
Posts: 999
Poder: 22
droguerman Va por buen camino
no uso componentes zeos pero prueba esto antes de usar el locate
filter := 'Saldo>0';
filtered := true;
Reply With Quote
  #3  
Old 04/05/2005
gatsoft2 gatsoft2 is offline
No confirmado
 
Join Date: Apr 2004
Posts: 11
Poder: 0
gatsoft2 Va por buen camino
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.

Reply With Quote
  #4  
Old 04/05/2005
Lepe's Avatar
[Lepe] Lepe is offline
Miembro Premium
 
Join Date: May 2003
Posts: 7,424
Poder: 31
Lepe Va por buen camino
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.
Reply With Quote
  #5  
Old 04/05/2005
hermes_32's Avatar
hermes_32 hermes_32 is offline
Miembro
 
Join Date: Jul 2003
Posts: 94
Poder: 24
hermes_32 Va por buen camino
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?
Reply With Quote
  #6  
Old 04/05/2005
gatsoft2 gatsoft2 is offline
No confirmado
 
Join Date: Apr 2004
Posts: 11
Poder: 0
gatsoft2 Va por buen camino
Quote:
Originally Posted by Lepe
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
gracias por tu cooperación , pero al hacer el orden by la vista de la grilla

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.
Reply With Quote
  #7  
Old 04/05/2005
gatsoft2 gatsoft2 is offline
No confirmado
 
Join Date: Apr 2004
Posts: 11
Poder: 0
gatsoft2 Va por buen camino
Quote:
Originally Posted by hermes_32
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?
Gracias colega por su respuesta.

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.
Reply With Quote
  #8  
Old 04/05/2005
hermes_32's Avatar
hermes_32 hermes_32 is offline
Miembro
 
Join Date: Jul 2003
Posts: 94
Poder: 24
hermes_32 Va por buen camino
Me parece bien gatsoft2. Pero puedes usar lo que te dije para poder saber el ID en el que te tienes que posicionar.

Una vez que lo sabes puedes hacer:

Código Delphi [-]
  tabla.locate('ID', TuID, []);

Así tienes todos los registros en pantalla y posicionado donde querías.

Un saludo.
Reply With Quote
  #9  
Old 04/05/2005
gatsoft2 gatsoft2 is offline
No confirmado
 
Join Date: Apr 2004
Posts: 11
Poder: 0
gatsoft2 Va por buen camino
Quote:
Originally Posted by hermes_32
Me parece bien gatsoft2. Pero puedes usar lo que te dije para poder saber el ID en el que te tienes que posicionar.

Una vez que lo sabes puedes hacer:

Código Delphi [-]
tabla.locate('ID', TuID, []);

Así tienes todos los registros en pantalla y posicionado donde querías.

Un saludo.
Amigo HERMES_32, tu me dices en el fondo que lo haga de 3 pasos.
1.- ubicar el primer registro con saldo mayor a 0 con una query
2.- rehacer la query, pero mostrando todo
3.- luego usando el resultado del paso 1 hacer el locate.

No esta mal......., muchas gracias por tu tiempo , lo tendre presente.
Reply With Quote
  #10  
Old 05/05/2005
droguerman's Avatar
droguerman droguerman is offline
Miembro
 
Join Date: Apr 2005
Location: tierra
Posts: 999
Poder: 22
droguerman Va por buen camino
Intenta Esto

ya lo probé debería funcionar con tu problema:

Code:
  var
     marca : string;
    begin
  	with miDataset do
  	begin
  	  filter := 'Saldo>0';
  	  filtered := true;
  	  first;
  	  marca := bookmark;
  	  filtered := false;
  	  bookmark := marca;
    end;
     end;
Reply With Quote
  #11  
Old 06/05/2005
gatsoft2 gatsoft2 is offline
No confirmado
 
Join Date: Apr 2004
Posts: 11
Poder: 0
gatsoft2 Va por buen camino
gracias amigo DROGUERMAN,
Muy Inteligente tu solucion.

Estoy muy agradecido por tu ayuda y la de nuestros otros colegitas.
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT +2. The time now is 00:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi