PDA

Ver la Versión Completa : problemas con AdoDataset


jocey
08-01-2008, 18:16:46
Hola de Nuevo a la gran familia de este foro, amigos, yo tengo un programa en el cual realizo una consulta a una base de datos en SQL 2000, esta se realiza para consultar un rango entre dos fechas y los valores se muestran en un reporte con quickreport, el rango de fecha es seleccionado por el usuario de dos DateTimePicker, ahora mientras el usuario entre intervalos existentes en la tabla esto funciona de maravillas, ahora si selccionado un intervalo que no existe, me da un error diciendo que no puede realizar esa operacion con un Dataset ya abierto..... aqui les pongo el codigo para ver en que me pueden ayudar....

Muchas gracias por su tiempo


file:///C:/DOCUME%7E1/JOCEYR%7E1/CONFIG%7E1/Temp/moz-screenshot.jpgprocedure TFormfechas.Button1Click(Sender: TObject);
var dia1, dia2 : Tdatetime;
temp : String;
begin
dia1 := DateTimePicker1.Date;
dia2 := DateTimePicker2.Date;
if formtipo.Radiotiempo.Checked then // solo para consultar por fechas}
begin
with formrefechas do
begin

PathBD := ExtractFilePath(Application.ExeName);
CadenaConexion := 'Provider=SQLOLEDB.1;Password=H4E7FH3;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 ''' + DatetoStr(dia1) + ''' And ''' + DatetoStr(dia2) + '''';
DataSetrepofechas.Open;

if DataSetrepofechas.RecordCount = 0 then
begin
ShowMessage('No Existen Valores para que mostrar en su busqueda');
end
else
begin
try

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;
textcosto.Caption := DataSetrepofechas.fieldbyname('costo').value;
textmes.Caption := DataSetrepofechas.fieldbyname('Mesfact').value;
textano.Caption := DataSetrepofechas.fieldbyname('Anofact').value;

finally
formrefechas.QuickRep1.Preview;
DataSetrepofechas.Last;
DataSetrepofechas.Close;
end;
end;
end;
end;

waly2k1
09-01-2008, 05:27:26
Si te fijas cierras el datasource únicamente cuando hay registros, y al no cerrar te genera error cuando intentas abrirlo nuevamente.

Sino siempre que vayas a abrir, poné DataSetrepofechas.Active := false;
de esta manera está inactivo, generas la consulta y luego lo pones en true,
creo que con esto no tendrias problemas.

Salu2

jocey
09-01-2008, 13:59:20
Amigo, el problema es que cuando no tiene registros no se deja cerrar, me da error