![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Hola,
como es un asunto de componentes de acceso, muevo el hilo desde "InterBase y Firerbird" a "Conexión con bases de datos". Saludos. |
|
#2
|
|||
|
|||
|
Perdonar mi torpeza, pero, ......
1) ¿tengo que "abrir" el StoredPRoc, como con las tablas, esto es: IBStoredPRoc.Active := True;? 2) En la ayuda que tengo de Ib me dicen que tengo que usar "prepare" para el IBStoredPRoc. Después dentro de un try lo ejecutarlo con ExecProc y en el finally le hago un "unprepare" para liberar los recursos que este estuviera usando. Ahora, me comentais que ... Cita:
Me podríais, si no es mucha molestia, explicar para que sirbe, y como usar, cada uno de estos comandos relaccionados con el IBStoredPRoc? Por que me estoy haciendo un lío, y no parece que consigua hacerlo funcionar. Muchas gracias por todo, Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :) |
|
#3
|
|||
|
|||
|
A ver, un IBStoredProc tienes que planteartelo "como si fuera" una TIBQuery con parámetros. Es decir, a un procedimiento almacenado, tu puedes pasarle parámetros si los necesitas (que puedes definirlos en la propiedad Params del mismo), que es lo que te comenta Nuria con lo de
Código:
BP.ParamByName('Parametro').AsInteger := Para;
Código:
BP.ExecProc; |
|
#4
|
||||
|
||||
|
Cita:
Cita:
Cita:
Saludos! |
|
#5
|
|||
|
|||
|
Hola,
este es mi código: Cita:
Si lo comento, al menos me deja entrar en la ventana en cuestión, pero este procedimiento está conectado con un DBgrid, que no muestra nada, asíque parece como si ni siquiera se llegase a abrir el procedimento. hay algo que se me esté escapando? GRacias por la ayuda. Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :) |
|
#6
|
||||
|
||||
|
Hola Giniromero!
Una sugerencia, has probado el procedimiento por el ibConsole o algún programa similar, igual lo que te falla es el procedimiento. Haz la comprobación desde ahí a ver si te devuelve registros. Podías indicar el código del procedimiento. Saludos! |
|
#7
|
|||
|
|||
|
Hola Nuria,
El procedimiento funciona perfectamente desde IBExpert, que es, de hecho, donde lo he creado. Me devuelve 300 registros más o menos que son los pendientes de pago. Por ahí no hay ningún problema. El tema es que no sé como abrir el procedimiento desde la aplicación. Te cuento lo que tengo, para ver si me falta algo. Tengo un procedure creado en IB, (usando IBExpert), que tiene el siguiente código: Código:
CREATE PROCEDURE PROECONOPAGO (
NUMALUACT SMALLINT)
RETURNS (
CODIGO INTEGER,
NUMALU SMALLINT,
NUMGRUP SMALLINT,
FECHA TIMESTAMP,
ASIENTO INTEGER,
CONCEPTO VARCHAR(50),
IMPDEBE NUMERIC(15,2),
IMPHABER NUMERIC(15,2),
FORPAGO SMALLINT,
RECIBO VARCHAR(10),
FACTURA VARCHAR(10),
USUARIO VARCHAR(10),
TIPO VARCHAR(1),
EMPRESATXT VARCHAR(1),
CONTROL VARCHAR(1))
AS
DECLARE VARIABLE VCODIGO INTEGER;
DECLARE VARIABLE VNUMALU SMALLINT;
DECLARE VARIABLE VNUMGRUP SMALLINT;
DECLARE VARIABLE VFECHA TIMESTAMP;
DECLARE VARIABLE VASIENTO INTEGER;
DECLARE VARIABLE VCONCEPTO VARCHAR(50);
DECLARE VARIABLE VIMPDEBE NUMERIC(15,2);
DECLARE VARIABLE VIMPHABER NUMERIC(15,2);
DECLARE VARIABLE VFORPAGO SMALLINT;
DECLARE VARIABLE VRECIBO VARCHAR(10);
DECLARE VARIABLE VFACTURA VARCHAR(10);
DECLARE VARIABLE VUSUARIO VARCHAR(10);
DECLARE VARIABLE VTIPO VARCHAR(1);
DECLARE VARIABLE VPRODUCTOGRUP VARCHAR(2);
DECLARE VARIABLE VEMPRESAPRO VARCHAR(1);
begin
for select CODIGO, NUMALU, NUMGRUP, FECHA, ASIENTO, CONCEPTO, IMPDEBE,
IMPHABER, FORPAGO, RECIBO, FACTURA, USUARIO, TIPO
from ECONO
WHERE NUMALU =:NUMALUACT
order by numalu
into
:VCODIGO,:VNUMALU,:VNUMGRUP,:VFECHA,:VASIENTO,:VCONCEPTO,:VIMPDEBE,
:VIMPHABER, :VFORPAGO,:VRECIBO,:VFACTURA,:VUSUARIO,:VTIPO do
begin
select PRODUCTO from grupos where NUMGRUP =:vnumgrup into :vproductogrup ;
select EMPRESA from produ where PRODUCTO=:vproductogrup into :vempresapro;
If (:vasiento <2 AND :vimpdebe <> 0 ) Then Begin
CODIGO = :VCODIGO;
NUMALU = :VNUMALU;
NUMGRUP = :VNUMGRUP;
FECHA = :VFECHA;
ASIENTO = :VASIENTO;
CONCEPTO = :VCONCEPTO;
IMPDEBE = :VIMPDEBE;
IMPHABER = :VIMPHABER;
FORPAGO = :VFORPAGO;
RECIBO = :VRECIBO;
FACTURA = :VFACTURA;
USUARIO = :VUSUARIO;
TIPO = :VTIPO;
EMPRESATXT =:vempresapro;
suspend;
end
end
end
El TIBStorePRo tiene las siguientes propiedades: Cita:
Este TIbStoreProc tiene un DataSource enlazado a él. Este DataSource está relacionado con el DBGrid de la ventana en la que quiero se muestren los registros de los apunte económicos pendientes de pago, que, como te comenté antes, salen vacios, como si no lo ejecutase. El código que utilizo para abrir este procedimiento es: Código:
screen.cursor := crHourGlass;
FrmEfePago := TFrmEfePago.Create(Self);
Screen.cursor := crDefault;
TRY
FrmDMOdule.IBTransFXProce.Active := false;
if not FrmDModule.IBTransFXProce.InTransaction then begin
FrmDModule.IBTransFXProce.StartTransaction;
end;
FrmDModule.TbEconoPago.ParamByName('numaluACT').AsInteger := FrmDModule.TbAlumnosNUMALU.AsInteger;
FrmDModule.TbEconoPago.Prepare;
FrmDMOdule.IBTransFXProce.Active := true;
FrmDModule.TbEconoPago.ExecProc;
//si NO hay registros de deudas
if FrmDmodule.TbEconoPago.RecordCount = 0 then begin
showmessage('No existen efectos a pagar !!!');
end
else begin // Si hay registros de deudas
//inserta un registro
FrmDmodule.TbEcono.Append;
//mostramos como modal el form
FrmEfePago.ShowModal;
end;
FrmDMOdule.IBTransFXProce.Commit;
FINALLY
FrmEfePago.Free;
//liberamos recursos usados con el Procedure
FrmDMOdule.TbEconoPago.UnPrepare;
END;
Muchas gracias por la ayuda, Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :) |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|