Por que isso acontece...

01/02/2003

0

:?

Por favor me ajudem...

Uso tabela PARADOX 7.0 e Delphi 5.0

Em minha tabela no evento beforepost tem a seguinte sintaxe:

     if TbCadAssCodigoAss.isnull then
        begin
           application.messagebox (´Campo CÓDIGO DO ASSOCIADO está em branco.´,
                                    ´Cadastro cancelado.´, MB_OK + MB_ICONERROR);
              TbCadAssCodigoAss.FocusControl;
              Abort;
        end;

     if TbCadAssNomeAss.isnull then
        begin
           application.messagebox (´Campo NOME DO ASSOCIADO está em branco.´,
                                   ´Cadastro cancelado.´, MB_OK + MB_ICONERROR);
              TbCadAssNomeAss.FocusControl;
              Abort;
        end;

No DBEDIT6.TEXT do FORM de cadastro, no evento ONKEYPRESS tem a seguinte sintaxe:

  if key=#13 then
     begin
        with tbcadass do
           begin
              TbCadAss.DisableControls;
              TbCadAss.IndexName:=´idcodass´;
              if TbCadAss.FindKey([DBEdit6.text])=true then
                 begin
                    ShowMessage(´Número de assossiado já existe. Veririque!´);
                    TbCadAss.Edit;
                    TbCadAss.EnableControls;
                 end
                  else
                     begin
                        FormCadAss.Show;
                        TbCadAss.Insert;
                        dbedit4.SetFocus;
                        TbCadAss.EnableControls;
                     end;
              end;
  end;


Obs.: IDCODASS é chave parâmetro da chave secundária - CODASS

O q ocorre é q quando vou inserir um novo registro mesmo já existente ou não na tabela sempre vai direto pra gravar e da erro informando q o campo nome está vazio, o q deve ofazer pra resolver esta situação ??

Grato pela ajuda

Jota
Jota

Jota

Responder

Posts

01/02/2003

Skaarj

Coloca isso:
if edttitulo.Text<>´´ then
begin
if lktopico.Text<>´´ then
begin
if lkautor.Text<>´´ then
begin
if cbsituacao.Text<>´´ then
begin
if edtdoacao.Text<>´´ then
begin
if edtNcatalogacao.Text<>´´ then
begin
if edtdata.Text<>´´ then
begin
if lkeditora.Text<>´´ then
begin
if edtpaginas.Text<>´´ then
begin
if edtresponsavel.text<>´´ then
begin
DtmBibloZero.Tb_Livro.Post;
end
else
begin
Application.MessageBox(´Preencha o campo responsável´,´BibloZero´,0);
edtresponsavel.setfocus;
end;
end
else
begin
Application.MessageBox(´Preencha o campo número de paginas´,´BibloZero´,0);
edtpaginas.setfocus;
end;
end
else
begin
Application.MessageBox(´Preencha o campo editora´,´BibloZero´,0);
lkeditora.SetFocus;
end;
end
else
begin
Application.MessageBox(´Preencha o campo data´,´BibloZero´,0);
edtdata.setfocus;
end;
end
else
begin
Application.MessageBox(´Preencha o campo número de catalogação´,´BibloZero´,0);
edtNcatalogacao.setfocus;
end;
end
else
begin
Application.MessageBox(´Preencha o campo doação´,´BibloZero´,0);
edtdoacao.setfocus;
end;
end
else
begin
Application.MessageBox(´Preencha o campo situação´,´BibloZero´,0);
cbsituacao.SetFocus;
end;
end
else
begin
Application.MessageBox(´Preencha o campo autor´,´BibloZero´,0);
lkautor.setfocus;
end;
end
else
begin
Application.MessageBox(´Preencha o campo tópico´,´BibloZero´,0);
lktopico.setfocus;
end;
end
else
begin
Application.MessageBox(´Preencha o campo título´,´BibloZero´,0);
edttitulo.setfocus;
end;

Ele verifica se o campo está cm digitos ou não ants de tentar gravar na tabela..
pra vc vr se existe o codigo coloca no onexit do edit [strngs]:
if not table1.eof the //agora não lmbro se ess not entra ae
begin
table1.filtered:=false;
table1.filter:=´nome=´+#39+edit1.text+´*´+39;
table1.filtered:=true;
datasource1.dataset:=table1;
end
else
begin
application.messagebox(´Código já existe´,´Exemplo´,0);
end;

Por fim botoes!!
Deixo habilitado ao iniciar o Inserir e atualizar
Clico no inserir, habilito cancelar e gravar [desabilita o resto]
Clica em grava habilita inserir [desabilita o resto]
clica em cacelar habilita inserir [desabilita o resto]
Ao carregar registro [OnCellClick do Dbgrid]:
habilita editar e apagar
Clica em apagar habilta inserir [desabilita o resto]
Clica em editar habilita cancelar e gravar [desabilita o resto]

Espero q ajude.. 8)


Responder

01/02/2003

Anonymous

Simples. Você está utilizando a mesma table para verificar a existencia do registro. Sua tabela está em modo de insert e qdo voce faz o findkey, primeiramente o registro seta postado (post) para depois executar o findkey.

if key= #13 then
begin
TbCadAss.DisableControls;
try
with TTable.Create(Self) do
try
DatabaseName := TbCadAss.DatabaseName;
SessionName := TbCadAss.SessionName;
TableName := TbCadAss.TableName;
IndexName := ´idcodass´;
Open;
try
if FindKey([DBEdit6.text]) then
begin
TbCadAss.Cancel;
TbCadAss.RecNo := RecNo;
TbCadAss.Edit;
ShowMessage(´Número de assossiado já existe. Veririque!´);
end
else
dbedit4.SetFocus;
finally
Close;
end;
finally
Free;
end;
finally
TbCadAss.EnableControls;
end;
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