Por que isso acontece...
:?
Por favor me ajudem...
Uso tabela PARADOX 7.0 e Delphi 5.0
Em minha tabela no evento beforepost tem a seguinte sintaxe:
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
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
Curtidas 0
Respostas
Skaarj
01/02/2003
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)
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)
GOSTEI 0
Anonymous
01/02/2003
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;
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;
GOSTEI 0