Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Problema con Parambyname y dataset (https://www.clubdelphi.com/foros/showthread.php?t=49067)

Rockin 11-10-2007 21:37:49

Problema con Parambyname y dataset
 
Tengo el siguiente codigo:
if login.tipo_usuario = 'Operador' then
begin
datDatos.FIBDataSetICCSVentas.Active:= False;
datDatos.FIBDataSetICCSVentas.SelectSQL.Text:='SELECT * FROM ventas where vendedor = :vendedor order by fechaventacons asc';
datDatos.FIBDataSetICCSVentas.ParambyName('vendedor').AsString:= frmlogin.txtUsuario.Text;
datDatos.FIBDataSetICCSVentas.Active:= True;
DBGridConsultaVentas.Columns[0].Width:= 75;
DBGridConsultaVentas.Columns[1].Width:= 75;
DBGridConsultaVentas.Columns[2].Width:= 250;
DBGridConsultaVentas.Columns[3].Width:= 85;
DBGridConsultaVentas.Columns[4].Width:= 150;
DBGridConsultaVentas.DataSource:= datDatos.datSourceICCSVentas;
grpOperador.Visible:= false;

end
else
datDatos.FIBDataSetICCSVentas.Active:= False;
datDatos.FIBDataSetICCSVentas.SelectSQL.Text:='SELECT * FROM ventas order by fecha_venta asc';
datDatos.FIBDataSetICCSVentas.Active:= True;
DBGridConsultaVentas.Columns[0].Width:= 75;
DBGridConsultaVentas.Columns[1].Width:= 75;
DBGridConsultaVentas.Columns[2].Width:= 250;
DBGridConsultaVentas.Columns[3].Width:= 90;
DBGridConsultaVentas.Columns[4].Width:= 150;
DBGridConsultaVentas.DataSource:= datDatos.datSourceICCSVentas;
end;


Lo que hace es mostrar una serie de ventas. Si eres operador solo puedes ver tus ventas por eso se le pasa el Parambyname, pero me da el siguiente error: can´t changue sql text because FIBDataSetIccsVentas.SelectQuery
dataset open.

Da el error pero ejecuta la consulta y lo hace bien. NO se que hacer, porque tengo otra consulta para las fechas y me funciona bien.

Me da el error cuando pongo en el codigo datDatos.FIBDataSetICCSVentas.ParambyName('vendedor').AsString:= frmlogin.txtUsuario.Text;


¿Donde me puedo equivocar?Me vuelvo loco

Saludos.

GerTorresM 11-10-2007 21:58:22

Cerrar el Dataset.
 
La verdad es que no he trabajado con tu base de datso, pero en lo que logre ver de tu codigo, te podría seguerir los siguiente:

1. antes de cambiar la propiedad text de la consulta o del dataset, debes cerrarla con .close, a continuación limpiar la cadena con. clear y finalmente escribir la nueva cadena y abrir.

siempre que lo hago así no tengo problema en Access o PostGresSQL

Espero que mi comentario te sirva de algo.


GerTorresM.
Colombia es Pasión

Rockin 11-10-2007 22:08:42

He hecho lo que me has comentado pero nada. Tengo otra consulta que ademas del pasar el parametro vendedor para las fechas de consulta, con las fechas no me da error el parambyname, pero al meter el parametro vendedor se jode la cosa. No se que hacer.
Gracias por tu pronta respuesta.

Lepe 11-10-2007 22:46:40

Si ese es el código que usas, en el else falta el begin ... end

Puesto que la linea Active := false debe ejecutarse siempre, ponlo antes que el if login.tipo_usuario = 'Operador' then
Lo mismo para todas esas líneas que son comunes (el alto, el datasource, etc).

Saludos

Rockin 12-10-2007 00:10:47

Muchas gracias, ya me va de puta madre.

Que Dios te lo pague en dolares.

Saludos


La franja horaria es GMT +2. Ahora son las 16:18:15.

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