Tbaiano Postado Novembro 22, 2004 Denunciar Share Postado Novembro 22, 2004 Essa TRIGER não Está gravando no banco ela soma direitinho mas não grava...E o detalhe que só soma o 1 registro da TABLEColoquei BEFORE em UPDATEASbegin planinq.vltotal = planinq.vlcond + planinq.vldmae + planinq.vlcext;endSe alguém puder me ajudar... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Novembro 22, 2004 Denunciar Share Postado Novembro 22, 2004 Olá Tbaiano,que banco você ta usando?posta sua trigger completa, falou!!! Abs. Progr'amador. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Tbaiano Postado Novembro 22, 2004 Autor Denunciar Share Postado Novembro 22, 2004 Usando FireBird 1.5 com o IBExpert a Triger Completa é:SET SQL DIALECT 3;SET NAMES NONE;SET TERM ^ ;CREATE TRIGGER TRIG_PLANINQ_GRAVAR FOR PLANINQACTIVE BEFORE UPDATE POSITION 0ASbegin planinq.vltotal = planinq.vlcond + planinq.vldmae + planinq.vlcext + planinq.vlcext1 + planinq.vlfreserv + planinq.vlcee + planinq.vlbox + planinq.vlgas + planinq.vldesbanc + planinq.vlsalfest + planinq.vlmulta + planinq.vlsegur + planinq.vlport + planinq.vlimpez + planinq.vlelev + planinq.vlsalenc + planinq.vldiv1 + planinq.vldiv2 + planinq.vldiv3 + planinq.vldiv4;end^SET TERM ; ^*****Valeu por ajudar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Novembro 22, 2004 Denunciar Share Postado Novembro 22, 2004 heheh!!! , bem, é um pouco diferente da que eu conheço,mas tenta fazer assim:em vez de: ACTIVE BEFORE UPDATE POSITION 0use assim: ACTIVE BEFORE INSERT OR UPDATE POSITION 0Abs. Progr'amador. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Tbaiano Postado Novembro 22, 2004 Autor Denunciar Share Postado Novembro 22, 2004 Eu já tinha feito isso e ele continua dando a mesma coisa que é:Só funciona para o primeiro registro, agora não se consegue inserir nada nos outros registros nesse campo, só no primeiro que funciona perfeitamente... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Novembro 22, 2004 Denunciar Share Postado Novembro 22, 2004 Olha quando eu disse que era diferente do que conheço, é que eu começo uma trigger dessa forma por exemplo:CREATE TRIGGER TRIG_PLANINQ_GRAVAR BEFORE INSERT OR UPDATE ON PLANINQFOR EACH ROW BEGIN... etc ...... etc ...Abs. Progr'amador. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Tbaiano Postado Novembro 22, 2004 Autor Denunciar Share Postado Novembro 22, 2004 Eu Crio Assim:CREATE TRIGGER TRIG_PLANINQ_GRAVAR FOR PLANINQACTIVE BEFORE INSERT OR UPDATE POSITION 0ASBEGIN......endO IBexpert que coloca a aqueles ^ ^ sei lá pra que isso.Olha só você não saberia porque a trigger só funciona em 1 unico registro da minha tabela e nos outros simplesmente ele coloca NULL cada vez q insiro um dado no Campo VLTOTAL que deveria receber a soma de todos...É isso que não consigo entender. Não sei se estou esquecendo de algum detalhe mas acho que não tenho outras TRIGGER nesse projeto verdade q nenhuma fazendo calculos mas funcionam normalmente, eu estou fazendo esse calculo no Código mas faço ele 3 vezes em lugares diferentes, fazendo no banco resolveria esse problema...Se souber d mais aluma coisa q possa ser...Agradeço a sua Ajuda. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Tbaiano Postado Novembro 22, 2004 Autor Denunciar Share Postado Novembro 22, 2004 Ai Progr'amador descobri o q era. é que tinha 1 campos NULL e a Trigger, não somava nada e anulava.Agora v se poderia me ajudar a criar uma trigger que prevesse qd etiver null, até sei mas fazer um teste em 1 por um, tem uma maneira mais inteligente?Se puder agradeço.tbaiano. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Novembro 22, 2004 Denunciar Share Postado Novembro 22, 2004 cara, conselho de amigo: Sempre que for criar uma tabela que tenha campos do tipo NUMBER use sempre o DEFAULT 0, que ae não aconteceria de um campo desse ficar NULL, tipo:CREATE TABLE NOME_TABELA ( VLCOND NUMBER(*) DEFAULT 0, VLDMAE NUMBER(10,2) DEFAULT 0, VLCEXT NUMBER(10,3) DEFAULT 0, ETC, ETC, ETC...(É só um exemplo...)Abs. Progr'amador. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Tbaiano Postado Novembro 22, 2004 Autor Denunciar Share Postado Novembro 22, 2004 Valeu mesmo.Vou fazer isso.... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Tbaiano Postado Novembro 23, 2004 Autor Denunciar Share Postado Novembro 23, 2004 Ai Progr'amador eu mudei os meus campos para DEFAULT 0 e funcionou,só que pelo programa o programa quando insere os campos continuam com null...você saberia como posso arrumar isso sem ter que deletar o meu banco e criar de novo...Se puder dar essa mão, eu agradeço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Novembro 23, 2004 Denunciar Share Postado Novembro 23, 2004 Olá,que componente você ta usando no delphi pra inserir, e posta o código tambem, ok!Abs. Progr'amador. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Tbaiano Postado Novembro 23, 2004 Autor Denunciar Share Postado Novembro 23, 2004 Aquele IBDataSet... da Interbase Quando Insiro um Inquilino crio uma planilha para ele na After Post da Table Inquilino Coloquei isso: If NOt (IBPlaninq.State = dsEdit) and NOT (IBPlaninq.State = dsInsert) then IBPlaninq.Edit; DMlcd.IBPlaninqCODCONDPLANINQ.AsInteger := Strtoint(FcadInq.DBEdiT2.Text); DMlcd.IBPlaninqAPTINQ.AsString := FcadInq.DBEdit3.Text; DMlcd.IBPlaninqBLINQ.AsString := FcadInq.DBEdit4.Text; DMlcd.IBPlaninqPORTINQ.AsString := FcadInq.DBEdit17.Text; Dmlcd.IBPlaninq.Post; Tava funcionando numa boa isso... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Tbaiano Postado Novembro 23, 2004 Autor Denunciar Share Postado Novembro 23, 2004 Progr'amador EU PODERIA CRIAR UMA TRIGGER DENTRO DO BANCO PARA QUANDO INSERISSE NA TABELA DE INQUILINOS ELA CRIAVA UMA PLANILHA DE INQUILINOS PARA ESSE MESMO NA TABELA DA PLANILHA INQUILINOS.Ficaria melhor trabalhar no Banco isso ou no Código? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Novembro 23, 2004 Denunciar Share Postado Novembro 23, 2004 Eu só num entendi no que isso influenciaria pra evitar o NULL! Abs. Progr'amador. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Tbaiano Postado Novembro 23, 2004 Autor Denunciar Share Postado Novembro 23, 2004 É já que é no banco, o código, tb não sei...quando insiro pelo banco um dado todos os campos em branco recebem 0 com DEFAULT e não NULL mas quando no sistema eles recebem NULL...É vou ver o que que eu faço...Valeu pela ajuda vou ver uma de criar os dados da planilha de Inquilinos pelo banco e ver no que que dá...Valeu pelas Dicas. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Novembro 23, 2004 Denunciar Share Postado Novembro 23, 2004 Eu nunca usei esse IBDataSet, nas se você der dois cliques abrirar uma caixa, dentro dessa caixa clique com o botão direto e escolha o opção Add fields..., isso ira adcionar os campos da sua tabela, por acaso nesses campos num teria uma opção tipo Defalut... ()no object inspector) se tiver tenta colocar 0 (Zero). Mas não tenho certeza disso, como falei "Eu nunca usei esse IBDataSet".Outra opção:Quanto pedir um novo registro(No Delphi), já inserir o valor 0 (zero) nos campos, antes da você preencher os dados, ae o que você não preencher com nenhum valor, consequentemente vai ficar 0 (Zero).Espero que tenho entendido.Abs. Progr'amador. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Tbaiano Postado Novembro 23, 2004 Autor Denunciar Share Postado Novembro 23, 2004 Pode deixar, Existe a Opção Default mas já coloquei ZERO e não deu certo vou tentar de novo.mas Obrigado foi de grande ajuda. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Tbaiano
Essa TRIGER não Está gravando no banco ela soma direitinho mas não grava...
E o detalhe que só soma o 1 registro da TABLE
Coloquei BEFORE em UPDATE
AS
begin
planinq.vltotal = planinq.vlcond + planinq.vldmae + planinq.vlcext;
end
Se alguém puder me ajudar...
Link para o comentário
Compartilhar em outros sites
17 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.