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 :: 1 Motor de busca

Nenhum

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
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

Enviar msg para WhatsAPP via VFP

7/2/2017, 10:31 por Eliana

Olá Pessoal!

Alguém sabe se é possível enviar mensagem para o WhatsAPP via VFP?


Grata


Comentários: 0

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

Os nossos membros postaram um total de 31 mensagens em 17 assuntos

Valor por Extenso

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

Valor por Extenso

Mensagem por Rosangela Pires em 10/6/2015, 22:46

Amigos,

Alguem tem uma função que imprima por extenso um valor e que quebre o valor por linhas.
Exemplo : Quero que o valor por extenso seja dividido em 3 linhas com a separação de silabas.

No Clipper eu tinha uma função que fazia isso.

Rosangela
avatar
Rosangela Pires
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por Julio em 12/6/2015, 10:08

Rosângela, Bom dia.

Tenho esta aqui que utilizo em uma carta mas justificado, não reparei se quebra por silabas.

Mas a do clipper pode ser utilizada fazendo pequenos ajustes.

Método EXTENSO
Código:
    Parameters nVal

** c = contador
** x = algarismo corrente
** p = proximo algarismo
** t = posicao do algarismo (dezena,centena,milhar)
** y = variavel p/ buscar descricao do algarismo
** z = macro que cria "y"
** d = descricao do algarismo
** k = variavel p/ controlar o primeiro caso de "l"
** l = ligador (e)
** f = verificacao da dezena, centena, milhar, ...
** u = verificacao da posicao da palavra "cem e"
** m = moeda
    N="n000"
    n000=""
    n001="Um "
    n002="Dois "
    n003="Tres "
    n004="Quatro "
    n005="Cinco "
    n006="Seis "
    n007="Sete "
    n008="Oito "
    n009="Nove "
    n010="Dez "
    n011="Onze "
    n012="Doze "
    n013="Treze "
    n014="Quatorze "
    n015="Quinze "
    n016="Dezesseis "
    n017="Dezessete "
    n018="Dezoito "
    n019="Dezenove "
    n020="Vinte "
    n030="Trinta "
    n040="Quarenta "
    n050="Cinquenta "
    n060="Sessenta "
    n070="Setenta "
    n080="Oitenta "
    n090="Noventa "
    n100="Cem "
    n200="Duzentos "
    n300="Trezentos "
    n400="Quatrocentos "
    n500="Quinhentos "
    n600="Seiscentos "
    n700="Setecentos "
    n800="Oitocentos "
    n900="Novecentos "
    nVal=Thisform.text2.value
    xvalor=Str(nVal,12,2)
    Store "0" To v0,c0
    v1=Subs(xvalor,1,1)
    v2=Subs(xvalor,2,1)
    v3=Subs(xvalor,3,1)
    v4=Subs(xvalor,4,1)
    v5=Subs(xvalor,5,1)
    v6=Subs(xvalor,6,1)
    v7=Subs(xvalor,7,1)
    v8=Subs(xvalor,8,1)
    v9=Subs(xvalor,9,1)
    c1=Subs(xvalor,11,1)
    c2=Subs(xvalor,12,1)
    f1=Val(v1+v2+v3)
    f2=Val(v4+v5+v6)
    f3=Val(v7+v8+v9)
    f4=Val(c1+c2)
    Store "" To m1,m2,m4,m5,m7,m8,m9
    m3=Iif(f1>=1,Iif(f1>1,"Milhoes ","Milhao "),"")
    m6=Iif(f2=0,"","Mil ")
    exten1=""
    Store 0 To c,T,k
    Do While c<9
        c=c+1
        x="v"+Str(c,1)
        p=Iif(c<9,"v"+Str(c+1,1),"v0")
        k=k+Val(&x)
        T=Iif(T=3,1,T+1)
        &x=Iif(&x=" ","0",&x)
        Y=Iif(T=2 .And. &x="1","n0"+&x+&p,Stuff(N,T+1,1,&x))
        c=Iif(T=2 .And. &x="1",c+1,c)
        T=Iif(T=2 .And. &x="1",T+1,T)
        p=Iif(c<9,"v"+Str(c+1,1),"v0")
        d=Iif(Val(&x)#0,&Y,"")
        l=Iif(Val(&p)#0 .And. k#0,"e ","")
        m="m"+Str(c,1)
        exten1=exten1+d+&m+l
        u=At("Cem e",exten1)
        exten1=Iif(u#0,Subs(exten1,1,u)+"ento"+Subs(exten1,u+3,Len(exten1)),exten1)
    Enddo
    o1=Iif(nVal>=1,Iif(nVal>1,Iif(f2+f3#0,"Reais ","de Reais "),"Real " ),"")
    exten1=Iif(exten1=" ","",Iif(f4=0,exten1+o1,exten1+o1+"e "))
    exten1=Iif(exten1="e ","",exten1)
    y1="n00"+c2
    y2="n0"+c1+"0"
    y3="n0"+c1+c2
    exten2=Iif(f4<10,&y1,Iif(f4<20,&y3,Iif(c2="0",&y2,&y2+"e "+&y1)))
    exten2=Iif(f4=0,"",Iif(f4=1,exten2+"Centavo",exten2+"Centavos"))
    Exten=exten1+exten2
    Thisform.text3.value=exten
    Return &&Exten

Método SEPARA EXTENSO
Código:
*---separa valor por extenso
*separa expressão onde os dois campos comportam até 50 caracteres
*fun separa_ext(for_exte) &&for_exte = <expressão>
PUBLIC for_exte,for_exte1
for_exte=Thisform.text3.value
DO CASE
  CASE LEN(RTRIM(for_exte)) > 92 AND SUBSTR(for_exte,92,1) # " " AND SUBSTR(for_exte,93,1) # " "
      for_exte1=SUBSTR(for_exte,RAT(" ",SUBSTR(for_exte,1,92)),92)
      for_exte =SUBSTR(for_exte,1,RAT(" ",SUBSTR(for_exte,1,92)))
  CASE LEN(RTRIM(for_exte)) > 92 AND (SUBSTR(for_exte,92,1) = " " OR SUBSTR(for_exte,93,1) = " ")
      for_exte1=SUBSTR(for_exte,93,50)
      for_exte =SUBSTR(for_exte,1,92)
  CASE LEN(RTRIM(for_exte)) < 92
      for_exte1=''
      for_exte =ALLTRIM(for_exte)
ENDCASE

*return for_exte, for_exte1

Julio
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por Rosangela Pires em 12/6/2015, 10:48

Amigo Julio,

Esta função eu tb encontrei e estou utilizando.

Ela não quebra por silabas.

Eu tenho a função do clipper, andei olhando e como sou iniciante no visual fox, não consegui adapta-la para visual fox, ainda não tenho tanto conhecimento para tal empreitada. Sei que ela funciona perfeitamente em clipper.

Obrigado pela atenção e ajuda.

Rosangela Pires
avatar
Rosangela Pires
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por Rosangela Pires em 12/6/2015, 11:09

Amigo Julio,

O código retorna duas variáveis : Exten1 que monta a linha com milhar, centena e Exten2 que retorna a linha com os centavos.
Para o que necessito que é impressão de cheque não serve.
Pois mesmo unindo as 02 variáveis, na quebra da 1 linha do cheque não teria a separação silábica, caso seja necessário a quebra.
Para outro uso talvez sim.

Rosangela Pires
avatar
Rosangela Pires
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por lardecristo em 12/6/2015, 15:31

Rosangela, poste a sua em Clipper, que eu posso tentar ajustar para o VFP.

Abraços.
avatar
lardecristo
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por Rosangela Pires em 12/6/2015, 15:52

Amigo Julio,

Segue link para o código :

[Você precisa estar registrado e conectado para ver este link.]

Rosangela Pires
avatar
Rosangela Pires
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por lardecristo em 12/6/2015, 16:55

Ok.... Agora mudei de nome...kkkk....rsrsr... brincadeira.... vou dar um olhada e depois te falo...

Abraços.
avatar
lardecristo
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por lardecristo em 13/6/2015, 17:47

Pronto....Ufa....kkkkk... Já converti para VFP 9.

[Você precisa estar registrado e conectado para ver este link.]

Qualquer dúvida me pergunte, tem algumas explicações no fonte.

Abraços,

LardeCristo.
avatar
lardecristo
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por Rosangela Pires em 13/6/2015, 22:02

Amigo LardeCristo,

Sua adaptação ficou perfeita.
A rotina está funcionando corretamente.
Porem, estou com dúvidas e problemas ainda.

1 - Você criou a variavel (lsExt )e menciona que ela recebera a matriz do extenso e que ela deve ser passada por referencia usando o @. Você poderia me explicar melhor isso, se não for complicado para você ?
2- Como pretendo usar a rotina para emissão de cheque e vou quebrar o extenso em 02 linhas, joguei o retorno em uma variavel e percebi que ele é continuo, porem você na quebra coloca no final o tamanho da string. Tentei achar no código onde você inclui para poder tirar, montando assim a variavel inteira para que eu possa quebrar usando o SUBSTR()e quebrar pelo tamanho que determinei da string,e não localizei.
Você pode me ajudar ainda neste itens.

Rosangela Pires
avatar
Rosangela Pires
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por lardecristo em 13/6/2015, 22:45

Vamos lá..

1 - Existem duas formas de se passar uma variável para uma função, "por referencia" ou "por valor".

1a. - Por valor, você passa o valor da variável para outra variável e a mesma não sofre com a alteração que houver internamente.
Ex.
Código:

lnA = 10
PassandoPorValor(lnA)
PROCEDURE PassandoPorValor(lnAux as Integer)
   lnAux = 20
ENDPROC
MESSAGEBOX(lnA)
Neste exemplo, o valor de lnA vai continuar 10, apesar da variável lnAux receber 20, ou seja foram criadas duas caixinhas de memória, uma para lnA e outra para lnAux.

1b. Por Referência, você passa o valor da variável para outra variável e a mesma sofre com a alteração que houver internamente.

Código:

lnA = 10
PassandoPorReferencia(@lnA)
PROCEDURE PassandoPorReferencia(lnAux as Integer)
   lnAux = 20
ENDPROC
MESSAGEBOX(lnA)
Neste exemplo, o valor de lnA vai mudar para 20,ou seja foi criado uma caixinha só de memória, esta sendo para lnA e a variável lnAux aponta para esta caixinha.

2 - Sobre o código que acrescenta o tamanho no final está no botão "Mostra por Extenso"
Código:
lsAux = lsAux + lsExt[lnA] + " - " + TRANSFORM(LEN(lsExt[lnA])) + CHR(13)

Substitua por este
Código:
lsAux = lsAux + lsExt[lnA] + CHR(13)

Sobre SUBSTR, você não precisa usar, porque a variável lsExt virá uma matriz, ou seja contém já a string quebrada nas linhas que você precisa.

Um código mais simples para você entender.

Código:

lsExt = ""

Extenso(1545678.20, @lsExt,2,70,"*")

? lsExt[1]
? lsExt[2]
avatar
lardecristo
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por Rosangela Pires em 14/6/2015, 14:04

Amigo LardeCristo,

Agradeço pela sua ajuda, pelo tempo dedicado na conversão e nas explicações de minhas dúvidas.

Valeu mesmo !!!!!!

Seu pudesse Reputaria como 1000.

Obrigado.

Rosangela Pires

avatar
Rosangela Pires
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por Rosangela Pires em 14/6/2015, 14:20

Amigo LardeCristo,

Seu Pudesse é muito bom..........

Entenda * Se eu pudesse....*

Rosangela
avatar
Rosangela Pires
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por Julio em 15/6/2015, 11:52

Rosângela

Ia pedir para enviar a rotina q você tem ai, mas como já foi resolvido pelo LardeCristo, tento ajudar na próxima.

Abraços

Julio
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por Rosangela Pires em 15/6/2015, 14:15

Amigo Julio,

Com certeza terei mais dúvidas e espero sempre contar com a sua ajuda.

Obrigado.

Rosangela Pires
avatar
Rosangela Pires
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por Rosangela Pires em 17/6/2015, 02:12

Amigo LardeCristo,

No projeto que estou desenvolvendo defini o numero de linhas como 02. Porem quando tento na linha 02 colocar mais alguns ( * ) para complementar a linha, os astericos normais vindo da função desaparecem e nem os que defini com Repl("*",20) aparecem.
Se você puder me ajudar, como soluciono isso ????

Rosangela Pires
avatar
Rosangela Pires
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por Julio em 26/6/2015, 09:48

Rosângela, bom dia

Será que isto não ocorre em virtude dos caracteres se ajustarem. por exemplo a letra "i" usa espaço menor que a letra "m".
Assim tem a quantidade de asterisco mas não completa até o final da linha superior.
Fiz uns testes aqui e percebi que em alguns casos a linha um tem um extenso curto os asteriscos da linha dois ficam "maiores" desalinhados. E em outros casos ocorre que na linha dois tem a quantidade certa de asterisco, mas não chega até o final da linha um.
Quanto não completar o repl posta um exemplo para dar uma olhada.

Julio
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por lardecristo em 28/6/2015, 23:13

Olá Rosangela, me desculpe, só vi agora a sua pergunta.

Mas vamos lá, faça o seguinte.

Código:

lsExt[2] = lsExt[2] + REPLICATE("*", 10)
Observe que estou usando a variável que utilizei no exemplo acima, se você mudou o nome dela é só substituir, mas não esqueça que precisa ser desta forma acima.
avatar
lardecristo
Participa Bastante
Participa Bastante


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