PDA

Ver la Versión Completa : problema con AdoDataset


jocey
13-11-2007, 17:18:15
Hola a la maravillosa familia del foro, miren tengo problemas con una consulta a una base de datos y al mostrar los resultddos en un reporte con quickreport, pero pasa que cuando lo ejecuto por primera vez todo sale bien, y cuando trato de consultar por otro valor me dice 'Can not perform this operation on an open Dataset', vaya se que es que el Dataset esta abierto, pero bueno, les adjunto el codigo para ver si me pueden corregir.... Saludos de antemanos.
Jocey


with formdepartamento do
begin
PathBD := ExtractFilePath(Application.ExeName);
CadenaConexion := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + PathBD + 'data.mdb';
DataSetreportdep.ConnectionString := CadenaConexion;
DataSetreportdep.CommandText := 'select * from principal' + ' WHERE (((principal.departamento)=''' + Formparametros.Combodepa.Text + ''' ))';;
DataSetreportdep.Open;
begin
QRDBdep.Caption := DataSetreportdep.fieldbyname('Departamento').value;
QRDBuser.Caption := DataSetreportdep.fieldbyname('usuario').value;
QRDBsetup.Caption := DataSetreportdep.fieldbyname('setup').value;
QRDBred.Caption := DataSetreportdep.fieldbyname('red').value;
QRDBref.Caption := DataSetreportdep.fieldbyname('Refrescador').value;
QRDBcorreo.Caption := DataSetreportdep.fieldbyname('correo').value;
QuickRep1.Preview;

Caro
13-11-2007, 17:31:28
Hola jocey, te falta hacer un close antes de ejecutar otra vez tu consulta.


DataSetreportdep.Close;
DataSetreportdep.CommandText := 'select * from principal' + ' WHERE (((principal.departamento)=''' + Formparametros.Combodepa.Text + ''' ))';
DataSetreportdep.Open;


Saluditos

Al González
13-11-2007, 17:33:31
Coloca DataSetreportdep.Close; como inicio de ese bloque.

Y usa la etiqueta "[ Delphi ]". ;)

Saludos.

Al González. :)

Caral
13-11-2007, 17:33:43
Hola
Que complicado lo veo, pero bueno:
Tal vez asi:

with formdepartamento do
begin
PathBD := ExtractFilePath(Application.ExeName);
CadenaConexion := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + PathBD + 'data.mdb';
DataSetreportdep.ConnectionString := CadenaConexion;
DataSetreportdep.Close;
DataSetreportdep.CommandText := 'select * from principal' + ' WHERE (((principal.departamento)=''' + Formparametros.Combodepa.Text + ''' ))';;
DataSetreportdep.Open;
begin
QRDBdep.Caption := DataSetreportdep.fieldbyname('Departamento').value;
QRDBuser.Caption := DataSetreportdep.fieldbyname('usuario').value;
QRDBsetup.Caption := DataSetreportdep.fieldbyname('setup').value;
QRDBred.Caption := DataSetreportdep.fieldbyname('red').value;
QRDBref.Caption := DataSetreportdep.fieldbyname('Refrescador').value;
QRDBcorreo.Caption := DataSetreportdep.fieldbyname('correo').value;
QuickRep1.Preview;
Es lo que se me ocurre.
Saludos

poliburro
13-11-2007, 17:33:45
(((principal.departamento)=''' + Formparametros.Combodepa.Text + ''' ))';;



no será la doble comilla?

Al González
13-11-2007, 17:34:42
Me ganaste por un minuto Caro. :D

jocey
13-11-2007, 17:53:53
Miren ya habia tratado se cerrarlo tal y como me lo explico caral y algunos de ustedes y miren el error que me da

file:///C:/DOCUME%7E1/JOCEYR%7E1/CONFIG%7E1/Temp/moz-screenshot.jpgfile:///C:/DOCUME%7E1/JOCEYR%7E1/CONFIG%7E1/Temp/moz-screenshot-1.jpg'El valor de BOF o EOF es true', o el actual registro se elimino, la operacion solicitada requiere un registro actual'

Disculpen tantas molestias

Caral
13-11-2007, 18:07:36
Hola
Pregunta:
Que es formdepartamento.
Saludos

jocey
13-11-2007, 18:14:49
formdepartamento es un Form

Caral
13-11-2007, 18:21:46
Hola
perdon pero no entiendo, tal vez nos puedas explicar mas.
Con el codigo que muestras se abre una base de datos access y se ejecuta una sentencia sql, posteriormente se ejecuta en un qreport.
Perdon, pero que tiene que ver que no encuentre un JPG.?
file:///C:/DOCUME%7E1/JOCEYR%7E1/CONFIG%7E1/Temp/moz-screenshot.jpg
file:///C:/DOCUME%7E1/JOCEYR%7E1/CONFIG%7E1/Temp/moz-screenshot-1.jpg
No se si estoy equivocado, me corrigen.
Saludos

Caral
13-11-2007, 18:40:12
Hola
Aqui ya estoy especulando:

with formdepartamento do
begin
DataSetreportdep.Active:= False;
PathBD := ExtractFilePath(Application.ExeName);
CadenaConexion := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + PathBD + 'data.mdb';
DataSetreportdep.ConnectionString := CadenaConexion;
DataSetreportdep.CommandText := 'select * from principal' + ' WHERE (((principal.departamento)=''' + Formparametros.Combodepa.Text + ''' ))';;
DataSetreportdep.Active:= True;
begin
QRDBdep.Caption := DataSetreportdep.fieldbyname('Departamento').value;
QRDBuser.Caption := DataSetreportdep.fieldbyname('usuario').value;
QRDBsetup.Caption := DataSetreportdep.fieldbyname('setup').value;
QRDBred.Caption := DataSetreportdep.fieldbyname('red').value;
QRDBref.Caption := DataSetreportdep.fieldbyname('Refrescador').value;
QRDBcorreo.Caption := DataSetreportdep.fieldbyname('correo').value;
QuickRep1.Preview;
Se le ocurre algo mas a alguien?
Saludos

jocey
13-11-2007, 21:36:08
hola mira, esto ultimo que pones tiene mucha logica, pero bueno sigue dando el mismo error, no tengo idea de como y pq pase esto, al parecer el activar y desctivar es lo mismo o parecido al Open y Close, asi que por favor si alguien mas tiene otra idea, de esa brillante que a ustedes se les ocurre, estare en espera de sus modestas y sabias desiciones.


Saludos a todos.
Jocey

Caral
13-11-2007, 21:44:38
Hola
A ver:

with formdepartamento do
begin
try
PathBD := ExtractFilePath(Application.ExeName);
CadenaConexion := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + PathBD + 'data.mdb';
DataSetreportdep.ConnectionString := CadenaConexion;
DataSetreportdep.CommandText := 'select * from principal' + ' WHERE (((principal.departamento)=''' + Formparametros.Combodepa.Text + ''' ))';;
DataSetreportdep.Active:= True;
begin
QRDBdep.Caption := DataSetreportdep.fieldbyname('Departamento').value;
QRDBuser.Caption := DataSetreportdep.fieldbyname('usuario').value;
QRDBsetup.Caption := DataSetreportdep.fieldbyname('setup').value;
QRDBred.Caption := DataSetreportdep.fieldbyname('red').value;
QRDBref.Caption := DataSetreportdep.fieldbyname('Refrescador').value;
QRDBcorreo.Caption := DataSetreportdep.fieldbyname('correo').value;
QuickRep1.Preview;
finally
DataSetreportdep.Active:= False;
end;

Intentemos con un try, finally, la idea seria que en cuento se haga el reporte se finalice la accion del dataset.
No le hagas mucho caso a este Novato de todos modos.
Saludos

jocey
13-11-2007, 22:23:17
Empezando caral no creo que seas un novato, pero bueno ademas en caso de que lo seas, entonces este novatisimo a aprendido mucho de ti, mira intente esta solucion y ya me trabaja bien, mira a ver que opinas



procedure TFormparametros.Button2Click(Sender: TObject);
begin
with formdepartamento do
begin
try
PathBD := ExtractFilePath(Application.ExeName);
CadenaConexion := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + PathBD + 'data.mdb';
DataSetreportdep.ConnectionString := CadenaConexion;
DataSetreportdep.CommandText := 'select * from principal' + ' WHERE (((principal.departamento)=''' + Formparametros.Combodepa.Text + ''' ))';;
DataSetreportdep.Active := true;
begin
QRDBdep.Caption := DataSetreportdep.fieldbyname('Departamento').value;
QRDBuser.Caption := DataSetreportdep.fieldbyname('usuario').value;
QRDBsetup.Caption := DataSetreportdep.fieldbyname('setup').value;
QRDBred.Caption := DataSetreportdep.fieldbyname('red').value;
QRDBref.Caption := DataSetreportdep.fieldbyname('Refrescador').value;
QRDBcorreo.Caption := DataSetreportdep.fieldbyname('correo').value;
QuickRep1.Preview;
end
finally
if DataSetreportdep.Bof or DataSetreportdep.Eof then
DataSetreportdep.Last ;
DataSetreportdep.Close;
end;
end;
end;

Caral
13-11-2007, 22:51:23
Hola
Bueno si te trabaja bien, pues excelente, si me pides opinion?, nunca he trabajado con los dataset, de hecho solo lo mire en delphi para tratar de entenderlo asi que imaginate que puedo opinar, solo que eres un maestro.
Me alegro que lo resolvieras.
Saludos

jocey
13-11-2007, 23:09:41
Bueno caral, el maestro eres tu, pero bueno, muchas gracias por tu seguimiento y prestar parte de tu tiempo a resolver los problemas de otros.


Gracias de Corazon

Salu2 Jocey