Carcleo 4 Denunciar post Postado Fevereiro 24, 2007 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
Prog 183 Denunciar post Postado Fevereiro 24, 2007 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
Rodrigo Miss 1 Denunciar post Postado Fevereiro 24, 2007 É 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 campoBm eu axo q eh issu ...Qlquer coisa posta ae;;;; Espero q lhe ajude... Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Fevereiro 25, 2007 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
Carcleo 4 Denunciar post Postado Fevereiro 25, 2007 Da uma força aí pessoal. Compartilhar este post Link para o post Compartilhar em outros sites