controle de lições aprovadas - firebrd - d2006
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.
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
Curtidas 0
Respostas
Rm
16/09/2006
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.
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
Simaops
16/09/2006
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?
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
Rm
16/09/2006
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
Datamodulo1.tablealuno.first;
Pegue algum material na internet e artigos aqui mesmo para maiores detalhes
SDS/RM
GOSTEI 0
Simaops
16/09/2006
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;
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
Marco Salles
16/09/2006
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;
GOSTEI 0
Simaops
16/09/2006
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
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
Simaops
16/09/2006
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?
GOSTEI 0
Rinez
16/09/2006
Coloque os componentes de acesso ao banco que usa para que possamos ajudá-lo.
Prof. Zenir.
Prof. Zenir.
GOSTEI 0
Simaops
16/09/2006
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.
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