Célido 0 Denunciar post Postado Agosto 12, 2014 Fala Galera, Bom Dia / Noite Estou tentando desenvolver um sistema de parcelas, disparado por uma trigguer. mas esta dando varios erros. segue a trigger: USE `u575681646_memb`; DELIMITER $$ CREATE DEFINER=`root`@`localhost` TRIGGER xxx AFTER INSERT ON contaspagar FOR EACH ROW begin Declare x int; Declare Parcelas int; set x = 0; set Parcelas = "SELECT MAX(IdPag), Parcelas From contaspagar ORDER BY IdPag DESC LIMIT 1"; while x <=Parcelas DO Insert into baixas1 (IdPag,Emissao,Fornecedor,Descricao,CentroCustos,VlrPag,Parcelas,ContaRec,TipoAtiv) Values (new.IdPag,new.Emissao,new.Fornecedor,new.Descricao,new.CentroCustos,new.VlrPag,new.Parcelas,new.ContaRec,new.TipoAtiv); set x=x+1; end while; end esta ocorrendo : Failed to execute SQL. Error: Incorrect integer value: 'SELECT MAX(IdPag), Parcelas From contaspagar ORDER BY IdPag DESC LIMIT 1' for column 'Parcelas' at row 1 o Campo Parcelas é INT, bem como o IdPag é INT, auto incremendo. Alguem teria uma idéia de como desenrolar a bagaça? a Ideia : O Usuario Preenche o Valor e o Numero de Parcelas. Ao INSERIR na Tabela Contas a Pagar ele Atualiza o Parcelamento e as baixas. os registros de acordo com as parcelas. EM PHP ja fiz, atrave s de codigo. mas eu queria usar TRIGGER. pois o sistema sera desenvolvido em todas as linguagens ASP ASP NET PHP ETC......; o BD é MYSQL...... Valeu!!!!!!!!!! Célido Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Agosto 12, 2014 Substitua o "" por (): [inline]"SELECT MAX(IdPag), Parcelas From contaspagar ORDER BY IdPag DESC LIMIT 1";[/inline] para [inline](SELECT MAX(IdPag), Parcelas From contaspagar ORDER BY IdPag DESC LIMIT 1);[/inline] Como esta query roda no db, ela entende que o valor passado para a variável Parcelas é uma String. Não tenho certeza, mas acho que MAX() funciona somente junto com GROUP BY, não me lembro ao certo... Compartilhar este post Link para o post Compartilhar em outros sites
Célido 0 Denunciar post Postado Agosto 12, 2014 Obrigado pela atençao. Fora da TRIGGER funciona: SELECT Parcelas From contaspagar ORDER BY IdPag DESC LIMIT 1; Mas ao Processar a TRIGGER ele nao pega o Campo, e nao Efetua o TRIGGUER. Quaisquer sugestoes serão bem vindas. Agradeço. Célido Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Agosto 12, 2014 Outra maneira de fazer é assim: SELECT Parcelas INTO @Parcelas From contaspagar ORDER BY IdPag DESC LIMIT 1; Dessa forma ele joga o resultado na variável Compartilhar este post Link para o post Compartilhar em outros sites
Célido 0 Denunciar post Postado Agosto 13, 2014 Galera. Apos Comentarios de Todos e um pouco de logica. cheguei a resoluçao. USE `u575681646_memb`; DELIMITER $$ CREATE DEFINER=`root`@`localhost` TRIGGER xxx AFTER INSERT ON contaspagar FOR EACH ROW begin Declare x int; set x = 1; set @PRC = (SELECT Parcelas From u575681646_memb.contaspagar ORDER BY IdPag DESC LIMIT 1); while x <=@PRC DO Insert into baixas1 (IdPag,Emissao,Fornecedor,Descricao,CentroCustos,VlrPag,Parcelas,ContaRec,TipoAtiv) Values (new.IdPag,new.Emissao,new.Fornecedor,new.Descricao,new.CentroCustos,new.VlrPag,new.Parcelas,new.ContaRec,new.TipoAtiv); set x=x+1; end while; end Ate mais. Obrigado Célido Compartilhar este post Link para o post Compartilhar em outros sites