Fórum delphi mysql controle de estoque #520729
23/05/2015
0
segue o codigo:
CREATE DEFINER = 'root'@'localhost'
PROCEDURE estoque.procedure_estoque(in prod int, qtd int, idprod int )
BEGIN
IF EXISTS (select * from prod where prod.estoque < qtd and prod.prodid = idprod ) THEN
update prod set prod.estoque = prod.estoque - qtd
where prod.prodid = idprod;
else
select 'Nova quantidade, menor que o estoque !' as Mensagem;
end if;
END
quando chamo no delphi ele baixa o estoque, porem quando a quantidade é maior ele lança o item mais nao baixa nada no estoque
Nei
Curtir tópico
+ 0Posts
25/05/2015
Dorivan Sousa
voce ta verificando se existe o produto e se o estoque é maior que a quantidade que voce ta vendendo...
select 'Nova quantidade, menor que o estoque !' as Mensagem;
end if;
aqui voce retorna uma mensagem quando o estoque é menor, voce ta tratando essa mensgem no programa, depois de executar a procedure voce ta lendo o retorno dela para avisar o usuario que o item tem o estoque inusificente?
Gostei + 0
25/05/2015
Nei
Gostei + 0
25/05/2015
Dorivan Sousa
Gostei + 0
25/05/2015
Nei
Gostei + 0
25/05/2015
Nei
Gostei + 0
25/05/2015
Dorivan Sousa
Gostei + 0
25/05/2015
Dorivan Sousa
DStoredProc1.StoredProcName := 'MY_PROC'; FDStoredProc1.Prepare; FDStoredProc1.Params[0].Value := 100; FDStoredProc1.Params[1].Value := 'audi'; FDStoredProc1.ExecProc;
Gostei + 0
25/05/2015
Nei
Gostei + 0
27/05/2015
Dorivan Sousa
essa sua procedure tem as duas funcoes, eu nao sei bem como funciona isso no mysql, a sua procedure nao retorna uma excecao ela retorna um campo chamado mensagem com o valor 'Nova quantidade, menor que o estoque !'... eu tentaria executar a procedure e ver os fields do fdstoredproc se o valor do campo mensagem for igual Nova quantidade, menor que o estoque !' avisaria ao usuario.
Gostei + 0
27/05/2015
Dorivan Sousa
select 'Nova quantidade, menor que o estoque !' as Mensagem;
ao que me parece retorna como uma mensagem de sistema, voce pode testar isso no console do mysql com o comando CALL e voce passa os parametros de um item com a quantidade insuficiente que voce vai ver o retorno da mensagem... se for realmente isso acho que pelos fields do fdstoredproc não vai ver essa mensagem ja que nao tem o parametro de retorno... nesse link [url]http://docwiki.embarcadero.com/RADStudio/XE5/en/Executing_Commands_(FireDAC)#Getting_DBMS_Feedback[/url] mostra como ver o feedback do DB...
var
i: Integer;
begin
FDConnection1.ResourceOptions.ServerOutput := True;
FDQuery1.FetchOptions.AutoClose := False;
FDQuery1.Open('select * from Region; print ''Hello''');
FDMemTable1.Data := FDQuery1.Data;
Memo1.Lines.Add(Format('%d rows processed', [FDMemTable1.RecordCount]));
FDQuery1.NextRecordSet;
if FDConnection1.Messages <> nil then
for i := 0 to FDConnection1.Messages.ErrorCount - 1 do
Memo1.Lines.Add(FDConnection1.Messages[i].Message);
end;
veja se a mensagem 'Nova quantidade, menor que o estoque !' não esteja retornando ai
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)