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 :
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
Curtir tópico
+ 0
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
Clique aqui para fazer login e interagir na Comunidade :)