Sts Procedure Verificar antes de Inserir Produto.

Delphi

11/05/2005

Pessoal estou desonvelndo sp. para adicionar um produto na falta + só vai adicionar quando ele nao estiver na mesma eu tentei assim + da este erro

Error Message:
----------------------------------------
Invalid token.
invalid request BLR at offset 280.

parameter mismatch for procedure ADICIONARFALTA.
Engracado que executando a procedure pelo Ib vai certinho é que disparo ela através de um gatilho !.

Outra questão é o seguinte preciso registrar tambem a data o dia então estou enviando assim ´now´ mas ai fica data e hora, não existe outra forma de ficar só a data

SET TERM ^ ;

CREATE PROCEDURE ADICIONARFALTA (
ICODIGO INTEGER,
SBARRAS VARCHAR(13),
SPRODUTO VARCHAR(40),
DQUANTIDADE DOUBLE PRECISION,
DCOMPRA DOUBLE PRECISION,
DVENDA DOUBLE PRECISION,
IMINIMO DOUBLE PRECISION,
SCAMPO1 VARCHAR(40),
SCAMPO2 VARCHAR(40),
SCAMPO3 VARCHAR(40),
SCAMPO4 VARCHAR(40),
DDATAPEDIDO DATE,
SSETOR VARCHAR(40),
SFORNECEDOR VARCHAR(40))
RETURNS (
RCODIGO INTEGER)
AS
begin
for select CODIGO
from TEMPRELATORIO
where (CODIGO = :ICODIGO)
into :RCODIGO
do
begin
suspend;
end
if (:Rcodigo is null)then
begin
insert into TempRelatorio
(CAMPO1, CAMPO2, CAMPO3, CAMPO4, CODIGO, CODIGO_BARRAS, DATAPEDIDO, FORNECEDOR,
MINIMO, PRECO_COMPRA, PRECO_VENDA, PRODUTO, QUANTIDADE, SETOR)
values
(:sCAMPO1, :sCAMPO2, :sCAMPO3, :sCAMPO4, :iCODIGO, :sBARRAS, :dDATAPEDIDO,
:sFORNECEDOR, :iMINIMO, :dCOMPRA, :dVENDA, :sPRODUTO, :dQUANTIDADE,
:sSETOR);
end
end
^

SET TERM ; ^


Obrigado a tds !


Essistemas

Essistemas

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

11/05/2005

Como vc executa sua SP na trigger? Para passar só a data use CURRENT_DATE.


GOSTEI 0
Essistemas

Essistemas

11/05/2005

Executo deste forma vc acredita que mesmo com o current_Date ele
grava data e hora no banco .
Obrigado !! se vc puder me da uma força nesta rotina fico grato !!
AS
begin
if (New.controlfalta=´T´) then
begin
if (New.quantidade >=New.Minimo) then
Execute Procedure ApagarFalta(New.codigo);
if (New.quantidade< New.Minimo) then
begin
Execute Procedure adicionarfalta(New.codigo,New.codigo_barras,
New.produto,New.quantidade,New.preco_compra,New.preco_venda,
new.minimo,New.campo1,New.campo2,New.campo3,New.campo4,Current_Date,new.setor,
New.fornecedor) ;
end
end
end


GOSTEI 0
Essistemas

Essistemas

11/05/2005

O current_date agora deu certinho valeu mesmo.
Só falta o outro abacaxi !!


GOSTEI 0
Gandalf.nho

Gandalf.nho

11/05/2005

Já vi qual é o seu problema. Sua SP tem um parâmetro de retorno e na hora de executá-la na trigger vc não colocou o código para receber o valor. Outra coisa, qual a finalidade do trecho abaixo, já que ele retorna o mesmo valor passado como parâmetro? Verificar a existência do código?

for select CODIGO from TEMPRELATORIO 
where (CODIGO = :ICODIGO) into :RCODIGO do 
begin 
suspend; 
end



GOSTEI 0
Essistemas

Essistemas

11/05/2005

É o seguinte só consegui fazer funcionar fazendo assim,
era um exemplo que eu tinha aqui, como eu executaria este sp e ao mesmo tempo pegar o retorno dela ?


GOSTEI 0
Gandalf.nho

Gandalf.nho

11/05/2005

Para chamar um SP executável com retorno de valores em SP e triggers, faça assim:

EXECUTE PROCEDURE nome_procedure parâmetros_entrada RETURNING_VALUES parâmetros_saída;



GOSTEI 0
Essistemas

Essistemas

11/05/2005

Puxa vc acredita que ainda estou enroladoo criei essa procedure a parte
p/ verificar a falta chamase verificar falta, mas com executo ela através do trigger e verifico se ela retornou null ou existe o produto lá
tipo assim
if verificarFalta(05) is nul Then
faça isto intendeu

for select CODIGO from TEMPRELATORIO
where (CODIGO = :ICODIGO) into :RCODIGO do
begin
suspend;
end
Obrigado !!!


GOSTEI 0
POSTAR