Array
(
)

não repetir valores em dbgrid

Sansoftware
   - 31 mar 2006

bom di amigos!
Estou com o seguinte problema!
Tenho uma dbgrid que está sendo preenchida por valore que estão em uma DBLookCombobox, onde carrego as disciplinas! No entanto não posso deixar gravar a mesma disciplina duas vezes! Como posso fazer esse teste!


codigo do botao incluir que pega os valores da query e coloca na dbgrid:
#Código


procedure Tfrm_lanca_nota.btnIncluirClick(Sender: TObject);
begin
QHistorico.Close;
QHistorico.SQL.Clear;
QHistorico.SQL.Add(´Select * from san_tbl_historico´);
QHistorico.SQL.Add(´Where id_aluno like ´´¬´+Edit1.Text+´¬´´ and disciplina like ´´¬´+DBLDisciplina.Text+´¬´´´);
QHistorico.Open;
if QHistorico.RecordCount <> 0 then
begin
//aqui não pode inserir a mesma disciplina.
QHistorico.Close;
QHistorico.Open;
ShowMessage(´materia ja existe!´);
DBLDisciplina.SetFocus;
exit;
end;
QHistorico.Open;
QHistorico.Append;

QHistorico[´id_aluno´] := QAlunomatricula.Text;
QHistorico[´disciplina´]:= DBLDisciplina.Text;
QHistorico[´curso´] := DBEdit4.text;
QHistorico[´1bim´] := 0;
QHistorico[´2bim´] := 0;
QHistorico[´3bim´] := 0;
QHistorico[´4bim´] := 0;
QHistorico[´media_final´] := 0;
QHistorico[´falta1´] := 0;
QHistorico[´falta2´] := 0;
QHistorico[´falta3´] := 0;
QHistorico[´falta4´] := 0;
QHistorico[´falta_final´] := 0;
QHistorico[´ch´] := 0;
end;
:( :?:


Rjun
   - 31 mar 2006

Fiz umas mudanças no seu código. Que banco de dados você está usando? Qual a tecnologia de acesso?

#Código


begin
QHistorico.SQL.Clear;

{
Esse trecho poderia estar dentro do seu componente e não em
linha de código
}
QHistorico.SQL.Add(´SELECT * FROM San_Tbl_Historico ´);
QHistorico.SQL.Add(´WHERE Id_Aluno = :IdAluno AND Disciplina = :Disciplina´);

{ Utilizar parâmetro é uma opção inteligente }
QHistorico.ParamByName(´IdAluno´).Value := Edit1.Text;
QHistorico.ParamByName(´Disciplina´).Value := DBLDisciplina.Text;

QHistorico.Open;
try
if (QHistorico.RecordCount = 0) then
begin
QHistorico[´id_aluno´] := QAlunomatricula.Text;
QHistorico[´disciplina´]:= DBLDisciplina.Text;
QHistorico[´curso´] := DBEdit4.text;
QHistorico[´1bim´] := 0;
QHistorico[´2bim´] := 0;
QHistorico[´3bim´] := 0;
QHistorico[´4bim´] := 0;
QHistorico[´media_final´] := 0;
QHistorico[´falta1´] := 0;
QHistorico[´falta2´] := 0;
QHistorico[´falta3´] := 0;
QHistorico[´falta4´] := 0;
QHistorico[´falta_final´] := 0;
QHistorico[´ch´] := 0;
end;
finally
{ Feche a query depois de sua utilização }
{ Não faz sentido deixá-la aberta }
QHistorico.Close;
end;
end;