Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Consulta sin resultados!!!! (https://www.clubdelphi.com/foros/showthread.php?t=4118)

Giniromero 02-10-2003 17:19:34

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

guillotmarc 02-10-2003 18:23:02

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.

marcoszorrilla 02-10-2003 18:30:13

También puedes usar:

IsEmpty;

Un Saludo.

__cadetill 02-10-2003 18:30:45

yo, personalmente, antes del RecordCount utilizaria

Código:

if Query.Fields[0].IsNull then
  // no hay resultados
else
  // sí hay resultados


Ruben_Cu 03-10-2003 01:13:43

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

__cadetill 03-10-2003 01:57:45

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%

roman 03-10-2003 07:03:06

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

guillotmarc 03-10-2003 10:56:53

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.

Giniromero 03-10-2003 13:17:41

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


La franja horaria es GMT +2. Ahora son las 16:39:51.

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