Segundo locate?

19/04/2014

0

amigos
Só com o primeiro locate o código funciona perfeitamente, preciso fazer uma nova inserção, caso algum dos itens do comboBox (Observação, Trabalho Individual, Trabalho em Grupo e Prova) não estejam inseridos no campo INSTRUMENTOS da tabela NOTAS :

  auto := true;
  while not DmDados.IBQryAlunoTurma.eof do
    begin
      if not DmDados.IBQryNotas.Locate('MATRICULA_ALUNO_NOTAS',DmDados.IBQryAlunoTurmaMATRICULA_ALUNO.AsString,[loPartialKey]) then

(2º LOCATE)      if not Dmdados.IBQryNotas.Locate('INSTRUMENTO','Observação,Trabalho Individual,Trabalho em Grupo,Prova',[loPartialKey])then

        begin
          DmDados.IBQryNotas.Insert;
          DmDados.IBQryNotasMATRICULA_ALUNO_NOTAS.AsString  := DmDados.IBQryAlunoTurmaMATRICULA_ALUNO.AsString;
          DmDados.IBQryNotasBIMESTRE.AsString               := bimestre;
          DmDados.IBQryNotasINSTRUMENTO.AsString            := CbInstrumentos.Text;
          DmDados.IBQryNotasCODIGO_TURMA_NOTAS.AsString     := DmDados.IBQryAlunoTurmaCODIGO_TURMA.AsString;
          DmDados.IBQryNotasESCOLA.AsString                 := DmDados.IBQryAlunoTurmaESCOLA.AsString;
          DmDados.IBQryNotasDISCIPLINA_NOTAS.AsString       := DmDados.IBQryDisciplinaCODIGO.AsString;
          DmDados.IBQryNotasNOTA.AsInteger                  :=0;
          DmDados.IBQryNotas.Post;
        end
      else
        begin
          DmDados.IBQryNotas.Edit;
          DmDados.IBQryNotasMATRICULA_ALUNO_NOTAS.AsString  := DmDados.IBQryAlunoTurmaMATRICULA_ALUNO.AsString;
          DmDados.IBQryNotasBIMESTRE.AsString               := bimestre;
          DmDados.IBQryNotasINSTRUMENTO.AsString            := CbInstrumentos.Text;
          DmDados.IBQryNotasCODIGO_TURMA_NOTAS.AsString     := DmDados.IBQryAlunoTurmaCODIGO_TURMA.AsString;
          DmDados.IBQryNotasESCOLA.AsString                 := DmDados.IBQryAlunoTurmaESCOLA.AsString;
          DmDados.IBQryNotasDISCIPLINA_NOTAS.AsString       := DmDados.IBQryDisciplinaCODIGO.AsString;
          DmDados.IBQryNotasNOTA.AsInteger                  :=0;
          DmDados.IBQryNotas.Post;
        end;
      DmDados.IBQryAlunoTurma.Next;
    end;
  auto :=false;
  DmDados.IBQryNotas.Close;
  DmDados.IBQryNotas.Open;
  DmDados.IBQryNotas.First;
  dbedtnota.SetFocus;
end;
Osmar

Osmar

Responder

Posts

22/04/2014

Cauê Nishijima

No segundo locate como se trata de mais de um valor que esta sendo pesquisado melhor utilizar o filter:

  auto := true;
  while not DmDados.IBQryAlunoTurma.eof do
    begin
      if not DmDados.IBQryNotas.Locate('MATRICULA_ALUNO_NOTAS',DmDados.IBQryAlunoTurmaMATRICULA_ALUNO.AsString,[loPartialKey]) then
        begin
          DmDados.IBQryNotas.filtered := false;
          DmDados.IBQryNotas.filter := 'INSTRUMENTO in (Observação,Trabalho Individual,Trabalho em Grupo,Prova)' 
          DmDados.IBQryNotas.filtered := false;
          if DmDados.IBQryNotas.RecordCount = 0 then

          DmDados.IBQryNotas.Insert;
          DmDados.IBQryNotasMATRICULA_ALUNO_NOTAS.AsString  := DmDados.IBQryAlunoTurmaMATRICULA_ALUNO.AsString;
          DmDados.IBQryNotasBIMESTRE.AsString               := bimestre;
          DmDados.IBQryNotasINSTRUMENTO.AsString            := CbInstrumentos.Text;
          DmDados.IBQryNotasCODIGO_TURMA_NOTAS.AsString     := DmDados.IBQryAlunoTurmaCODIGO_TURMA.AsString;
          DmDados.IBQryNotasESCOLA.AsString                 := DmDados.IBQryAlunoTurmaESCOLA.AsString;
          DmDados.IBQryNotasDISCIPLINA_NOTAS.AsString       := DmDados.IBQryDisciplinaCODIGO.AsString;
          DmDados.IBQryNotasNOTA.AsInteger                  :=0;
          DmDados.IBQryNotas.Post;
        end
      else
        begin
          DmDados.IBQryNotas.Edit;
          DmDados.IBQryNotasMATRICULA_ALUNO_NOTAS.AsString  := DmDados.IBQryAlunoTurmaMATRICULA_ALUNO.AsString;
          DmDados.IBQryNotasBIMESTRE.AsString               := bimestre;
          DmDados.IBQryNotasINSTRUMENTO.AsString            := CbInstrumentos.Text;
          DmDados.IBQryNotasCODIGO_TURMA_NOTAS.AsString     := DmDados.IBQryAlunoTurmaCODIGO_TURMA.AsString;
          DmDados.IBQryNotasESCOLA.AsString                 := DmDados.IBQryAlunoTurmaESCOLA.AsString;
          DmDados.IBQryNotasDISCIPLINA_NOTAS.AsString       := DmDados.IBQryDisciplinaCODIGO.AsString;
          DmDados.IBQryNotasNOTA.AsInteger                  :=0;
          DmDados.IBQryNotas.Post;
        end;
      DmDados.IBQryAlunoTurma.Next;
    end;
  auto :=false;
  DmDados.IBQryNotas.Close;
  DmDados.IBQryNotas.Open;
  DmDados.IBQryNotas.First;
  dbedtnota.SetFocus;
end;

Responder

22/04/2014

Cauê Nishijima

No segundo locate como se trata de mais de um valor que esta sendo pesquisado melhor utilizar o filter:

  auto := true;
  while not DmDados.IBQryAlunoTurma.eof do
    begin
      if not DmDados.IBQryNotas.Locate('MATRICULA_ALUNO_NOTAS',DmDados.IBQryAlunoTurmaMATRICULA_ALUNO.AsString,[loPartialKey]) then
        begin
          DmDados.IBQryNotas.filtered := false;
          DmDados.IBQryNotas.filter := 'INSTRUMENTO in (Observação,Trabalho Individual,Trabalho em Grupo,Prova)' 
          DmDados.IBQryNotas.filtered := True;
          if DmDados.IBQryNotas.RecordCount = 0 then
          begin
            DmDados.IBQryNotas.Insert;
            DmDados.IBQryNotasMATRICULA_ALUNO_NOTAS.AsString  := DmDados.IBQryAlunoTurmaMATRICULA_ALUNO.AsString;
            DmDados.IBQryNotasBIMESTRE.AsString               := bimestre;
            DmDados.IBQryNotasINSTRUMENTO.AsString            := CbInstrumentos.Text;
            DmDados.IBQryNotasCODIGO_TURMA_NOTAS.AsString     := DmDados.IBQryAlunoTurmaCODIGO_TURMA.AsString;
            DmDados.IBQryNotasESCOLA.AsString                 := DmDados.IBQryAlunoTurmaESCOLA.AsString;
            DmDados.IBQryNotasDISCIPLINA_NOTAS.AsString       := DmDados.IBQryDisciplinaCODIGO.AsString;
            DmDados.IBQryNotasNOTA.AsInteger                  :=0;
            DmDados.IBQryNotas.Post;
          end;
          DmDados.IBQryNotas.filtered := false;
      end
      else
        begin
          DmDados.IBQryNotas.Edit;
          DmDados.IBQryNotasMATRICULA_ALUNO_NOTAS.AsString  := DmDados.IBQryAlunoTurmaMATRICULA_ALUNO.AsString;
          DmDados.IBQryNotasBIMESTRE.AsString               := bimestre;
          DmDados.IBQryNotasINSTRUMENTO.AsString            := CbInstrumentos.Text;
          DmDados.IBQryNotasCODIGO_TURMA_NOTAS.AsString     := DmDados.IBQryAlunoTurmaCODIGO_TURMA.AsString;
          DmDados.IBQryNotasESCOLA.AsString                 := DmDados.IBQryAlunoTurmaESCOLA.AsString;
          DmDados.IBQryNotasDISCIPLINA_NOTAS.AsString       := DmDados.IBQryDisciplinaCODIGO.AsString;
          DmDados.IBQryNotasNOTA.AsInteger                  :=0;
          DmDados.IBQryNotas.Post;
        end;
      DmDados.IBQryAlunoTurma.Next;
    end;
  auto :=false;
  DmDados.IBQryNotas.Close;
  DmDados.IBQryNotas.Open;
  DmDados.IBQryNotas.First;
  dbedtnota.SetFocus;
end;

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar