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)
-   -   Saber el valor de un Dataset (https://www.clubdelphi.com/foros/showthread.php?t=50879)

jocey 30-11-2007 15:34:58

Saber el valor de un Dataset
 
Buenas a toda la familia del club, hoy vengo con una nueva pregunta, miren tengo un ADODATASET y lo uso para hacer una consulta a una base de datos en SQL para filtrar por dos fechas, pero si le paso como fecha un intervalo que no existe en la tabla me da un error al abrir el DATASET como es de esperar, ahora les pongo el codigo para que vean lo que estoy tratando de hacer y me orienten, en escencia lo que quiero es saber cuando el DATASET encontro el rango de fechas y cuando no???

Gracias a todos ya de antemano


Código:

PathBD        := ExtractFilePath(Application.ExeName);
 CadenaConexion := 'Provider=SQLOLEDB.1;Password=center;Persist Security Info=True;User ID=center;Initial Catalog=CE;Data Source=jocey';
 DataSetrepofechas.ConnectionString := CadenaConexion;
 DataSetrepofechas.CommandText      := 'select * from principal WHERE principal.Fecha_Inicio Between  ''' + dia1 + ''' And ''' + dia2 + '''';
 if DataSetrepofechas.Recordset = nil then
 begin
 ShowMessage('Fuera de Fecha')
 end
  else
 begin
  DataSetrepofechas.Open;
  textcurso.Caption    := DataSetrepofechas.fieldbyname('Nombre_Curso').value;
 textlugar.Caption    := DataSetrepofechas.fieldbyname('Lugar_Ejecucion').value;
 textcliente.Caption  := DataSetrepofechas.fieldbyname('Cliente').value;
 textcontrato.Caption := DataSetrepofechas.fieldbyname('No_Contrato').value;
 textfecha.Caption    := DataSetrepofechas.fieldbyname('Fecha_Inicio').value;
 textestado.Caption  := DataSetrepofechas.fieldbyname('Estado_Curso').value;
 textdias.Caption    := DataSetrepofechas.fieldbyname('dias').value;
 formrefechas.QuickRep1.Preview;
 DataSetrepofechas.Last;
 DataSetrepofechas.Close;
 end;
 end;
 end;


tefots 30-11-2007 17:14:49

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

jocey 30-11-2007 18:30:27

Por Que?
 
Que paso amigo ? No me explique bien? bueno en fin ya lo resolvi el Dataset tiene una propiedad que se llama RecordCount y si esta en cero es que no tiene valores y si es mayor lo contrario, pero bueno me disculpan por mi pregunta mal formulada, aunque me parece que al responder esto se puede hacer saber con otra respuesta, aqui estamos para ayudarnos...... me parece

Lepe 30-11-2007 21:37:05

Hombre, 5 horas no es mucho desde que pusiste el original.

La base de datos dices ser SQL, pero no dices cual :confused:

En todo caso, el RecordCount no suele estar implementado en tablas SQL, ya que es costoso averiguar los datos.

Si no hay registros en un rango de fechas, no suele dar error nada, simplemente se muestra vacía la consulta. "DataSetrepofechas.IsEmpty" es true y puedes informar al usuario de que la consulta no devolvió datos, por ende, no es necesario ver el informe ni su presentación preliminar.

Deberías plantearlo así:
Código Delphi [-]
PathBD         := ExtractFilePath(Application.ExeName);
 CadenaConexion := 'Provider=SQLOLEDB.1;Password=center;Persist Security '+
    'Info=True;User ID=center;Initial Catalog=CE;Data Source=jocey';

 DataSetrepofechas.ConnectionString := CadenaConexion;
 DataSetrepofechas.CommandText      := 'select * from principal WHERE  Fecha_Inicio Between  :dia1 and :dia2';
 DataSetrepofechas.Parameters.Parambyname('dia1').Value := datetimepicker1.date;
 DataSetrepofechas.Parameters.Parambyname('dia2').Value := datetimepicker2.date;
  DataSetrepofechas.Open;
 if DataSetrepofechas.IsEmpty then
 begin
 ShowMessage('No hay registros ')
 end
  else
 begin
  textcurso.Caption    := DataSetrepofechas.fieldbyname('Nombre_Curso').value;
 textlugar.Caption    := DataSetrepofechas.fieldbyname('Lugar_Ejecucion').value;
 textcliente.Caption  := DataSetrepofechas.fieldbyname('Cliente').value;
 textcontrato.Caption := DataSetrepofechas.fieldbyname('No_Contrato').value;
 textfecha.Caption    := DataSetrepofechas.fieldbyname('Fecha_Inicio').value;
 textestado.Caption   := DataSetrepofechas.fieldbyname('Estado_Curso').value;
 textdias.Caption     := DataSetrepofechas.fieldbyname('dias').value;
 formrefechas.QuickRep1.Preview;
 DataSetrepofechas.Last;
 DataSetrepofechas.Close;
 end;
 end;
 end;
Así no tendrás tampoco problemas de formatos de fecha dd/mm/yyyy o mm/dd/yyyy etc.

Saludos


La franja horaria es GMT +2. Ahora son las 21:40:53.

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