Sistema de curso de inglês

Delphi

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
Kleber Silva

Kleber Silva

Curtidas 0

Respostas

Joel Rodrigues

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

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
GOSTEI 0
Kleber Silva

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

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:

    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

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
GOSTEI 0
Wilfe

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


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
POSTAR