Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Resultado de un select vacio (https://www.clubdelphi.com/foros/showthread.php?t=8393)

jourdan 20-03-2004 01:17:32

Resultado de un select vacio
 
Hola a todos, ojala alguien me pueda ayudar, estoy desarrolando una
aplicacion en la que el telefono del cliente es el identificador del
mismo, tengo un edit y un boton en donde se escribe el telefono, se
hace click en el boton y se ejecuta un codigo el cual pasa el numero
de telefono como parametro y busca el nombre del cliente al que
corresponde ese telefono, lo que necesito hacer son dos cosas:

1.- Si el resultado del select es nulo, es decir no regresa ningun
valor abrir una forma para capturar un nuevo cliente.

2.- Si regresa mas de un valor abrir una forma en donde se pueda
escoger el nombre de uno de los varios clientes asignados a ese
telefono.

Mi duda es como puedo conocer una variable o algo de tal amnera que
lo pueda utilizar asi:

si resultado_del_select = 0 (null) then abre forma nuevo cliente
si resultado_del_select > 1 then abre forma y enseña los clientes
disponibles.

De antemano muchas gracias y saludos

marto 20-03-2004 01:58:41

Pues lo cierto es que no das demasiados datos sobre el tema (como que componentes usas para lanzar al query), pero, sea como sea, para saber qué numero ha devuelto tienes que consultar su propiedad RecordCount.

__cadetill 20-03-2004 11:48:11

Cita:

Empezado por marto
...para saber qué numero ha devuelto tienes que consultar su propiedad RecordCount.

Bueno, esto será cierto para bases de datos estilo Paradox y demás, pero para bases de datos transaccionales como Interbase/Firebird, dependerá mucho de los componentes de conexión utilizados y, seguramente, el valor de RecordCount no será correcto.

Para saber si una consulta NO devuelve valores, has de mirar el método IsEmpty del Query (creo que todos los componentes Query de Delphi la tienen, otra cosa será si utilizas componentes externos, que ya no lo aseguraría) haciendo algo similar a esto:

Código:

  Query.Open;
  if Query.IsEmpty then
    // abro formulario de entrada de registros
  else
    // lo que sea

Para saber seguro el número de registros que devuelve una consulta, creo que lo mejor que puedes hacer es lanzar una consulta con un count, validar que devuelva valores (sino devuelve presentas el formulario de altas) y merar el numero de registros (si es superior a 1, muestras el formulario de eleccion, volvuendo, en cualquier caso, a lanzar la consulta sin el Count)

Espero te sirva

roman 20-03-2004 22:02:05

Cita:

Empezado por cadetill
Para saber seguro el número de registros que devuelve una consulta, creo que lo mejor que puedes hacer es lanzar una consulta con un count, validar que devuelva valores (sino devuelve presentas el formulario de altas) y merar el numero de registros (si es superior a 1, muestras el formulario de eleccion, volvuendo, en cualquier caso, a lanzar la consulta sin el Count)

Ciertamente para muchas bases de datos es mejor esta opción para conocer el número de registros. Si no mal entiendo la razón por la cual RecorCount falla es porque el servidor de bases de datos manda los resultados conforme los vamos requiriendo de manera que RecordCount no será preciso sino hasta que recorramos todos los registros, lo cual puede ser muy costoso.

Sin embargo, en este caso particular es de esperar que el número de registros por número telefónico se pequeño- ¿cuántos pueden vivir en una misma casa? -de manera que podría evitarse la consulta con count haciendo un Query.Last para que RecordCount sea correcto.

// Saludos

jourdan 22-03-2004 17:27:42

Muchas gracias por sus respuestas y perdón por mandar tan poca información, la aplicación la estoy desarrollando con firebird 1, delphi 6 y utilizo los ibx.

Pense que podias ser con count pero no queria hacer dos consultas, la aplicacion la estoy desarrolando para cliente / servidor, voy a probar tambien con Query.IsEmpty para que abra la forma de captura.

Nuevamente muchas gracias y saludos


La franja horaria es GMT +2. Ahora son las 07:51:53.

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