Clique abaixo para nos ajudar
Conectar-se

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
11 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 11 Visitantes :: 2 Motores de busca

Nenhum

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
Erro de compatibilidade de cores

28/3/2017, 10:59 por Clebervfp

Boa dia, estou com um problema com vfp9, se alguém poder me ajudar fico agradecido!

Tenho um …

Comentários: 0

Espessura do cursor intermitente

7/3/2017, 09:08 por Jefferson Matakas

Bom dia a todos !!

Existe uma opcao no windows que pode ser acessada atraves da 'central da …

Comentários: 0

DESENVOLVIMENTO EM REDES

4/3/2017, 18:45 por AJC

Pessoal tem ou conhece livros ou material para programação em
redes usando banco de dados nativo …

Comentários: 0

USAR REPORT FORM

30/12/2016, 09:06 por AJC

Pessoal bom dia,
Estou com um grande problema, já pesquisei muita coisa sobre report form, mas o …

Comentários: 4

Como preencher campos vazios

9/2/2017, 11:55 por Linghston

Pessoal boa tarde,

É o seguinte, eu preciso preencher os campos de uma coluna da tabela DBF que …

Comentários: 2

Estatísticas
Temos 7039 usuários registrados
O último usuário registrado atende pelo nome de missias

Os nossos membros postaram um total de 32 mensagens em 18 assuntos

Funcao at para resolver um cadastro de cliente

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Resolvido Funcao at para resolver um cadastro de cliente

Mensagem por alceu11 em 27/7/2010, 23:21

Preciso pegar o numero da rua e colocar no campo Nr_rua

campo endereco tem 50 caracteres
Rua Jose Alencar,5646 Casa 2
outra rua Almeida, 3 terreo
Exemplo como fazer isto
Código:

STORE 'Rua Jose Alencar,5646 Casa 2' TO gcString
STORE ',' TO gcFindString
CLEAR
? AT(gcFindString,gcString)  && Displays 17
STORE '5' TO gcFindString
? AT(gcFindString,gcString)  && Displays 18, case-sensitive
**nao estou conseguindo fazer o racionio depois da virgula , como descobrir qto digitos tem o nr, da rua.

A pergunta como eu pegar o numero certo 5646 nesta string?
Eu tenho 600 clientes, hora o nr. vai ser 215, ou 15,ou 08 entederao,?
hora tera andar

O objetivo e so este.:
para depois replace na tabela.Nr_rua &&5646
avatar
alceu11
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: Funcao at para resolver um cadastro de cliente

Mensagem por mfelis em 28/7/2010, 08:16

Você pode usar o GetWordNum e pegar assim:
Código:
STORE 'Rua Jose Alencar,5646 Casa 2' TO gcString
STORE ',' TO gcFindString
CLEAR
LStringNum = GETWORDNUM(gcString,2,gcFindString)
?  GETWORDNUM(LStringNum,1," ")

** ou colo que ao invés de espaço um traço aonde está o numero assim:
STORE 'Rua Jose Alencar,5646-Casa-2' TO gcString
LStringNum = GETWORDNUM(gcString,2,gcFindString)
?  GETWORDNUM(LStringNum,1,"-")
avatar
mfelis
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Resolvido Re: Funcao at para resolver um cadastro de cliente

Mensagem por Nelson Arcas em 28/7/2010, 08:20

Alceu veja se o comando abaixo resolve o seu problema, eu precisei realizar para atualização de beneficios

Código:

scan
Sua_tabela
m.endereco=Sua_tabela.campo_endereco
m.loc1=alltrim(substr(m.endereco,at(',',m.endereco,1)+1,100))
m.nender=int(val(alltrim(substr(m.loc1,1,at(' ',m.loc1)))))
replace Sua_tabela.numero_endereco with m.nender
endscan

Veja se ajuda voce
avatar
Nelson Arcas
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Resolvido Re: Funcao at para resolver um cadastro de cliente

Mensagem por alceu11 em 28/7/2010, 08:37

Agradeco a ajuda dos Companheiros.
muito obrigado mesmo ""!!!

Nelson o seu codigo esta quase la , falta 2 detalhes
Ele so pegar o nr se tiver complemto, tipo casa 2
Entao se nao tiver complemeto tb tera que pegar

o primeiro é se apos a virgula nao tiver,1 espaco vazio
rua almeida,45 casa 2
ele esta pegando correto qdo a rua almeida, 45 casa 2 no caso aqui tem 1 espaco

o codigo
apos isto vou deixar o endereco sem o nr. veja a figura,,,,, abaixo, como tirar o nr apos a virgula
Código:

IF NOT USED('cliente')
USE cliente IN 0 ALIAS cliente
ENDIF
SELECT cliente
GO top
IF NOT EOF()
scan
 
m.endereco=cliente.endereco
m.loc1=alltrim(substr(m.endereco,at(',',m.endereco,1)+1,100))
m.nender=int(val(alltrim(substr(m.loc1,1,at(' ',m.loc1)))))
replace cliente.ordem with STR(m.nender)
endscan
endif
[Você precisa estar registrado e conectado para ver esta imagem.]
avatar
alceu11
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: Funcao at para resolver um cadastro de cliente

Mensagem por alceu11 em 28/7/2010, 09:09

quase resolvido
falta separa o complemento tb que no caso aqu casa 2, e jogar no campo complto
Código:

IF NOT USED('cliente')
USE cliente IN 0 ALIAS cliente
ENDIF
SELECT cliente
GO top
IF NOT EOF()
scan
 
m.endereco=cliente.endereco
m.loc1=alltrim(substr(m.endereco,at(',',m.endereco,1)+1,100))
WAIT WINDOW m.loc1 TIMEOUT 0.2
IF alltrim(substr(m.loc1,1,at(' ',m.loc1)))=' '
m.nender=int(val(alltrim(substr(m.loc1,1,at(' ',m.loc1)))))
ELSE
m.nender= INT(VAL(alltrim(substr(m.endereco,at(',',m.endereco,1)+1,100))))
endif
replace cliente.ordem with LTRIM(STR(m.nender))
endscan
ENDIF
GO TOP
BROWSE FIELDS endereco,ordem
avatar
alceu11
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: Funcao at para resolver um cadastro de cliente

Mensagem por Nelson Arcas em 28/7/2010, 10:09

Alceu, aproveitando o seu código fiz uma implementação veja se isso resolve, fiz um teste por aqui e funcionou.
Código:

IF NOT USED('cliente')
   USE cliente IN 0 ALIAS cliente
ENDIF
SELECT cliente
GO TOP
IF NOT EOF()
   SCAN

      m.endereco=cliente.endereco
      m.loc1=ALLTRIM(SUBSTR(m.endereco,AT(',',m.endereco,1)+1,100))
      m.loc2=ALLTRIM(SUBSTR(loc1,AT(' ',loc1,1)+1,100))

      WAIT WINDOW m.loc1 TIMEOUT 0.2
      IF ALLTRIM(SUBSTR(m.loc1,1,AT(' ',m.loc1)))=' '
         m.nender=INT(VAL(ALLTRIM(SUBSTR(m.loc1,1,AT(' ',m.loc1)))))
      ELSE
         m.nender= INT(VAL(ALLTRIM(SUBSTR(m.endereco,AT(',',m.endereco,1)+1,100))))
      ENDIF
      REPLACE cliente.ordem WITH LTRIM(STR(m.nender))

      IF ALLTRIM(SUBSTR(m.loc2,1,AT(' ',m.loc2)))=' '
         m.complement=SUBSTR(m.loc2,1,AT(' ',m.loc2))
      ELSE
         m.complement= INT(VAL(ALLTRIM(SUBSTR(m.loc1,AT(',',m.loc1,1)+1,100))))
      ENDIF
      REPLACE cliente.compl WITH LTRIM(STR(m.complement))

   ENDSCAN
ENDIF

GO TOP
BROWSE FIELDS endereco,ordem,complement
avatar
Nelson Arcas
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Resolvido Re: Funcao at para resolver um cadastro de cliente

Mensagem por Marcos Guedes em 28/7/2010, 10:28

Caso não resolva... pegando o trem andando pergunto o seguinte:
haverá apenas uma vírgula em todo o endereço?

Veja se este exemplo ajuda:

Código:
CREATE CURSOR TESTE (CAMPO C(50))

INSERT INTO TESTE VALUES('Rua Jose Alencar,5646 Casa 2 ')
INSERT INTO TESTE VALUES('outra rua Almeida, 3 terreo')

SELECT GETWORDNUM(GETWORDNUM(campo,2,','),1) FROM teste

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Funcao at para resolver um cadastro de cliente

Mensagem por alceu11 em 28/7/2010, 10:47

irregular vai de usuario para usuario ,,,,,,,,,,tem unsque nem colocam virgula,
E A DUVIDA, E SE nao tiver virgula? como fazer,?

mais Ainda preciso pegar o que vem depois do numero , seria o complemento casa 2 ou apto2,sl4 , para jogar no complement do endereco,,,,,,,esta complicando, nao sei desisto.

O nr. ok Nelson resolveu,,,,,,e nao posso usar a sua funcao acima pq vfp60
Nelson
no seu codigo, complemento, esta gravando o numero novamente no campo complem.
Código:


IF NOT USED('cliente')
  USE cliente IN 0 ALIAS cliente
ENDIF
SELECT cliente
GO TOP
IF NOT EOF()
  SCAN

      m.endereco=cliente.endereco
      m.loc1=ALLTRIM(SUBSTR(m.endereco,AT(',',m.endereco,1)+1,100))
      m.loc2=ALLTRIM(SUBSTR(loc1,AT(' ',loc1,1)+1,100))

      WAIT WINDOW m.loc1 TIMEOUT 0.2
      IF ALLTRIM(SUBSTR(m.loc1,1,AT(' ',m.loc1)))=' '
        m.nender=INT(VAL(ALLTRIM(SUBSTR(m.loc1,1,AT(' ',m.loc1)))))
      ELSE
        m.nender= INT(VAL(ALLTRIM(SUBSTR(m.endereco,AT(',',m.endereco,1)+1,100))))
      ENDIF
      REPLACE cliente.ordem WITH LTRIM(STR(m.nender))

      IF ALLTRIM(SUBSTR(m.loc2,1,AT(' ',m.loc2)))=' '
        m.complement=SUBSTR(m.loc2,1,AT(' ',m.loc2))
      ELSE
        m.complement= INT(VAL(ALLTRIM(SUBSTR(m.loc1,AT(',',m.loc1,1)+1,100))))
      ENDIF
      REPLACE cliente.compl WITH LTRIM(STR(m.complement))

  ENDSCAN
ENDIF

GO TOP
BROWSE FIELDS endereco,ordem,complement

avatar
alceu11
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: Funcao at para resolver um cadastro de cliente

Mensagem por Nelson Arcas em 28/7/2010, 11:14

Alceu veja agora. fiz alguns ajustes
Código:


IF NOT USED('cliente')
  USE cliente IN 0 ALIAS cliente
ENDIF
SELECT cliente
GO TOP
IF NOT EOF()
  SCAN

      m.endereco=cliente.endereco
      m.loc1=ALLTRIM(SUBSTR(m.endereco,AT(',',m.endereco,1)+1,100))
      m.loc2=ALLTRIM(SUBSTR(loc1,AT(' ',loc1,1)+1,100))

      WAIT WINDOW m.loc1 TIMEOUT 0.2
      IF ALLTRIM(SUBSTR(m.loc1,1,AT(' ',m.loc1)))=' '
        m.nender=INT(VAL(ALLTRIM(SUBSTR(m.loc1,1,AT(' ',m.loc1)))))
      ELSE
        m.nender= INT(VAL(ALLTRIM(SUBSTR(m.endereco,AT(',',m.endereco,1)+1,100))))
      ENDIF
      REPLACE cliente.ordem WITH LTRIM(STR(m.nender))

      IF ALLTRIM(SUBSTR(m.loc2,1,AT(' ',m.loc2)))=' '
        m.complement=SUBSTR(m.loc2,1,AT(' ',m.loc2))
      ELSE
        m.complement= ALLTRIM(SUBSTR(m.loc2,AT(',',m.loc1,1)+1,100))
      ENDIF
      REPLACE cliente.compl WITH LTRIM(STR(m.complement))

  ENDSCAN
ENDIF

GO TOP
BROWSE FIELDS endereco,ordem,complement
avatar
Nelson Arcas
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Resolvido Re: Funcao at para resolver um cadastro de cliente

Mensagem por alceu11 em 28/7/2010, 11:29

Nelson ainda nao so traz o nr no complemento precisava trazer casa 2 ou se tiver algo apos ao nr da rua.
Nelson
Como pegar at(do right(do primeiro espaco em branco antes do numero)
ai encontraria o complemento da rua.?
avatar
alceu11
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: Funcao at para resolver um cadastro de cliente

Mensagem por lardecristo em 29/7/2010, 00:22

Eu tenho um conhecido que tinha um cadastro com +-200.000 nomes e passou vários dias para resolver, fez parte por parte.
Exemplo:
Executou primeiro a rotina para endereços que tinham virgula e criou um flag no endereço dizendo que já estava convertido, e assim para cada detalhe novo que ele encontrava.

Acho que solução definitiva você não vai encontrar, exatamente pela quantidade de variações na forma da digitação.

Mas torço que ache e disponibilize para nós.

Luiz Alexandre Ruiz
Desenvolvedor
avatar
lardecristo
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Resolvido Re: Funcao at para resolver um cadastro de cliente

Mensagem por Marcos Guedes em 29/7/2010, 07:16

Estou pensando aqui... que o ideal seria um padrão, mas não estou encontrando como fazê-lo, visto que o nome da rua pode ser composto por número, também.

Ex.
Código:
Av. 14 Nº 115, cidade UF
Sad

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Funcao at para resolver um cadastro de cliente

Mensagem por Nelson Arcas em 29/7/2010, 08:01

Alceu,
Acho que o caminho mais correto seria seguir a dica do Lardecristo

Exemplo:
Executou primeiro a rotina para endereços que tinham virgula e criou um flag no endereço dizendo que já estava convertido, e assim para cada detalhe novo que ele encontrava.

Acho que solução definitiva você não vai encontrar, exatamente pela quantidade de variações na forma da digitação
avatar
Nelson Arcas
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Resolvido Re: Funcao at para resolver um cadastro de cliente

Mensagem por alceu11 em 29/7/2010, 08:08

Amigos
Agora com ajuda do Nelson, e as Consideracoes do LardeCristo

Cheguei a este resultado

Nelson o sua ajuda foi de grande valia,,,,,
qdo vc criou a variavel = m.loc2
para pegar o complemento. é que como tem um espaco apos o nr. da rua Onze,12 " " e complem. casa 2 ,,,aqui estava se perdendo, ou jeito foi por um tracinho apos o complemento.....
e olha que estou desde da 5 de la matina e ja postei video no forum sobre debug,
mas acho que pro fim de semana vou estudar mais ainda.
Código:




IF NOT USED('cliente')
  USE cliente IN 0 ALIAS cliente
ENDIF
SELECT cliente
GO TOP
IF NOT EOF()
  SCAN

      m.endereco=cliente.endereco
            m.virg=','
            m.pos=AT(m.virg,m.endereco)-1
      m.loc1=ALLTRIM(SUBSTR(m.endereco,AT(',',m.endereco,1)+1,100))
      m.qtd=LEN(ALLTRIM(SUBSTR(m.endereco,AT(',',m.endereco,1)+1,100)))
      m.loc2=ALLTRIM(SUBSTR(loc1,AT(' ',loc1,1)+1,100))

    * WAIT WINDOW m.loc1 TIMEOUT 0.1
*      WAIT WINDOW  m.qtd TIMEOUT 0.1

*      WAIT WINDOW m.pos TIMEOUT 0.2
     
      IF ALLTRIM(SUBSTR(m.loc1,1,AT(' ',m.loc1)))=' '
       
        m.nender=INT(VAL(ALLTRIM(SUBSTR(m.loc1,1,AT(' ',m.loc1)))))
      ELSE
        m.nender= INT(VAL(ALLTRIM(SUBSTR(m.endereco,AT(',',m.endereco,1)+1,100))))
      ENDIF
      REPLACE cliente.ordem WITH LTRIM(STR(m.nender))

      IF m.pos > 0
            REPLACE n_ende WITH LEFT(m.endereco,m.pos)
      endif
 
********Nelson o problema esta aqui no m.loc2
      IF  ALLTRIM(SUBSTR(loc1,AT(' ',loc1,1)+1,100))=' ' OR ALLTRIM(SUBSTR(loc1,AT(' ',loc1,1)+1,100))='-'
            REPLACE    CLIENTE.COMPTO WITH ''

            REPLACE cliente.compto WITH ' '+ m.loc2
            M.COMPTO=ALLTRIM(CLIENTE.COMPTO)
          IF  VAL(ALLTRIM(CLIENTE.COMPTO))>0
                REPLACE CLIENTE.COMPTO WITH ''
          ENDIF
      ENDIF
  ENDSCAN
ENDIF


GO TOP
BROWSE FIELDS endereco,ordem,compto,n_ende


Mas considero resolvido ,,,,,o topico e obrigado.......a todos....pelo empenho e dedicacao......
segue o link do arquivo
[Você precisa estar registrado e conectado para ver este link.]
avatar
alceu11
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum