select parcialmente com erro.
Amigos,
O codigo abaixo esta funcionando parcialmente, ou seja, salvo normalmente a disciplina na turma, mas ao tentar salvar a mesma disciplina em outra turma acontece o erro, vem a mensagem informando que a disciplina já está cadastrada:
with DmDados.IBQrylivre2 do
begin
Close;
SQL.Clear;
SQL.ADD('SELECT CODIGO From DISCIPLINA Where Nome_disciplina = :Dados');
ParamByName('dados').asString:= dbEdtDisciplina.Text;
Open;
if (not isempty) then
begin
if (FieldByName('CODIGO').AsString <> IBQryDisciplinaCODIGO.AsString) then
begin
Application.MessageBox('Disciplina já cadastrada! verifique e tente novamente', 'Atenção', mb_iconinformation + mb_ok);
begin
BtnCancelarDisciplina.Click;
exit;
end;
end;
end;
end; DmDados.IBQryDisciplina.Post; ----------------------------------------------------- estes são os campos da tabela disciplina: ID_CODIGO
NOME_DISCIPLINA
CODIGO_TURMA
ESCOLA (chave estrangeira)
Agradeço antecipadamente a atenção. Osmar.
begin
Close;
SQL.Clear;
SQL.ADD('SELECT CODIGO From DISCIPLINA Where Nome_disciplina = :Dados');
ParamByName('dados').asString:= dbEdtDisciplina.Text;
Open;
if (not isempty) then
begin
if (FieldByName('CODIGO').AsString <> IBQryDisciplinaCODIGO.AsString) then
begin
Application.MessageBox('Disciplina já cadastrada! verifique e tente novamente', 'Atenção', mb_iconinformation + mb_ok);
begin
BtnCancelarDisciplina.Click;
exit;
end;
end;
end;
end; DmDados.IBQryDisciplina.Post; ----------------------------------------------------- estes são os campos da tabela disciplina: ID_CODIGO
NOME_DISCIPLINA
CODIGO_TURMA
ESCOLA (chave estrangeira)
Agradeço antecipadamente a atenção. Osmar.
Osmar
Curtidas 0
Respostas
Flavia Santos
13/11/2010
Amigos,
O codigo abaixo esta funcionando parcialmente, ou seja, salvo normalmente a disciplina na turma, mas ao tentar salvar a mesma disciplina em outra turma acontece o erro, vem a mensagem informando que a disciplina já está cadastrada:
with DmDados.IBQrylivre2 do
begin
Close;
SQL.Clear;
SQL.ADD('SELECT CODIGO From DISCIPLINA Where Nome_disciplina = :Dados');
ParamByName('dados').asString:= dbEdtDisciplina.Text;
Open;
if (not isempty) then
begin
if (FieldByName('CODIGO').AsString <> IBQryDisciplinaCODIGO.AsString) then
begin
Application.MessageBox('Disciplina já cadastrada! verifique e tente novamente', 'Atenção', mb_iconinformation + mb_ok);
begin
BtnCancelarDisciplina.Click;
exit;
end;
end;
end;
end; DmDados.IBQryDisciplina.Post; ----------------------------------------------------- estes são os campos da tabela disciplina: ID_CODIGO
NOME_DISCIPLINA
CODIGO_TURMA
ESCOLA (chave estrangeira)
Agradeço antecipadamente a atenção. Osmar.
begin
Close;
SQL.Clear;
SQL.ADD('SELECT CODIGO From DISCIPLINA Where Nome_disciplina = :Dados');
ParamByName('dados').asString:= dbEdtDisciplina.Text;
Open;
if (not isempty) then
begin
if (FieldByName('CODIGO').AsString <> IBQryDisciplinaCODIGO.AsString) then
begin
Application.MessageBox('Disciplina já cadastrada! verifique e tente novamente', 'Atenção', mb_iconinformation + mb_ok);
begin
BtnCancelarDisciplina.Click;
exit;
end;
end;
end;
end; DmDados.IBQryDisciplina.Post; ----------------------------------------------------- estes são os campos da tabela disciplina: ID_CODIGO
NOME_DISCIPLINA
CODIGO_TURMA
ESCOLA (chave estrangeira)
Agradeço antecipadamente a atenção. Osmar.
Amigo,
Nesta linha SQL.ADD('SELECT CODIGO From DISCIPLINA Where Nome_disciplina = :Dados');
ParamByName('dados').asString:= dbEdtDisciplina.Text; seu select está procurando a disciplina cadastrada independente da turma.
Acho que o select ficaria melhor assim:
SQL>ADD('Select CODIGO from DISCIPLINA where Nome_Disciplina = :Dados and Turma = :Turma');
ParamByName('Dados').asString := dbEdtDisciplina.Text;
ParamByName('Turma').asString := dbEdtTurma.Text;
GOSTEI 0
Osmar
13/11/2010
Flávia,
Agradeço pela dica, com mais algumas modificações consegui resolver o problema, veja como ficou:
with DmDados.IBQrylivre2 do
begin
Close;
SQL.Clear;
SQL.ADD('Select CODIGO from DISCIPLINA where Nome_Disciplina = :Dados and codigo_Turma = :turma');
ParamByName('dados').asString:= dbEdtDisciplina.Text;
ParamByName('turma').AsInteger := DmDados.IBQryDisciplinaCODIGO_TURMA.AsInteger;
Open;
if (not isempty) then
begin
if (FieldByName('CODIGO').AsString <> IBQryDisciplinaCODIGO.AsString) then
begin
Application.MessageBox('Disciplina já cadastrada! verifique e tente novamente', 'Atenção', mb_iconinformation + mb_ok);
begin
BtnCancelarDisciplina.Click;
exit;
end;
end;
end;
end; DmDados.IBQryDisciplina.Post;
1 - (adapitei esta linha porque não tenho o edit turma no form) ParamByName('turma').AsInteger := DmDados.IBQryDisciplinaCODIGO_TURMA.AsInteger;
2 - (observe que mudei no final do select TURMA por NOME_DISCIPLINA SQL.ADD('Select CODIGO from DISCIPLINA where Nome_Disciplina = :Dados and codigo_Turma = :turma');
Mais uma vez agradeço a atenção, pois mim ajutou bastante para resolver o problema. Osmar.
begin
Close;
SQL.Clear;
SQL.ADD('Select CODIGO from DISCIPLINA where Nome_Disciplina = :Dados and codigo_Turma = :turma');
ParamByName('dados').asString:= dbEdtDisciplina.Text;
ParamByName('turma').AsInteger := DmDados.IBQryDisciplinaCODIGO_TURMA.AsInteger;
Open;
if (not isempty) then
begin
if (FieldByName('CODIGO').AsString <> IBQryDisciplinaCODIGO.AsString) then
begin
Application.MessageBox('Disciplina já cadastrada! verifique e tente novamente', 'Atenção', mb_iconinformation + mb_ok);
begin
BtnCancelarDisciplina.Click;
exit;
end;
end;
end;
end; DmDados.IBQryDisciplina.Post;
1 - (adapitei esta linha porque não tenho o edit turma no form) ParamByName('turma').AsInteger := DmDados.IBQryDisciplinaCODIGO_TURMA.AsInteger;
2 - (observe que mudei no final do select TURMA por NOME_DISCIPLINA SQL.ADD('Select CODIGO from DISCIPLINA where Nome_Disciplina = :Dados and codigo_Turma = :turma');
Mais uma vez agradeço a atenção, pois mim ajutou bastante para resolver o problema. Osmar.
GOSTEI 0
Osmar
13/11/2010
Flávia,
Agradeço pela dica, com mais algumas modificações consegui resolver o problema, veja como ficou:
with DmDados.IBQrylivre2 do
begin
Close;
SQL.Clear;
SQL.ADD('Select CODIGO from DISCIPLINA where Nome_Disciplina = :Dados and codigo_Turma = :turma');
ParamByName('dados').asString:= dbEdtDisciplina.Text;
ParamByName('turma').AsInteger := DmDados.IBQryDisciplinaCODIGO_TURMA.AsInteger;
Open;
if (not isempty) then
begin
if (FieldByName('CODIGO').AsString <> IBQryDisciplinaCODIGO.AsString) then
begin
Application.MessageBox('Disciplina já cadastrada! verifique e tente novamente', 'Atenção', mb_iconinformation + mb_ok);
begin
BtnCancelarDisciplina.Click;
exit;
end;
end;
end;
end; DmDados.IBQryDisciplina.Post;
1 - (adapitei esta linha porque não tenho o edit turma no form) ParamByName('turma').AsInteger := DmDados.IBQryDisciplinaCODIGO_TURMA.AsInteger;
2 - (observe que mudei no final do select TURMA por NOME_DISCIPLINA SQL.ADD('Select CODIGO from DISCIPLINA where Nome_Disciplina = :Dados and codigo_Turma = :turma');
Mais uma vez agradeço a atenção, pois mim ajudou bastante a resolver o problema. Osmar.
begin
Close;
SQL.Clear;
SQL.ADD('Select CODIGO from DISCIPLINA where Nome_Disciplina = :Dados and codigo_Turma = :turma');
ParamByName('dados').asString:= dbEdtDisciplina.Text;
ParamByName('turma').AsInteger := DmDados.IBQryDisciplinaCODIGO_TURMA.AsInteger;
Open;
if (not isempty) then
begin
if (FieldByName('CODIGO').AsString <> IBQryDisciplinaCODIGO.AsString) then
begin
Application.MessageBox('Disciplina já cadastrada! verifique e tente novamente', 'Atenção', mb_iconinformation + mb_ok);
begin
BtnCancelarDisciplina.Click;
exit;
end;
end;
end;
end; DmDados.IBQryDisciplina.Post;
1 - (adapitei esta linha porque não tenho o edit turma no form) ParamByName('turma').AsInteger := DmDados.IBQryDisciplinaCODIGO_TURMA.AsInteger;
2 - (observe que mudei no final do select TURMA por NOME_DISCIPLINA SQL.ADD('Select CODIGO from DISCIPLINA where Nome_Disciplina = :Dados and codigo_Turma = :turma');
Mais uma vez agradeço a atenção, pois mim ajudou bastante a resolver o problema. Osmar.
GOSTEI 0