Carcleo 4 Denunciar post Postado Março 3, 2007 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
Hugo Slepicka 0 Denunciar post Postado Março 3, 2007 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