Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Carcleo

3 s simples

Recommended Posts

Ola, depois de muito quebrar a cabeça deu pra aprender um pouquinho. Porem dependerei de tirar mais algumas duvidas.

 

1) O código abaixo esta funcionando correto até o QryClientes.Post;

Porem eu gostaria de testar tambem se eu estou editando um registro existente ou postando um novo registro.

Onde estara o erro, sendo que a alteração ou inserção é executada corretamente, porem a Mensagem de "Cadastrado com sucesso!" ou "Alteração efetuada com sucesso!", não é exibida?

QryClientes2.Close;   QryClientes2.Sql.Clear;   QryClientes2.SQL.Add('Select * from Clientes where CPF_CNPJ = '+''''+DBEditCPF_CNPJ.Text+''''+'');   QryClientes2.Open;   if not QryClientes2.Eof then //já existe cadastro	  begin		 ShowMessage ('Já existe Cadastrado com este CPF/CNPJ!');		 Abort;		 BitBtnCancelar.Click;		 BitBtnNovo.Click;	  end   else	  begin		 QryClientes.Post;		 if QryClientes.State in [dsInsert] then			begin			ShowMessage ('Cadastrado com sucesso!');			end		 else if QryClientes.State in [dsEdit] then			begin			ShowMessage ('Alteração efetuada com sucesso!');			end	  end

2) Outra coisa é o seguinte.

Numa tela simples de exibição de cliente num DBGrid à medida que vou digitando o nome, gostaria que fosse filtrando no DBGrid para que a lista fosse dimiuindo até ficar apenas o registro digitado no edit.

 

3) Só mais uma última coisa:

Como fazer para que, neste DBGrid, caso o campo "Tipo de Cliente" retornar "Fisica", como fazer para colocar uma mascara de CPF no campo "CPF_CNPJ" para, neste caso, mascarar o CPF?

 

Obrigado!

 

Carlos Rocha

Compartilhar este post


Link para o post
Compartilhar em outros sites

1) Se você já deu Post na Qryclientes ele não esta mais em novo Insert ou Edit.

 

ps.: os demais questionamentos não vou me arriscar a responder pois não utilizo Delphi tem bastante tempo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É como o amigo Prog comentou, c você deu um .Post ,,, a qry saiu do modo de edicao ou insercao;

 

Axo q você poderia fazer da seguinte forma:

 

1º)

 

 

no form q adiciona ou altera os clientes (frmAddClientes) declare uma variavel global:

var Insercao: Boolean;
code do botao editar:

Insercao:= false; frmAddClientes.Show;
code botao novo:

 

Insercao:= true; frmAddClientes.Show;

no botao salvar do frmAddClientes você faz suas veficacoes antes e por fim faz :

 

 

if Insercao then begin  ShowMessage('Cadastro efetuaado com sucesso!'; end else  ShowMessage('Cadastro atualizado com sucesso!';
2º)

 

você deve estar usando o operador "=" ... troque pelo operador "Like" nas suas consultas SQL. Exemplo:

 

'SELECT * FROM CLIENTES WHERE NOME LIKE' + QuotedStr('%' + txtConsulta.Text + '%');

3º)

 

Para colocar mascara você pode fazer de inumeras maneiras ... uma delas você pode fazer uma valicao do onExit do campo TIPO. Exemplo:

 

if (txtTipo.Text = 'Física') then begin  //Coloca mascara de CPF no campo end else  //Coloca mascara de CNPJ no campo
Bm eu axo q eh issu ...

Qlquer coisa posta ae;;;;

Espero q lhe ajude...

Compartilhar este post


Link para o post
Compartilhar em outros sites

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		   endend;
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);beginif 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			 endend

Iteressantes que os 2 problemas acotecem no modo dsEdit.

Da uma força aí pessoal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.