Fórum controle de lições aprovadas - firebrd - d2006 #329551

16/09/2006

0

Paz e Bem!

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

Simaops

Responder

Posts

18/09/2006

Rm

Para o aluno se localizar na lista.

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.


Responder

Gostei + 0

18/09/2006

Simaops

Meu caro RM, meus agradecimentos pela pronta atenção.

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?


Responder

Gostei + 0

19/09/2006

Rm

Não sei qual componente de acesso ao BD tu usa.Normalmente os componentes de acesso são colocados em um datamodulo.Se assim deve informar onde esta o objeto.Por ex

Datamodulo1.tablealuno.first;

Pegue algum material na internet e artigos aqui mesmo para maiores detalhes

SDS/RM


Responder

Gostei + 0

19/09/2006

Simaops

pode me dizer onde esta o erro nesta tentativa de atualização do campo

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;


Responder

Gostei + 0

19/09/2006

Marco Salles

Deve funcionar....

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;



Responder

Gostei + 0

20/09/2006

Simaops

funcionou assim:

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


Responder

Gostei + 0

20/09/2006

Simaops

Aproveitando o topico, como faço para dar um refresh em dbEdit3 que antes do Update exibe o valor anterior e depois do Update deve exibir o novo valor?


Responder

Gostei + 0

20/09/2006

Rinez

Coloque os componentes de acesso ao banco que usa para que possamos ajudá-lo.
Prof. Zenir.


Responder

Gostei + 0

20/09/2006

Simaops

os componentes foram indicados no 1° post.
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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar