Hola a todos:
Aprovecho para deciros que me gusta el nuevo diseño de la página. Ahora tengo un problema que me lleva por la calle de la amargura, se trata de lo siguiente:
Tengo un procedimiento almacenado en una BD SQL 2000 y es este:
Código SQL
[-]
CREATE PROCEDURE FacturasVER
@Cliente Integer,
@FechaIni Char(10),
@FechaFin Char(10),
@Estado TinyInt
AS
DECLARE @Sql nVarChar(200)
BEGIN
SET @Sql = 'SELECT Facturas.*, Clientes.NombreEmpresa FROM Facturas'
SET @Sql = RTrim(@Sql)+ ' LEFT JOIN Clientes ON (Facturas.Cliente = Clientes.IdCliente)'
SET @Sql = RTrim(@Sql)+ ' WHERE Fecha >= ''' + @FechaIni + ''' AND Fecha <= ''' + @FechaFin + ''''
IF @Cliente > 0 SET @Sql = RTrim(@Sql)+ ' AND Cliente = ' + RTrim(CAST(@Cliente AS Char(4)))
IF @Estado = 1 SET @Sql = RTrim(@Sql)+ ' AND Cobrado = 0'
IF @Estado = 2 SET @Sql = RTrim(@Sql)+ ' AND Cobrado > 0'
EXECUTE SP_EXECUTESQL @Sql
END
GO
Este procedimiento esta registrado en un TADOStoreProcedure en y es ejecutado cuando se hace clic a un botón, cuyo evento es este:
Código Delphi
[-]
procedure TfrmFactura.BarraBtnsbtnBuscarClick(Sender: TObject);
begin
with DM.FacturasVER do begin
if Active then Close;
ProcedureName := 'FacturasVER;1';
Parameters.Refresh;
Parameters.FindParam('@Cliente').Value := 0;
Parameters.FindParam('@FechaIni').Value := '01/01/2006';
Parameters.FindParam('@FechaFin').Value := '31/12/' + IntToStr(CurrentYear);
Parameters.FindParam('@Estado').Value := 0;
Prepared := True;
Active := True;
end;
edCliente.SetFocus;
end;
El caso es que los datos se presentan en un dbgrid, al abrir la ventan la primera vez y hacer clic al botón correspondiente todo funciona bien, pero cuando se cierra la ventana y nuevamente se abre y se hace clic al botón sale el siguiente error:
'Violación de acceso en la dirección 4FF833E4 en módulo 'sqloledb.dll'. Leer dirección 00000018'
He probado todo lo que mis conocimentos da de sí, pero no logro dar con el fallo, si me ayudais les quedaré agradecido.
Muchas gracias.