Re: [firebase-br] Procedure - que não nem como começar
BandaLemuel
bandalemuel em yahoo.com.br
Ter Set 5 15:09:05 -03 2006
Fiz do jeito que você falou,mas ele não esta alterando
COMMIT WORK;
SET AUTODDL OFF;
SET TERM ^ ;
/* Stored procedures */
CREATE PROCEDURE "BATERCARTAO"
(
"CDFIL" INTEGER,
"NRCRA" INTEGER
)
AS
BEGIN EXIT; END ^
ALTER PROCEDURE "BATERCARTAO"
(
"CDFIL" INTEGER,
"NRCRA" INTEGER
)
AS
declare variable h1 integer ;
declare variable h2 integer ;
declare variable h3 integer ;
declare variable h4 integer ;
declare variable h5 integer ;
declare variable h6 integer ;
BEGIN
SELECT A.HRPON1 , A.HRPON2 , A.HRPON3 , A.HRPON4 , A.HRPON5 , A.HRPON6
FROM CPONTO A WHERE A.CDFIL=:CDFIL AND A.NRCRA=:NRCRA
AND A.DTPON=CURRENT_DATE INTO :h1, :h2 , :h3 , :h4 , :h5 , :h6
;
if ( :h1 is null ) then
begin
INSERT INTO CPONTO ( CDFIL , NRCRA , DTPON , HRPON1 ) VALUES
( :CDFIL , :NRCRA , CURRENT_DATE , CURRENT_TIME );
suspend;
end
if ( :h2 is null ) then
begin
UPDATE CPONTO SET HRPON2=CURRENT_TIME WHERE CDFIL=:CDFIL AND
NRCRA=:NRCRA AND DTPON=CURRENT_DATE;
suspend;
end
if ( :h3 is null ) then
begin
UPDATE CPONTO SET HRPON3=CURRENT_TIME WHERE CDFIL=:CDFIL AND
NRCRA=:NRCRA AND DTPON=CURRENT_DATE;
suspend;
end
if ( :h4 is null ) then
begin
UPDATE CPONTO SET HRPON4=CURRENT_TIME WHERE CDFIL=:CDFIL AND
NRCRA=:NRCRA AND DTPON=CURRENT_DATE;
suspend;
end
if ( :h5 is null ) then
begin
UPDATE CPONTO SET HRPON5=CURRENT_TIME WHERE CDFIL=:CDFIL AND
NRCRA=:NRCRA AND DTPON=CURRENT_DATE;
suspend;
end
if ( :h6 is null ) then
begin
UPDATE CPONTO SET HRPON6=CURRENT_TIME WHERE CDFIL=:CDFIL AND
NRCRA=:NRCRA AND DTPON=CURRENT_DATE;
suspend;
end
if ( :h6 is not null ) then
begin
EXCEPTION BATEUDEMAIS;
end
END
^
SET TERM ; ^
COMMIT WORK;
SET AUTODDL ON;
o quepode estar eraado?
Orbigado
----- Original Message -----
From: "BandaLemuel" <bandalemuel em yahoo.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Tuesday, September 05, 2006 2:02 PM
Subject: Re: [firebase-br] Procedure - que não nem como começar
Obrigado... O que viria a ser um WebService..???? Desculpe a
ignorancia....
----- Original Message -----
From: "Ton - Hotmail" <hevertonc em hotmail.com>
To: "'FireBase'" <lista em firebase.com.br>
Sent: Tuesday, September 05, 2006 1:54 PM
Subject: RES: [firebase-br] Procedure - que não nem como começar
Olá...
Dentro da procedure, é só vc fazer um select nos campos e verificar qual
o primeiro deles que tem valor NULL, por exemplo:
SELECT hr1, hr2, hr3, hr4, hr5, hr6
FROM Tabela
WHERE Condição
INTO :H1, :H2, :H3, :H4, :H5, :H6;
Depois faz IFs verificando de as variáveis estão nulas, por exemplo:
if (:H1 is null) then
E altera o registro, com um update comum...
Mas aki vão algumas coisas...
1- Por estar na Internet, a procedure aumeta a performance, mas não faz
milagre, ainda vai continuar lento.
2- Porque não cria uma tabela detalhe com os horários, assim não precisa
ficar vendo qual campo já está preenchido, simplesmente adiciona com a chave
do funcionário, a Data, a Hora e se é de entrada ou saída (Caso esta
informação seja necessária), Além de ficar mais simples, selects bem simples
podem resolver a busca e vc fica sem limites de batidas de cartão, seja um
funcionário que bateu cartão 2, 4 6 ou 10 vezes, ele vai conseguir suportar.
3- Se o Banco precisar ficar na Web mesmo, já que são poucas informações
a trafegar, estuda a possibilidade de um WebService pra isso, resolve seu
problema com a lentidão do banco.
Ton
Analista de Sistemas
DotCom Informática
"A infrmação não é um produto,
e sim a matéria prima." (Ton)
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de BandaLemuel
Enviada em: terça-feira, 5 de setembro de 2006 13:44
Para: FireBase
Assunto: [firebase-br] Procedure - que não nem como começar
Lista
É o seguinte, estou fazendo uma aplicação de cartão de Ponto, tenho tudo
pronto, e coloquei o banco na internet, mas esta muito lento, quero
inplementar com Procedure para ficar mais rápido. Como funciona...
A Tabela tem os Camspo
hr1 , hr2 , hr3 , hr4 , hr5 e hr6, que são os horários batidos do
dia.... ou seja até 6 vezes ....
preciso verificar se já foi batido uma vez se foi , ele altera o
registro e coloca no proximo hr, e se não foi batido insere o reg com a hora
no hr1...
eu não faço ideia como fazer isso, vcs podem me ajudar ?
Obrigado.
Wesley
_______________________________________________________
O Yahoo! está de cara nova. Venha conferir!
http://br.yahoo.com
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
--
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.405 / Virus Database: 268.11.7/437 - Release Date: 04/09/2006
_______________________________________________________
O Yahoo! está de cara nova. Venha conferir!
http://br.yahoo.com
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
--
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.405 / Virus Database: 268.11.7/437 - Release Date: 04/09/2006
_______________________________________________________
Novidade no Yahoo! Mail: receba alertas de novas mensagens no seu celular. Registre seu aparelho agora!
http://br.mobile.yahoo.com/mailalertas/
Mais detalhes sobre a lista de discussão lista