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 02-10-2003
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
Consulta sin resultados!!!!

Hola a todos,

Trabajo con una aplicación hecha en delphi 6 con IB 7, y dialecto 3.

¿Cómo puedo expresar, esto



IF (el resultado de la consulta es nulo, esto es, no se han encontrado registros que coincidan con los parametros insertados ) THEN BEGIN
(haz A);
END
ELSE BEGIN
(haz B);
END;




en delphi?

Muchas gracias

Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)
Responder Con Cita
  #2  
Antiguo 02-10-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Hola

¿ Te sirve RecordCount ?

Código:
qryConsulta.Params.ParamValues['PARAM1'] = 'XXXX';
qryConsulta.Open;
if qryConsulta.RecordCount = 0 then begin
  // No hay Resultados
end
else begin
  // Hay Resultados
end;
Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 02-10-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
También puedes usar:

IsEmpty;

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 02-10-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
yo, personalmente, antes del RecordCount utilizaria

Código:
if Query.Fields[0].IsNull then
  // no hay resultados
else
  // sí hay resultados
Responder Con Cita
  #5  
Antiguo 03-10-2003
Ruben_Cu Ruben_Cu is offline
No confirmado
 
Registrado: oct 2003
Ubicación: Mariel, Cuba
Posts: 271
Poder: 0
Ruben_Cu Va por buen camino
Hola a todos, tambien pudiera utilizar las propiedades BOF y EOF de la siguiente manera:
Código:
IF bof and eof THEN BEGIN
(haz A);
END
ELSE BEGIN
(haz B);
END;
Yo no estoy seguro que la propuesta de cadetill responda en todos los casos creo que pueden existir registros devueltos en el resultado de una consulta y que el valor del fields[0] en el registro corriente sea null y eso no significa que no exista un resultado del query incluso con muchos registros.
O sea, entiendo que IsNull se aplica al valor de un registro para determinado campo y no al conjunto de registros de un dataset. ¿Es así?
Saludos
Responder Con Cita
  #6  
Antiguo 03-10-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Cita:
Posteado originalmente por Ruben_Cu
O sea, entiendo que IsNull se aplica al valor de un registro para determinado campo y no al conjunto de registros de un dataset. ¿Es así?
Sacado de la ayuda de Delphi
Cita:
If IsNull is True, the field is blank. If IsNull is False, the field has a value.
Se seguimos al pie de la letra la definición, en el caso de que el primer campo del registro en curso sea NULL, como NULL es un valor en si, devolvería false.

No obstante, creo que no me he encontrado nunca con esa coincidencia (por el tipo de selects que lanzo cuando lo utilizo), por lo que tampoco lo aseguraría al 100%
Responder Con Cita
  #7  
Antiguo 03-10-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Esta vez difiero del amigo cadetill.

Tengo una tabla cuyo primer campo de su primer registro es null y Query.Fields[0].IsNull devuelve cierto con la consulta

select * from tabla

de manera que no es una opción para determinar si la consulta devuelve o no resultados.

Yo creo que IsEmpty es lo más adecuado, este precisamente es el objetivo de dicho método y así está implementado desde TDataSet, la madre de todos los datasets, mientras que RecordCount está implemntado para devolver -1 en TDataSet y ya dependerá de los descendientes si lo implementan o no.

// Saludos
Responder Con Cita
  #8  
Antiguo 03-10-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Hola, creo que técnicamente Null es más un estado que un Valor, es decir es un estado que anuncia la ausencia de valor. Por eso el IsNull devuelve True sobre un campo nulo de un registro existente.

Aunque para mi esa condición también serviria, puesto que practicamente todas (por no decir todas) mis consultas tienen como primer campo (además es el primer campo definido en las tablas) la clave primaria del registro devuelto. Asi pués, si el campo es nulo es que no hay registro. Imagino que Cadetill también hace las consultas de esta forma, de manera que esa condición siempre es valida para él.

Pero ciertamente, estoy de acuerdo en que la mejor manera de ver si hay registros es utilizar el IsEmpty (está justamente para esto).

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #9  
Antiguo 03-10-2003
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
Muchas gracias por vuestra ayuda,

Finalmente puse algo parecido a lo que me aconsejó guillotmarc, con su RecordCount = 0, y parece que funciona.

Lo dicho, que gracias.

Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)
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


La franja horaria es GMT +2. Ahora son las 01:08:50.


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