| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
carbox Colaborador

Registrado: Quarta-Feira, 3 de Março de 2010 Mensagens: 1471
|
Enviada: Ter Jul 06, 2010 7:45 am Assunto: Verificar se existe registro! [RESOLVIDO] |
|
|
Bom dia pessoal
Bom acredito que seja algo simples, mas em mim deu branco. Estou sem idéia...
Gostaria de implementar no evento BeforePost o código para evitar que um determinado registro seja duplicado, exemplo CPF/CNPJ.
Não estou querendo usar "chaves" (PK, FK).
Alguem tem alguma dica?
Editado pela última vez por carbox em Sex Jul 09, 2010 9:02 am, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
douglasmaicon Aprendiz


Registrado: Sexta-Feira, 28 de Mai de 2010 Mensagens: 255 Localização: São João Del Rei - MG
|
Enviada: Ter Jul 06, 2010 8:52 am Assunto: |
|
|
Bom dia!
Tenta usar um locate na tabela.
a sintaxe é simples:
if tablea.locate('campo desejado', valor variante,[loOpitions]) then
string ------------ edit por ex. -- se é locaseinsensitive ou loPartialkey
espero ter ajudado se nao der certo avise |
|
| Voltar ao Topo |
|
 |
carbox Colaborador

Registrado: Quarta-Feira, 3 de Março de 2010 Mensagens: 1471
|
Enviada: Ter Jul 06, 2010 3:02 pm Assunto: |
|
|
Estranho... com a função locate esta travando o sistema!
Alguma dica
| douglasmaicon escreveu: | Bom dia!
Tenta usar um locate na tabela.
a sintaxe é simples:
if tablea.locate('campo desejado', valor variante,[loOpitions]) then
string ------------ edit por ex. -- se é locaseinsensitive ou loPartialkey
espero ter ajudado se nao der certo avise |
|
|
| Voltar ao Topo |
|
 |
felipecaputo Colaborador


Registrado: Quinta-Feira, 13 de Mai de 2010 Mensagens: 1719 Localização: Florianópolis / SC
|
Enviada: Ter Jul 06, 2010 3:41 pm Assunto: |
|
|
deve ser pq está no momento do post e vc está mudando o ponteiro da msm tabela. tenta criar um TSQLDataSet dinamico que faça um select procurando cpf/cnpj.
| Código: | SQLDatSet.ComandText := 'Select id_cliente from clientes where cpd_cnpj = ' + cpfcnpjProcurado;
SQLDatSet.open;
if not SQLDatSet.eof then
Raise Exception.Create('O CPJ/CNPJ informado já existe!').
|
Existem outras opções para fazer isso. No nosso sistema aki, quando a pessoa vai iniciar um cadastro eu ja busco, no mesmo momento ele no banco. Se existir abre para edição, senão abre para inserção. _________________ if Post.State = psResolvido then
Post.Caption := Post.Caption + ' [RESOLVIDO]';
_____________________________________________
O único homem que está isento de erros, é aquele que não arrisca acertar. Albert Einstein |
|
| Voltar ao Topo |
|
 |
carbox Colaborador

Registrado: Quarta-Feira, 3 de Março de 2010 Mensagens: 1471
|
Enviada: Qui Jul 08, 2010 9:14 am Assunto: |
|
|
Tinha razão... Coloquei no evento OnKeyDown do componente o codigo abaixo. Daí ele já faz a busca no banco e ver se existe o CPF/CNPJ, ficou assim:
| Código: |
procedure TFClientes.DBEdit9KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var canClose:Boolean;
begin
canClose:=False;
inherited;
if (key = 13) or (key = 9) Then
Begin
With ExecSql('Select * from Clientes where CPF_CNPJ = :Nom',varArrayOf([DbEdit9.Text]) ) Do
Begin
if not(bof and eof) then
if Application.MessageBox('Já existe um CPF/CNPJ cadastrado. Deseja, mesmo assim, continuar?',pchar(Application.Title),MB_YESNO)=7 then
canClose:=True
else DbEdit17.SetFocus
else DbEdit17.SetFocus;
End;
end;
if Canclose then Close;
end; |
| felipecaputo escreveu: | deve ser pq está no momento do post e vc está mudando o ponteiro da msm tabela. tenta criar um TSQLDataSet dinamico que faça um select procurando cpf/cnpj.
| Código: | SQLDatSet.ComandText := 'Select id_cliente from clientes where cpd_cnpj = ' + cpfcnpjProcurado;
SQLDatSet.open;
if not SQLDatSet.eof then
Raise Exception.Create('O CPJ/CNPJ informado já existe!').
|
Existem outras opções para fazer isso. No nosso sistema aki, quando a pessoa vai iniciar um cadastro eu ja busco, no mesmo momento ele no banco. Se existir abre para edição, senão abre para inserção. |
|
|
| Voltar ao Topo |
|
 |
oneshotbr Colaborador


Registrado: Quarta-Feira, 6 de Mai de 2009 Mensagens: 1948 Localização: Taubaté - SP
|
Enviada: Qui Jul 08, 2010 11:33 am Assunto: |
|
|
| Se o seu problema foi resolvido mude o título para RESOLVIDO. |
|
| Voltar ao Topo |
|
 |
|