Por que isso acontece...

01/02/2003

1

:?

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 (碈ampo C覦IGO DO ASSOCIADO est em branco.,
                                    碈adastro cancelado., MB_OK + MB_ICONERROR);
              TbCadAssCodigoAss.FocusControl;
              Abort;
        end;

     if TbCadAssNomeAss.isnull then
        begin
           application.messagebox (碈ampo NOME DO ASSOCIADO est em branco.,
                                   碈adastro 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:=磇dcodass;
              if TbCadAss.FindKey([DBEdit6.text])=true then
                 begin
                    ShowMessage(碞鷐ero 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鈓etro da chave secund醨ia - CODASS

O q ocorre q quando vou inserir um novo registro mesmo j existente ou n鉶 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
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(碢reencha o campo respons醰el,碆ibloZero,0);
edtresponsavel.setfocus;
end;
end
else
begin
Application.MessageBox(碢reencha o campo n鷐ero de paginas,碆ibloZero,0);
edtpaginas.setfocus;
end;
end
else
begin
Application.MessageBox(碢reencha o campo editora,碆ibloZero,0);
lkeditora.SetFocus;
end;
end
else
begin
Application.MessageBox(碢reencha o campo data,碆ibloZero,0);
edtdata.setfocus;
end;
end
else
begin
Application.MessageBox(碢reencha o campo n鷐ero de cataloga玢o,碆ibloZero,0);
edtNcatalogacao.setfocus;
end;
end
else
begin
Application.MessageBox(碢reencha o campo doa玢o,碆ibloZero,0);
edtdoacao.setfocus;
end;
end
else
begin
Application.MessageBox(碢reencha o campo situa玢o,碆ibloZero,0);
cbsituacao.SetFocus;
end;
end
else
begin
Application.MessageBox(碢reencha o campo autor,碆ibloZero,0);
lkautor.setfocus;
end;
end
else
begin
Application.MessageBox(碢reencha o campo t髉ico,碆ibloZero,0);
lktopico.setfocus;
end;
end
else
begin
Application.MessageBox(碢reencha o campo t韙ulo,碆ibloZero,0);
edttitulo.setfocus;
end;

Ele verifica se o campo est cm digitos ou n鉶 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鉶 lmbro se ess not entra ae
begin
table1.filtered:=false;
table1.filter:=磏ome=+#39+edit1.text+*+39;
table1.filtered:=true;
datasource1.dataset:=table1;
end
else
begin
application.messagebox(碈骴igo j existe,碋xemplo,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 := 磇dcodass;
Open;
try
if FindKey([DBEdit6.text]) then
begin
TbCadAss.Cancel;
TbCadAss.RecNo := RecNo;
TbCadAss.Edit;
ShowMessage(碞鷐ero de assossiado j existe. Veririque!);
end
else
dbedit4.SetFocus;
finally
Close;
end;
finally
Free;
end;
finally
TbCadAss.EnableControls;
end;
end;


Responder