não repetir valores em dbgrid

31/03/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:
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´&93; := QAlunomatricula.Text;
QHistorico&91;´disciplina´&93;:= DBLDisciplina.Text;
QHistorico&91;´curso´&93; := DBEdit4.text;
QHistorico&91;´1bim´&93; := 0;
QHistorico&91;´2bim´&93; := 0;
QHistorico&91;´3bim´&93; := 0;
QHistorico&91;´4bim´&93; := 0;
QHistorico&91;´media_final´&93; := 0;
QHistorico&91;´falta1´&93; := 0;
QHistorico&91;´falta2´&93; := 0;
QHistorico&91;´falta3´&93; := 0;
QHistorico&91;´falta4´&93; := 0;
QHistorico&91;´falta_final´&93; := 0;
QHistorico&91;´ch´&93; := 0;
end;
:( :?:


Sansoftware

Respostas

31/03/2006

Rjun

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

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´&93; := QAlunomatricula.Text;
      QHistorico&91;´disciplina´&93;:= DBLDisciplina.Text;
      QHistorico&91;´curso´&93; := DBEdit4.text;
      QHistorico&91;´1bim´&93; := 0;
      QHistorico[´2bim´&93; := 0;
      QHistorico&91;´3bim´&93; := 0;
      QHistorico&91;´4bim´&93; := 0;
      QHistorico&91;´media_final´&93; := 0;
      QHistorico&91;´falta1´&93; := 0;
      QHistorico&91;´falta2´&93; := 0;
      QHistorico&91;´falta3´&93; := 0;
      QHistorico&91;´falta4´&93; := 0;
      QHistorico&91;´falta_final´&93; := 0;
      QHistorico&91;´ch´&93; := 0;
    end;
  finally
    { Feche a query depois de sua utilização }
    { Não faz sentido deixá-la aberta }
    QHistorico.Close;
  end;
end;



Responder Citar