Codigo botao salvar está com algum erro

Delphi

24/12/2003

Tenho um banco com paradox, utilizando dbedits, datamodules, ttable e datasource.

Fiz os botoes pra incluir, alterar, excluir,salvar e cancelar.

O próprio usuário digita o código. Levei um certo tempo pra conseguir fazer com que o sistema não deixe o usuário repetir o mesmo código(chave primaria), porém, se eu for alterar somente um nome de um determinado cadastro, o sistema emite a mensagem dizendo que este código já esta cadastrado (porém eu não estou adicionando um novo cadastro e sim editando um já existente). Abaixo vai o código para quem quiser me ajudar.

procedure TFrmcadfunc.btnsalvarClick(Sender: TObject);
begin
If udmdados.tbdadosfuncCodfunc.IsNull =true then begin
showmessage (´Código não pode ser vazio!´);
dbedit1.SetFocus;
exit;
end;
If not udmdados.tbdadosfunccons.locate(´Codfunc´,dbedit1.Text,[])
then
begin
try
udmdados.tbdadosfunc.Append;
pdados.Enabled:=false;
btnincluir.Enabled:=true;
btnalterar.Enabled:=true;
btncancelar.Enabled:=false;
btnsalvar.Enabled:=false;
btnexcluir.Enabled:=true;
btnsair.Enabled:=true;
udmdados.tbdadosfunc.Cancel;
except
showmessage(´Errro ao gravar dados´);
end;
end
else begin
showmessage(´Código já existe!´);
dbedit1.SetFocus;
//udmdados.tbdadosfunc.Cancel;
end;
end;


Wagsilvasilva

Wagsilvasilva

Curtidas 0

Respostas

Marcos Conceição

Marcos Conceição

24/12/2003

Vc tem um botão salvar somente para quando for fazer inclusão??
Foi isso que entendi na rotina abaixo.

[u:6278a675a6]botao salvar[/u:6278a675a6]

Activecontrol:=nil; // é importante colocar no botões para tirar o foco do dbedit
If modo=alteracao then begin


end;
if modo=inclusao then begin

end;

Espero que ajude em algo,
sem mais,

Marcos


GOSTEI 0
Wagsilvasilva

Wagsilvasilva

24/12/2003

Tenho apenas um botao salvar. ele serve tanto para salvar uma alteracao quanto uma inclusao.


GOSTEI 0
Wagsilvasilva

Wagsilvasilva

24/12/2003

Cara, entendi tua lógica. Acho que deve ser isso ai. Vou tentar fazer isso no meu sistema. Valeu


GOSTEI 0
Wagsilvasilva

Wagsilvasilva

24/12/2003

Emerson, fiz o q tu sugeriu, contudo apareceu um erro que não faço idéia de como corrigir.
Operator not applicable to this operand type


GOSTEI 0
Moonlight

Moonlight

24/12/2003

Emerson, fiz o q tu sugeriu, contudo apareceu um erro que não faço idéia de como corrigir. Operator not applicable to this operand type


Vai ser nessa parte:

If (udmdados.tbdadosfunc.State = dsInsert) and 
            not udmdados.tbdadosfunccons.locate(´Codfunc´,dbedit1.Text,[]) 


Coloca parenteses em cada uma das expressoes, assim:

If ((udmdados.tbdadosfunc.State = dsInsert) and 
            not (udmdados.tbdadosfunccons.locate(´Codfunc´,dbedit1.Text,[])) )



GOSTEI 0
POSTAR