Fórum Segundo locate? #476760
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
Gostei + 0
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)