Sistema de curso de inglês
Ola galera,
Gente me ajude a fazer um sistema para uma escola de inglês. Estou me enrolando no seguinte.
Quero que quando a atendente for cadastrar um novo aluno em uma determinada turma, o sistema não deixe
e informe que aquela turma já tem tipo : 50 pessoas.
Aguardo a ajuda
Gente me ajude a fazer um sistema para uma escola de inglês. Estou me enrolando no seguinte.
Quero que quando a atendente for cadastrar um novo aluno em uma determinada turma, o sistema não deixe
e informe que aquela turma já tem tipo : 50 pessoas.
Aguardo a ajuda
Kleber Silva
Curtidas 0
Respostas
Joel Rodrigues
27/07/2012
Para isso, experimente usar um trigger antes do insert. Você faz um SELECT COUNT dos alunos que estão na turma e, se der o total de alunos da turma, você aborta a operação.
GOSTEI 0
Wesley Yamazack
27/07/2012
Olá Kleber, você esta usando qual BD?
Se o seu sistema for online, tem alguns BDs que não tem trigger na web.
Eu fazia o seguinte, tem um post que fiz há um tempo atrás onde ensino a executar comandos no banco de dados sem precisar de componentes, coisa boba, veja no link: https://www.devmedia.com.br/acessando-banco-de-dados-sem-componente-delphi/19268
Você pode fazer uma função, igual a que o Joel falou, só que ao invés de uma trigger, use uma função no próprio Delphi pra fazer isso. É um outro caminho também!
um abraço e até mais
Se o seu sistema for online, tem alguns BDs que não tem trigger na web.
Eu fazia o seguinte, tem um post que fiz há um tempo atrás onde ensino a executar comandos no banco de dados sem precisar de componentes, coisa boba, veja no link: https://www.devmedia.com.br/acessando-banco-de-dados-sem-componente-delphi/19268
Você pode fazer uma função, igual a que o Joel falou, só que ao invés de uma trigger, use uma função no próprio Delphi pra fazer isso. É um outro caminho também!
um abraço e até mais
GOSTEI 0
Kleber Silva
27/07/2012
Para isso, experimente usar um trigger antes do insert. Você faz um SELECT COUNT dos alunos que estão na turma e, se der o total de alunos da turma, você aborta a operação.
Obrigado,
mas vc nao tem nada em codigo so para eu ter uma idéia para iniciar?
GOSTEI 0
William
27/07/2012
Colega esse exemplo que vou postar é apenas uma das várias maneiras que existe de verificar uma determinada condição no banco de dados, nesse exemplo estou usando uma componente SQLQuery ligado ao SQLConnection para executar a instrução SQL:
Mas vou salientar existem várias maneiras de se fazer esse verificação, Triggers no banco, evento BeforePost do seu DataSet e etc.
SQLQuery.Close; SQLQuery.SQL.Clear; SQLQuery.SQL.Add(SELECT COUNT(*) FROM TURMA WHERE ID_TURMA = 1); SQLQuery.Open; if SQLQuery.Fields[0].AsInteger < 50 then begin //Aqui vc coloca seu código de inserção end else begin ShowMessage(Turma fechada, já possui 50 alunos!); end;
Mas vou salientar existem várias maneiras de se fazer esse verificação, Triggers no banco, evento BeforePost do seu DataSet e etc.
GOSTEI 0
Rafael Ribeiro
27/07/2012
Eu faria pelo próprio Delphi usando a propriedade RecordCount... se o ClientDataSet.RecordCount <= 50 a ação pode ser realizada, caso contrário dá um showmessage informando que a turma já tem 50 alunos. muito mais rápido.
Abraços
Rafael
Abraços
Rafael
GOSTEI 0
Wilfe
27/07/2012
Ola galera,
Gente me ajude a fazer um sistema para uma escola de inglês. Estou me enrolando no seguinte.
Quero que quando a atendente for cadastrar um novo aluno em uma determinada turma, o sistema não deixe
e informe que aquela turma já tem tipo : 50 pessoas.
Aguardo a ajuda
Gente me ajude a fazer um sistema para uma escola de inglês. Estou me enrolando no seguinte.
Quero que quando a atendente for cadastrar um novo aluno em uma determinada turma, o sistema não deixe
e informe que aquela turma já tem tipo : 50 pessoas.
Aguardo a ajuda
import sqlite3
# Conexão com o banco de dados
conexao = sqlite3.connect("escola.db")
cursor = conexao.cursor()
# Criação das tabelas
cursor.execute("""
CREATE TABLE IF NOT EXISTS turmas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL,
capacidade INTEGER DEFAULT 50
)
""")
cursor.execute("""
CREATE TABLE IF NOT EXISTS alunos (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL,
turma_id INTEGER NOT NULL,
FOREIGN KEY (turma_id) REFERENCES turmas(id)
)
""")
conexao.commit()
# Função para verificar e cadastrar aluno
def cadastrar_aluno(nome_aluno, turma_id):
# Verificar quantos alunos já estão na turma
cursor.execute("SELECT COUNT(*) FROM alunos WHERE turma_id = ?", (turma_id,))
quantidade_alunos = cursor.fetchone()[0]
# Verificar capacidade da turma
cursor.execute("SELECT capacidade FROM turmas WHERE id = ?", (turma_id,))
capacidade = cursor.fetchone()
if capacidade is None:
print("Erro: Turma não encontrada.")
return
capacidade = capacidade[0]
if quantidade_alunos >= capacidade:
print(f"Erro: A turma já atingiu a capacidade máxima de alunos.")
else:
# Cadastrar aluno na turma
cursor.execute("INSERT INTO alunos (nome, turma_id) VALUES (?, ?)", (nome_aluno, turma_id))
conexao.commit()
print(f"Aluno '' cadastrado com sucesso na turma !")
# Exemplo de uso
# Adicione uma turma de exemplo
cursor.execute("INSERT INTO turmas (nome, capacidade) VALUES (?, ?)", ("Inglês Básico", 50))
conexao.commit()
# Tente cadastrar alunos
cadastrar_aluno("João", 1)
cadastrar_aluno("Maria", 1)
# Fechar conexão
conexao.close()
Espero ter ajudado um sistema para uma escola de Inglês. https://officialnow1.com/a-jornada-do-autodidata-em-ingles/.
GOSTEI 0