problemas com Length
é o seguinte calera estou usando o comando Length no onexit do dbedit so q ele esta contando os caracteres da mascara e na mesma tela fiz o mesmo processo e nao esta contando os caracteres da mascara como q faço para nao contar os caracteries da mascara ????
Valew
Guilherme
Curtidas 0
Respostas
Faelcavalcanti
22/03/2005
Cara. Fica mais fácil você pegar a partir de uma query acho que de um DBEdit, não têm jeito não. Ah não ser que alguém saiba. Enfim, estou dando apenas minha sugestão!
GOSTEI 0
Guilherme
22/03/2005
mas o q esta estranho é q tem um igualzinho q funciona !!!!
GOSTEI 0
Faelcavalcanti
22/03/2005
:lol:
Coloca o código.
E também, tipow os dois pra gente fazer uma comparação.
Coloca o código.
E também, tipow os dois pra gente fazer uma comparação.
GOSTEI 0
Guilherme
22/03/2005
esse aki funciona
esse aki nao
if TBClientePESSOA.Value = ´JURIDICA´ then begin if ((Length(DBEdit3.Text) < 14) or (Length(DBEdit3.Text) > 14)) then begin ShowMessage(´Digite Corretamente o CNPJ !´); DBEdit3.SetFocus; Abort; End end; if TBClientePESSOA.Value = ´FISICA´ then begin if ((Length(DBEdit3.Text) < 11) or (Length(DBEdit3.Text) > 11)) then begin ShowMessage(´Digite Corretamente o CPF !´); DBEdit3.SetFocus; Abort; end end; TBCliente.Edit; TBCliente.Post; end;
esse aki nao
if TBDados_finanAVAL_PESSOA.Value = ´JURIDICA´ then begin if ((Length(DBEdit48.Text) < 14) or (Length(DBEdit48.Text) > 14)) then begin ShowMessage(´Digite Corretamente o CNPJ !´); DBEdit48.SetFocus; Abort; End end; if TBDados_finanAVAL_PESSOA.Value = ´FISICA´ then begin if ((Length(DBEdit48.Text) < 11) or (Length(DBEdit48.Text) > 11)) then begin ShowMessage(´Digite Corretamente o CPF !´); DBEdit48.SetFocus; Abort; end end; end;
GOSTEI 0
Marcio.theis
22/03/2005
Já tentou rodar por F9 para ver onde pode estar dando o problema? Ou onde esta pulando ?
GOSTEI 0
Guilherme
22/03/2005
o delphi nao esta dando erro !!!!
GOSTEI 0
Faelcavalcanti
22/03/2005
:shock: :shock: :shock:
Que lokura cara nessa tua máquina!
Que lokura cara nessa tua máquina!
GOSTEI 0
Marcio.theis
22/03/2005
Não é questão de erro, mas sim para ver o que estar acontecendo com os campos, valores, etc...
GOSTEI 0
Guilherme
22/03/2005
como assim /?????
messenger gborges_13@hotmail.com me adicona ai galera !!!
messenger gborges_13@hotmail.com me adicona ai galera !!!
GOSTEI 0
Faelcavalcanti
22/03/2005
como assim /?????
messenger gborges_13@hotmail.com me adicona ai galera !!!
Cara o que o [b:673571b831]taz[/b:673571b831], cujo nick, [b:673571b831]/]/]@t[/b:673571b831] :lol: :lol: ,tá querendo dizer é que você terá que depurar seu código, existem diversas estratégias para depuração, dá uma sacada nestes tópicos sobre [url=http://forum.clubedelphi.net/viewtopic.php?t=54083&highlight=depurar]Como usar o BreakPoint[/url].
Contudo, existem casos como o seu que pode ser uma falha ao valor passado ao componente e/ou coisas do tipo que nos passam desapercebidas e nem sequer notamos. Para ter certeza do que o código está fazendo você deverá inserir vários [b:673571b831]breakpoints[/b:673571b831] no seu código de forma a visualizar em run-time o valor dos parâmetros passados.
:wink:
Falow!
GOSTEI 0
Guilherme
22/03/2005
valew mas o erro era q estava gravando o mascara no banco de dados !!!!
GOSTEI 0
Gandalf.nho
22/03/2005
valew mas o erro era q estava gravando o mascara no banco de dados !!!!
Qual é a máscara que você está usando?
GOSTEI 0
Guilherme
22/03/2005
999.999.999-99;0;
GOSTEI 0
Guilherme
22/03/2005
galera agora nao consigo fazer com q a mascara nao seja gravada no banco de dados !!!! como q faço para q nao grave a mascara no banco de dado ?????
GOSTEI 0
Gandalf.nho
22/03/2005
Estranho, pq o uso de 0 deveria impedir que gravasse os literais da máscara no banco. Você está usando a máscara diretamente na propriedade EditMask do TField ou está formatando via código?
GOSTEI 0
Guilherme
22/03/2005
via codigo tipo assim
begin if campopessoa = ´FISICA´ then begin tabelacampo.editmask:=´999.999.999-99;0;´ end ; end;
GOSTEI 0
Guilherme
22/03/2005
deu certo usei essa mascara
999.999.999-99;0;_
GOSTEI 0
Eniorm
22/03/2005
Bom pelo q eu entendi vc quer pegar com o length somente o valor do DBEdit sem os caracteres da mascara, correto?
Na propriedade EditMask, desabilite o checkbox ´Save Literal Characteres´
as mascaras funcionarão como antes, mas somente os caracteres digitados pelo usuário serão armazenados.
Abraços,
Na propriedade EditMask, desabilite o checkbox ´Save Literal Characteres´
as mascaras funcionarão como antes, mas somente os caracteres digitados pelo usuário serão armazenados.
Abraços,
GOSTEI 0
Guilherme
22/03/2005
[list=]obrigado pela atençao mas ja resolvi o problema !!!!!!!!!![/list]
GOSTEI 0
Aroldo Zanela
22/03/2005
[list=]obrigado pela atençao mas ja resolvi o problema !!!!!!!!!![/list]
Colega,
Compartilha a solução para que sirva para outros no futuro. Espero que tenha resolvido bem diferente do caminho utilizado inicialmente, pois o correto, nesta caso, é utilizar um algoritmo de validação de CNPJ ou CPF. No OnValidade ou BeforePost você verifica se comprimento é 11 então verifica o CPF, se comprimento é 14 verifica o CNPJ.
GOSTEI 0
Eniorm
22/03/2005
Eu tenho uma unit com função de validar CPF e CNPJ e funciona perfeitamente, as funções retornam True caso os dados estejam corretos ou False caso errado.
Quem se interessar é só me pedir por email: eniorm@gmail.com
Abraços,
Quem se interessar é só me pedir por email: eniorm@gmail.com
Abraços,
GOSTEI 0
Emerson Nascimento
22/03/2005
uma dica um pouco fora da questão apresentanda: aumente um pouco a performance das suas aplicações fazendo o mínimo de operações possíveis. no caso de um procedimento ser feito apenas uma vez talvez o ganho não seja grande, mas se for um processo repetitivo dará pra perceber a diferença. uma coisa que eu notei é o fato você de sempre fazer duas comparações ao invés de apenas uma:
poderia ser simplesmente:
essa rotina apenas verifica se a quantidade de caracteres está correta, mas não se o numero de registro é valido. pegue uma dessas rotinas de validação encontradas na internet. se você fizer uma busca aqui mesmo no fórum você encontrará várias...
if TBDados_finanAVAL_PESSOA.Value = ´JURIDICA´ then begin if ((Length(DBEdit48.Text) < 14) or (Length(DBEdit48.Text) > 14)) then begin ShowMessage(´Digite Corretamente o CNPJ !´); DBEdit48.SetFocus; Abort; end end; if TBDados_finanAVAL_PESSOA.Value = ´FISICA´ then begin if ((Length(DBEdit48.Text) < 11) or (Length(DBEdit48.Text) > 11)) then begin ShowMessage(´Digite Corretamente o CPF !´); DBEdit48.SetFocus; Abort; end end;
poderia ser simplesmente:
if (TBDados_finanAVAL_PESSOA.Value = ´JURIDICA´) and (Length(DBEdit48.Text) <> 14) then begin ShowMessage(´Digite Corretamente o CNPJ !´); DBEdit48.SetFocus; end else if (TBDados_finanAVAL_PESSOA.Value = ´FISICA´) and (Length(DBEdit48.Text) <> 11) begin ShowMessage(´Digite Corretamente o CPF !´); DBEdit48.SetFocus; end;
essa rotina apenas verifica se a quantidade de caracteres está correta, mas não se o numero de registro é valido. pegue uma dessas rotinas de validação encontradas na internet. se você fizer uma busca aqui mesmo no fórum você encontrará várias...
GOSTEI 0