erro ao identificar registro repetido
Uso delphi 7 e banco de dados firebird e componentes da paleta interbase.
Possuo esta rotina no botao salvar do dbnavigator porem quando digito um nome repetido ou seja que ja possuo cadastrado na tabela ele me mostra a mensagem que o registro ja existe porem apos a mensagem gera o erro que o ibdataset nao esta em modo de insercao ou edicao. Se retiro a rotina do locate ela funciona corretamente ao inserir um novo registro. O que estou errando? Aguardo uma resposta. Obrigado.
if Button = NbPost then //botao salvar
begin
//menus
MainMenuSair.Enabled:=true; //MainMenuSair desabilitado
MainMenuPesquisa.Enabled:=true; //MainMenuConsulta desabilitado
//PopupMenuSair.Enabled:=false; //PopupMenuSair desabilitado
//PopupMenuConsulta.Enabled:=false; //PopupMenuConsulta desabilitado
//verifica campo em branco
//e notifica usuario
if dbeditUF.Text = '' then
begin
messagebeep(16);
messagebox(FormCadastro.Handle,'Realize a pesquisa pelo "Cep",'#13'campo esta em branco!','AgenTel - Salvar',mb_Ok+MB_ICONQUESTION);
abort;
end
else
if dbeditCIDADE.Text = '' then
begin
messagebeep(16);
messagebox(FormCadastro.Handle,'Realize a pesquisa pelo "Cep",'#13'campo esta em branco!','AgenTel - Salvar',mb_Ok+MB_ICONQUESTION);
abort;
end
else
if dbeditBAIRRO.Text = '' then
begin
messagebeep(16);
messagebox(FormCadastro.Handle,'Realize a pesquisa pelo "Cep",'#13'campo esta em branco!','AgenTel - Salvar',mb_Ok+MB_ICONQUESTION);
abort;
end
else
if DBCBselecCLASSE.Text = '' then
begin
messagebeep(16);
messagebox(FormCadastro.Handle,'Selecione a "Classe" do registro,'#13'campo esta em branco!','AgenTel - Salvar',mb_Ok+MB_ICONQUESTION);
abort;
end
else
if DBEditNOMECOMPLETO.Text = '' then
begin
messagebeep(16);
messagebox(FormCadastro.Handle,'Preencha o campo "Nome Completo",'#13'campo esta em branco!','AgenTel - Salvar',mb_Ok+MB_ICONQUESTION);
abort;
end
else
if (Length (dbEditcep.Text) < 8) or (Length (dbEditcep.Text) > 8) then
begin
messagebeep(16);
messagebox(FormCadastro.Handle,'Preencha o campo "Cep" corretamente!'#13'Formato: 00.000-000. Digite'#13'somente números.','AgenTel - Salvar',mb_Ok+MB_ICONQUESTION);
abort;
dbeditCep.SetFocus;
end
else
if Length (dbEditTelRes.Text) < 14 then
begin
messagebeep(16);
messagebox(FormCadastro.Handle,'Preencha o campo "Telefone Residencial" corretamente!'#13'Formato: (00)0000-0000.'#13'Digite somente números.','AgenTel - Salvar',mb_Ok+MB_ICONQUESTION);
abort;
dbeditCep.SetFocus;
end
else
if Length (dbEditTelCel.Text) < 14 then
begin
messagebeep(16);
messagebox(FormCadastro.Handle,'Preencha o campo "Telefone Celular" corretamente!'#13'Formato: (00)0000-0000.'#13'Digite somente números.','AgenTel - Salvar',mb_Ok+MB_ICONQUESTION);
abort;
dbeditCep.SetFocus;
end
else
if Length (dbEditTelCom.Text) < 14 then
begin
messagebeep(16);
messagebox(FormCadastro.Handle,'Preencha o campo "Telefone Comercial" corretamente!'#13'Formato: (00)0000-0000.'#13'Digite somente números.','AgenTel - Salvar',mb_Ok+MB_ICONQUESTION);
abort;
dbeditCep.SetFocus;
end
else
if DTM.IBTABcadastro.Locate('NomeCompleto',DBEditNOMECOMPLETO.Text,[loCaseInsensitive, loPartialKey]) then
begin
messagebeep (16);
messagebox(FormCadastro.Handle,'O registro que esta sendo'#13'inserido ja esta cadastrado!','AgenTel - Salvar',mb_Ok+MB_ICONQUESTION);
exit;
end
{begin
DTM.IBQRYregisRepetido.Close;
DTM.IBQRYregisRepetido.ParamByName('PRMregisrepetido').AsString:=''+ DTM.IBTABcadastroNOMECOMPLETO.Text +'%'; //''+ dbEditNomeCompleto.Text +'%';
DTM.IBQRYregisRepetido.Open;
DTM.IBTABcadastroNOMECOMPLETO.Clear;
if (DTM.IBQRYregisRepetido.ParamByName('NomeCompleto');
else //se resultado da pesquisa for maior ou igual a 1
begin
messagebeep(16);
messagebox(FormCadastro.Handle,'O registro que esta sendo'#13'inserido ja esta cadastrado!','AgenTel - Salvar',mb_Ok+MB_ICONQUESTION);
abort;
//DTM.IBTABcadastro.Cancel;
end;
end;}
else
begin
messagebeep(16);
messagebox(FormCadastro.Handle,'O registro foi'#13'salvo com sucesso!!','AgenTel - Salvar',mb_Ok+MB_ICONQUESTION);
//abort;
end;
endDiscussão (1)
Carregando comentários...