Inquiridor
Gerando um contador acumulativo

Pergunta
-
Olá pessoal,
Tenho o seguinte problema:
Possuo as seguintes tabelas com seus respectivos campos:
CURSOS
- Código do Curso (Int)
- Nome (Varchar(100))
- Carga Horária (Int)
- Ementa (Text)
- Área Profissional (Int)
CURSO POR UNIDADE
- Código do Curso por Unidade (Int)
- Código do Curso (Int)
- Código da Unidade (Int)
- Ativo (Char(1))
- Item (Int)
- Código da Turma (Int)
- Data Inicial (Date)
- Data Final (Date)
- Código do Curso por Unidade (Int)
- .....
Muito bem, o q estou precisando fazer é, cada vez q eu criar uma turma seja incrementado no campo Item da tabela Curso por Unidade mais um.
Qual o objetivo? Tenho o cadastro de cursos, após realizar este cadastro, o código deste curso será inserido automaticamente na tabela Curso por Unidade 40 vezes, isto pq eu tenho 40 municípios q ofertarão este mesmo curso. Até aí tudo bem, pq já tenho o cadastro de unidades e é só usar um loop em minha aplicação para fazer isso. O problema é q ao criar uma turma irei vincular o Código do Curso por Unidade à Turma só q eu preciso gerar o número de vezes q este curso foi ofertado para aquela unidade, daí o campo Item (em destaque) na tabela Cursos por Unidade, então, pergunto a vcs, para isso devo usar triggers ou isso seria inviável? E se for o correto, como posso criá-la, pois nunca trabalhei com triggers.
Grato,
Ilano. - Código do Curso (Int)
Todas as Respostas
-
-
-
Olá Demétrio,
Bem, o meu problema é q eu tenho uma quantidade X de municípios, o q chamamos de áreas de abrangência, para cada unidade e tenho medo de usar algo como um COUNT para fazer isso, pois como é um sistema multiusuário temo q as informações fiquem inconsistentes. -
-
Galera,
Pensando mais um pouco, acredito q essa solução não seja a ideal para o q eu pretendo fazer.
A idéia é a seguinte:
Quero gerar um código para identificar essa turma, para isso imaginei a seguinte hipótese:
O código da Unidade + Código do Curso + Item (Nº de vezes q o curso foi ofertado para a unidade)
01.002.000025
01.002.000026
....
Este item na verdade seria a quantidade de vezes q um determinado curso seria ofertado para uma determinada Unidade, então, ao criar uma nova turma seria incrementado um valor para o campo item e depois seria jogado para a tabela de Turmas para q eu possa gerar um código para cada turma. Bem imaginei assim:
1º) Abro uma turma;
2º) Consulto na tabela CursoUnidade se a Unidade e o Curso finculados à turma já foram cadastrados e incremento +1 no campo Item e salvo a tabela CursoUnidade;
3º) Jogo para a tabela da turma aquele valor incrementado e salvo a tabela da turma.
O problema, está quando se trabalha com vários usuários, pois como já disse anteriormente, são vários municípios (áreas de abrangência) para cada Unidade.
xxiii.... Será q eu expliquei direitinho??? -
Olá ilanocf,
Você não poderia utilizar uma chave artificial (um identity) ao invés de utilizar colunas como código da unidade, codigo do curso ? Esse Identity não teria nenhum relação com o negócio e trataria a questão multi usuário.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.com
-
Olá Gustavo,
Desde já agradeço sua atenção. Bem, uma chave como vc especificou (um identity) não seria um seqüencial? Dessa forma, como poderia ter a quantidade de vezes q um curso A foi ofertado para uma unidade B? Esse número, com o passar do tempo, não se tornaria muito grande? -
O q estou precisando fazer é isso:
UNIDADES
01 - Unidade de Fortaleza (Sede)
02 - Unidade de Maranguape
...
CURSOS
01 - Farmácia Viva
02 - Produtor de Hortaliças
03 - Eletricista Predial
...
O código da turma deverá ser gerado pelo Código da Unidade + Código do Curso + Item (Nº de vezes q o curso foi ofertado para a unidade)
01.001.000001
01.002.000001
01.002.000002
01.003.000001
01.003.000002
01.002.000003
02.001.000001
01.003.000003
01.001.000002
02.001.000002
02.001.000003
02.003.000001
...
Vejam q:
Na Unidade 01 - Unidade de Fortaleza (Sede) foram ofertados os seguintes cursos:
- 01 - Farmácia Viva ----------------------------- Ofertado 2 vezes
- 02 - Produtor de Hortaliças ----------------- Ofertado 3 vezes
- 03 - Eletricista Predial ------------------------ Ofertado 3 vezes
Na Unidade 02 - Unidade de Maranguape foram ofertados os seguintes cursos:
- 01 - Farmácia Viva ----------------------------- Ofertado 3 vezes
- 02 - Produtor de Hortaliças ----------------- Ofertado 1 vez -
Olá pessoal,
Acho q encontrei uma saída.
Bem, como toda a Turma será gerado um código seqüencial, então pensei em fazer isso:
SELECT COUNT(*) AS ITEM FROM T_Turmas
WHERE Tur_Codigo < P1
AND Ud_Codigo = P2
AND Cur_Codigo = P3
Onde P1, P2 e P3 são os parâmetros.
P1 = Chave Primária da Tabela;
P2 = Código da Unidade;
P3 = Código do Curso.
Obtendo esse resultado, eu poderei qual a posição aquela foi ofertado determinado curso de uma unidade para uma determinada turma.
O problema é q, como eu faria isso usando TRIGGERS? Preciso q isso seja feito logo após salvar uma turma, mas, tb preciso q seja verificado se a consulta retorna um valor maior que 0, pois se for zero o resultado da consulta deverá ser 1.