Ir para conteúdo

POWERED BY:

Arquivado

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

Carcleo

em mais essa:

Recommended Posts

Meu problema agora é o seguinte:

1)Tenho num formulario de cadastro de clientes, 2 querys. Uma pra fazer os posts e os edits e outra pra fazer uma cosulta a tabela MySql pra saber se ja existe o CPF cadastrado.

Tenho tambem dois Buttos um "Novo" para um novo registro que poe a tabela em estado inserção.

e um "Editar" para alterar um registro existente na tabela que poe a tabela em estado edição.

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, caso 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.

Eis o código que estou usando. Onde que esta o erro?

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		if not QryClientes2.IsEmpty then //já existe cadastro		   begin			ShowMessage ('Já existe Cadastro com este CPF/CNPJ. Pesquize!');			Abort;		   end	   else		 begin		   QryClientes.Post;		   ShowMessage ('Cadastro efetuado com sucesso!');		 end	  end;//////////// ShowMessage ('Erro a partir daqui!'); //////////////	  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			   if not QryClientes2.IsEmpty then //já existe cadastro				  begin					ShowMessage ('Já existe Cadastro com este CPF/CNPJ. Pesquize!');					DBEditCPF_CNPJ.SetFocus; // posiciona o cursor					Abort;				  end			   else				  begin					QryClientes.Post;					ShowMessage ('Alteração efetuada com sucesso!');				  end			end		 end;////////////////////(Até aqui)//////////////////////////////////////////end;

2) Outra situação é a seguite:

Tenho em outro formulario 1 edit um combobox e um dbgrid

Com o Edit eu digito um nome ou CPF ou CNPJ

Com a combobox eu escolho qual consulta fazer na tabela se é por Nome ou se é por CPF_CNPJ

No DBGrid eu listo os registros da tabela.

O que eu quero fazer é o seguite:

Quando abrir o form, o DBGrid mostra todos os registros da tabela porem eu queria validalos. Tem um campo Tipo, que valida F 'Física' ou J 'Jurídica'.

E um campo CPF_CNPJ, que traz o value do campo. Eu queria fazer uma busca dizendo que, caso o Tipo seja F, a Mascara é de CPF, e caso o Tipo seja J, a Mascara é de CNPJ.

Porem só esta dando para todas os registros, mascara só referente à do primeiro registro, se o primeiro for F todos sao mascaras de CPF, se for J, mascara de CNPJ.

Parece que falta um loop, sei la.

Outra observação é que, no caso de ser feito algum filtro, aí o grid mascara direito, o CPF recebe mascara de CPF e o CNPJ de CNPJ.

O Código que to usando é o seguite nesse form:

procedure TPCli.EditNomeCPF_CNPJChange(Sender: TObject);begin if ComboboxEscolha.Text='' then begin  showmessage('Escolha o tipo da Pesquiza!');  //  Limpar o DBEdit:  //  EditNomeCPF_CNPJ.text := '';  ComboboxEscolha.setfocus;  Abort; end; QryClientes.Close; QryClientes.SQL.Clear; QryClientes.SQL.Add('select * from Clientes where '+ComboboxEscolha.Text+' like:vardigito order by Nome'); QryClientes.Parambyname('vardigito').asstring:= EditNomeCPF_CNPJ.text +'%'; QryClientes.Open;/////// Exibir Mascara no normal do Grid tambem sem filtrar///////////////// Detalhe: Quando coloco Mascara antes do filtro, parece que precisa fazer um loop para saber qual é o segundo campo Tipo, se é F ou J.  if QryClientesTipo.Value = 'F' then   begin	 QryClientesCPF_CNPJ.EditMask :='999\.999\.999\-99;0;_';   end   else if QryClientesTipo.Value = 'J' then   begin	 QryClientesCPF_CNPJ.EditMask :='99\.999\.999\/9999\-99;0;_';   end;end;procedure TPCli.FormCreate(Sender: TObject);begin // Por Mascara no Grid quando abrir pela primeira vez // Parece que ta pedindo um while na tabela.   { While QryClientesTipo.Value = 'F' do   begin	 QryClientesCPF_CNPJ.EditMask :='999\.999\.999\-99;0;_';  // QryClientesCPF_CNPJ.EditMask :='99\.999\.999\/9999\-99;0;_';	 Abort;   end; While QryClientesTipo.Value = 'J' do   begin	 QryClientesCPF_CNPJ.EditMask :='99\.999\.999\/9999\-99;0;_';	 Abort;   end;   }end;

3) Como autenticar mascaras para ela representar como valor vazio.

É preciso colocar mascara para mostrar os dados dos campos Estado e CPF_CNPJ e Telefone de certa forma que a mascara não represente caracters digitados para não atrapalhar as auteticações de campo vazio ou numeros

 

Muito obrigado a todos que de uma maneira ou de outra contribuirem.

 

Meu muito obrigado.

 

Carlos Rocha

Compartilhar este post


Link para o post
Compartilhar em outros sites

Carcleo por favor, para o bom andamento do fórum e para que seja ajudado pelos colegas participantes,

PARE DE CRIAR TÓPICOS REPETIDOS...

http://forum.imasters.com.br/index.php?showtopic=216621

 

http://forum.imasters.com.br/index.php?showtopic=216547

 

 

Tópico Fechado...

 

Membro Advertido no Próprio Tópico.

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.