1) Tenho a ídea de, ao clikar no botão gravar, sejam feitas algumas considerações;
A - Uma pesquiza usando uma query auxiliar no Form que retornara todos os dados da tabela Clientes onde o Campo cPF_CNPJ seja igual ao preenchido no DBEditCPF_CNPJ.Text.
B - Depois verifica o estado da Query principal do Form:
Caso seja dsInsert, e caso o CPF ou CNPJ digitado não tenha cadastro na tabela, aí dá um Post e grava. Até aí esta ok.
Caso seja dsEdit, e caso o CPF ou CNPJ digitado seja o mesmo do cadastro na tabela, aí dá um Post e grava. Até aí esta ok, depois verifica se
o CPF ou CNPJ digitado não seja o mesmo do cadastro na tabela e não tenha cadastro na tabela, aí não Posta e aborta. Aqui está dando erro, está gravando mesmo assim.
Esse é o Código que to usando:
procedure TCClientes.BitBtnGravarClick(Sender: TObject);
begin
QryClientes2.Close;
QryClientes2.Sql.Clear;
QryClientes2.SQL.Add('Select * from Clientes where CPF_CNPJ = '+''''+DBEditCPF_CNPJ.Text+''''+'');
QryClientes2.Open;
if QryClientes.State in [dsInsert] then
begin
if not QryClientes2.Eof then //já existe cadastro
begin
ShowMessage ('Já existe Cadastrado com este CPF/CNPJ. Pesquize!');
Abort;
end
else
begin
QryClientes.Post;
ShowMessage ('Cadastrado efetuado com sucesso!');
end
end
else if QryClientes.State in [dsEdit] then
begin
if QryClientesCPF_CNPJ.Value = DBEditCPF_CNPJ.Text then
begin
QryClientes.Post;
ShowMessage ('Alteração efetuada com sucesso!');
end
else
begin
if not QryClientes2.Eof then //já existe cadastro - Aqui está dando erro, está gravando mesmo assim.
begin
ShowMessage ('Já existe Cadastrado com este CPF/CNPJ. Pesquize!');
Abort;
end
end
end
end;
2) Outra coisa e que eu quero forçar o cara a digitar todos os dígitos do CPF ou CGC.
To usando o código abaixo mas quando o cara não digita os digitos todos, ele anula o Post e fica aguardando o cara terminar de digitar pra liberar o Post em vez de dar mensagem, porem isso só esta acontecendo no estado dsEdit da Query.
Eu usei o código abaixo mas num funciona com a query no estado dsEdit!
procedure TCClientes.QryClientesBeforePost(DataSet: TDataSet);
begin
if DBRadioGroupTipo.ItemIndex = 0 then
begin
if (Length(DBEditCPF_CNPJ.Text) <> 11) then
begin
ShowMessage('CPF tem 11 Dígitos');
DBEditCPF_CNPJ.SetFocus; // posiciona o cursor
Abort; // não grava e continua editando
end
end
else
begin
if (Length(DBEditCPF_CNPJ.Text) <> 14) then
begin
ShowMessage('CNPJ tem 14 Dígitos');
DBEditCPF_CNPJ.SetFocus; // posiciona o cursor
Abort; // não grava e continua editando
end
end
end
Iteressantes que os 2 problemas acotecem no modo dsEdit.
Pergunta
Carlos Rocha
1) Tenho a ídea de, ao clikar no botão gravar, sejam feitas algumas considerações;
A - Uma pesquiza usando uma query auxiliar no Form que retornara todos os dados da tabela Clientes onde o Campo cPF_CNPJ seja igual ao preenchido no DBEditCPF_CNPJ.Text.
B - Depois verifica o estado da Query principal do Form:
Caso seja dsInsert, e caso o CPF ou CNPJ digitado não tenha cadastro na tabela, aí dá um Post e grava. Até aí esta ok.
Caso seja dsEdit, e caso o CPF ou CNPJ digitado seja o mesmo do cadastro na tabela, aí dá um Post e grava. Até aí esta ok, depois verifica se
o CPF ou CNPJ digitado não seja o mesmo do cadastro na tabela e não tenha cadastro na tabela, aí não Posta e aborta. Aqui está dando erro, está gravando mesmo assim.
Esse é o Código que to usando:
2) Outra coisa e que eu quero forçar o cara a digitar todos os dígitos do CPF ou CGC. To usando o código abaixo mas quando o cara não digita os digitos todos, ele anula o Post e fica aguardando o cara terminar de digitar pra liberar o Post em vez de dar mensagem, porem isso só esta acontecendo no estado dsEdit da Query. Eu usei o código abaixo mas num funciona com a query no estado dsEdit!Iteressantes que os 2 problemas acotecem no modo dsEdit.
Da uma força aí pessoal.
Oh pessoal. Da uma força ai!
Editado por Carlos RochaLink para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.