Posso criar uma SP com três tabelas
14/12/2004
0
Quero saber se posso escrever uma SP no Interbase ou Fire, com 3 tabelas, é q tô precisando escrever uma SP q faça uns calculos para mim e lance os resultados em uma tabela, tipo, somar todos o proventos de um funcionário, verificar a alíquota do INSS, calcular o valor, somar os descontos, e lançar os dados em uma tabela (Table3), isso para todos os funcionários q tiver cadastrado na minha Tabela TbFunci, se alguém puder me dar uma ajuda, fico muito agradecido.
Se alguém souber me dizer se é melhor fazer isso com código Delphi e como se faz, agradeço tb.
Martins
Posts
14/12/2004
Gandalf.nho
14/12/2004
Martins
Obrigado pelo ajuda!!
Vc poderia me dar uma dica de como eu escreveria essa SP, as 3 tabelas são Funcionarios, Aliquotas e DigitaPdr, tenho q somar todos os proventos de um funcionário e verificar em qual alíquota ele está para poder calcular o INSS, feito isso, tenho q lancar os calculos desse funcionário na tabela DigitaPdr, e só então passar para o funcionário seguinte.
Aceito sugestões, pois não estou conseguindo pensar em mais nada, essa semana tô burrinho!!!
Mais uma vez valeu [b:f50b53c673]gandalf.nho[/b:f50b53c673]
14/12/2004
Gandalf.nho
CREATE PROCEDURE CALCULA_INSS (
parâmetros_entrada (se tiver)
)
RETURNS (
parâmetros_saída (se tiver)
)
AS
DECLARE VARIABLE codigo_funcionario INTEGER;
DECLARE VARIABLE aliquota DOUBLE PRECISION;
DECLARE VARIABLE soma_proventos DOUBLE PRECISION;
BEGIN
FOR SELECT CODIGO_FUNCIONARIO, ALIQUOTA, SUM(PROVENTOS)
FROM tabela INTO :codigo_funcionario, :aliquota, :soma_proventos DO
BEGIN
/* Aqui você usará os valores e fará seus cálculos */
END
END
14/12/2004
Martins
vou testar aqui, qualquer coisa, posto aqui novamente.
Muito obrigado!
14/12/2004
Gandalf.nho
De nada :D
16/12/2004
Martins
De nada :D[/quote:1ed3587374]
Gandalf.nho, iz como vc me sugeriu, mas estava vendo o seguinte:
CREATE PROCEDURE CALCULA_INSS ( parâmetros_entrada (se tiver) ) RETURNS ( parâmetros_saída (se tiver) ) AS DECLARE VARIABLE codigo_funcionario INTEGER; DECLARE VARIABLE aliquota DOUBLE PRECISION; DECLARE VARIABLE soma_proventos DOUBLE PRECISION; BEGIN FOR SELECT CODIGO_FUNCIONARIO, ALIQUOTA, SUM(PROVENTOS) FROM tabela INTO :codigo_funcionario, :aliquota, :soma_proventos DO BEGIN /* Aqui você usará os valores e fará seus cálculos */ END END
Desse jeito eu estaria agrupando(somando) todos os valores de proventos, tudo bem me será util, mas antes tenho q inserir em outra tabela os dados dos funcinários vou exemplificar:
COD EVENTO DESCR_EVENTO TIPO VALOR PROV DESC
===========================================
001 010 SALARIO BASE P 260,00 260,00 0,00
001 030 FALTAS D 0,00 0,00 25,00
002 ......
COD = codigo do funcionário, todos teram eventos lançados +/- assim, após o lançamento, devo fazer o processamento, a parte q irá calcular os descontos do INSS e IRRF, já iz isso usando código Delphi dentro do Projeto, mas queria fazer isso no BD, pois rodando em um servidor ficaria bem mais rápido, pois bem após o processamento ficaria assim no DBGrid.
COD EVENTO DESCR_EVENTO TIPO VALOR PROV DESC
===========================================
001 010 SALARIO BASE P 260,00 260,00 0,00
001 030 FALTAS D 25,00 0,00 25,00
001 060 INSS D 19,89 0,00 19,89
001 100 TOTAL DESC A 44,89 0,00 44,89
001 101 TOTAL PROV A 260,00 260,00 0,00
001 102 LIQUIDO A 215,11 215,11 0,00
002 ......
O mesmo pro funcionário 002, 003, etc, com código Delphi eujá fiz funcionar usando [b:1ed3587374]While Do[/b:1ed3587374], gostaria de saber se com essa SP, posso fazer algo parecido, tipo incluir os dados e só depois somar(proventos) para calcular INSS, calcular(Descontos) para obter o líquido?
Posso usar While dentro de uma SP?
Mais uma vez, muito obrigado!
17/12/2004
Martins
O While DO na SP ficaria +/- assim?
While <Expressão> Do Begin <Comandos> end
Valew pela força!!!
17/12/2004
Martins
[url]http://delphiforum.icft.com.br/forum/viewtopic.php?p=176388#176388[/url]
Conto com os comentários e correções de vcs!
Obrigado!
17/12/2004
Gandalf.nho
While <Expressão> Do Begin <Comandos> end
Sim.
Clique aqui para fazer login e interagir na Comunidade :)