Fórum controle de lições aprovadas - firebrd - d2006 #329551
16/09/2006
0
no meu programa de aulas, preciso controlar as lições dos alunos e já quebrei a cabeça com isso porque não sou examente um programador.
- o aluno é inicialmente cadastrado - (feito)
- uso o banco de dados firberd 1.5 com uma simples tabela somente. (feito)
- já consigo ver a tebela com os dados no DbGrid do meu form. (feito)
- após ser cadastrado ele deve escolher seu nome em uma lista (não sei setar)
- e depois irá escolher a primeira Lição que é livre pra todos. (feito)
como programo o seguinte:
procedure (não sei qual)
{se o status da lição é igual a concluida ou o Aluno foi aprovado}
if lblMenção.caption = ´aprovado´
{na tabela: somar 1 ao valor atual do campo N°Lição}
valor=valor+1
end
depois, pra escolher a proxima lição ele deve clicar, por exemplo, num botão equivalente a licão e o programa chamá-la tendo como referência o n° armazenado na tabela.
procedure btnLicaoN°3 Click;
if o valor verificado em: Tabela1, campo N°Lição é = 3;
Aula3.show;
end;
e se for aprovado/concluid na 3, executa denovo o valor=valor+1
componentes = dataset, datasource, transaction, dbgrid, etc, = conexão com bd
funcionando.
bom tentei ser claro o suficiente pra que vcs possam me ajudar.
obrigado.
Simaops
Curtir tópico
+ 0Posts
18/09/2006
Rm
Coloque um combobox no formulário.No evento oncreate do formulário coloque.
tabelaalunos.First;
while not tabelaalunos..Eof do begin
ComboBox1.Items.Add(tabelaalunos..FieldByName(´Aluno´).AsString);
tabelaalunos.Next;
end;
tabelaalunos.First;
end;
Isto faz carregar os itens alunos para seleção no combobox.Para que seja localizado o registro referente ao aluno deve se colocar no evento onchange da combobox:
tabelaalunos.Locate(´aluno´,COMBOBOX1.TEXT,[loCaseInsensitive]);
Na verdade só precisaria a linha acima em um edit(tambem no onchange) ao inves de um combobox.Então o aluno teria que digitar seu nome no edit ao inves de selecioná-lo no combobox
Para responder sobre as lições falta saber como a lição é considerada como concluida.Se o aplicativo estiver em rede e lição é confirmada por evento disparado pelo professor a copia disponibilizada aos alunos deve ter funcionalidades diferentes da copia do professor.Senão o aluno pode confirmar a lição como pronta a revelia.
Com estes pressupostos eu faria uma tabela aluno como master e uma tabela liçõesaluno como detail associada a cada aluno.
Tambem teria uma tabela Lições com a lista de licões a independente de aluno.
Usaria a mesma ideia de incrementar o numero da lição por aprovação na tabela aluno.Isto seria disparado pelo professor quando confrimasse a execução da lição.Este campo estaria bloqueado para edição.Só poderia ser alterado pelo evento comandado pelo professor.
A partir destes pressupostos (sendo eles a tua realidade).Poderia tomar varios caminnhos Um destes seria um locate na tabela lição (geral) tambem associado ao evento onchange do combobox.
tabelalicoes.Locate(´licao´,tabelaalunovalor.value,[loCaseInsensitive]);//listaria abaixo do outro locate
A expressão tabelaalunovalor.value se refere ao valor incrementado das lições aprovadas antes citado.
Tudo isto esta incompleto pois falta detalhar registros da tabela licoes aluno com campos para descrição da resposta do aluno á lição selecionada ,etc,etc.
Espero que lhe seja de alguma ajuda.
Gostei + 0
18/09/2006
Simaops
Pena que meus conhecimentos me deram uma rasteira logo de cara, quando alegre digitei no FormCreate:
tbAluno.First;
{... Undeclared identifier: ´tbAluno´}
tentei resolver sem sucesso.
Bom, o DatabaseName do IBDatabse1 = c:\bd\banco.fdb
ele contem a tabela tbAluno, o que faço?
Gostei + 0
19/09/2006
Rm
Datamodulo1.tablealuno.first;
Pegue algum material na internet e artigos aqui mesmo para maiores detalhes
SDS/RM
Gostei + 0
19/09/2006
Simaops
Query1.close;
Query1.SQL.Clear;
Query1.SQL.add(´SELECT licao from tbAluno´);
Query1.SQL.Add(´Update tbAluno set LICAO = LICAO + 1 where Aluno =strtoint(dbedit1.caption)´ );
Query1.prepare;
Query1.open;
Gostei + 0
19/09/2006
Marco Salles
Query1.close; Query1.SQL.Clear; Query1.SQL.add(´SELECT licao from tbAluno ´); Query1.SQL.Add(´Update tbAluno set LICAO = LICAO + 1 where Aluno =:pId´); Query1.parambyname(´pId´).asString:=edit1.text; Query1.prepare; Query1.open;
Gostei + 0
20/09/2006
Simaops
ibQuery1.Close;
ibQuery1.SQL.Clear;
ibQuery1.SQL.add(´Update tbdigita set LICAO = licao+1 where (codigo= :pCodigo) ´);
ibQuery1.ParamByName(´pCodigo´).AsString:=DbEdit1.Text;
ibquery1.ExecSql;
ibQuery1.SQL.add(´SELECT * from tbdigita´);
ibquery1.Open;
Obrigado a todos
Gostei + 0
20/09/2006
Simaops
Gostei + 0
20/09/2006
Rinez
Prof. Zenir.
Gostei + 0
20/09/2006
Simaops
bom, a primeira procedure ficou resolvido assim:
ibQuery1.Active:= False;
ibQuery1.SQL.Clear;
ibQuery1.SQL.add(´Update tbdigita set LICAO = licao+1 where (codigo= :pCodigo) ´);
ibQuery1.ParamByName(´pCodigo´).AsString:=DbEdit1.Text;
ibquery1.ExecSql;
ibquery1.Prepare;
selecao;
frmcadastro.ibDataSet1.Refresh;
Por enquanto obrigado a todos.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)