none
Números em extenso (em Português) RRS feed

  • Pergunta

  • Vi que é uma pergunta antiga mas ainda sem nenhuma resposta!

    Como vocês fazem para exibir, no Crystal Reports (o que vem incorporado ao VB 2008), um número por extenso em português?

    Já vi algumas "meias" respostas dizendo que tem que alterar dll mas não tem dll para baixar e coisas do tipo!

    Abraço!

    segunda-feira, 19 de abril de 2010 18:18

Todas as Respostas

  • amigo, eu criei em minha tabela "ex: recibo" um campo extenso e gero este extenso no vb o crystal só me visualiza, assim foi a minha solução..

    segue o exemplo em vb:

        Set Cnn = New ADODB.Connection
        Cnn.Open "Provider=IbOleDb.1;Data Source=" + Banco_Rede + ";User ID=SYSDBA;Password=1QASW2"
        Set TB_parc = New ADODB.Recordset
        TB_parc.CursorLocation = adUseClient
        TB_parc.CursorType = adOpenStatic
        TB_parc.LockType = adLockOptimistic
        TB_parc.Open "SELECT NRDOCTO,VALOR,PEDVENNR,VLR_EXTENSO,VENDEDOR,OBS_VENDA FROM VENDAPARC WHERE PEDVENNR=" + Text9 + "", Cnn
        ' PESQUISA FUNCIONARIO E OBS_CUPOM
        Set TB_PESQ_FUNC = New ADODB.Recordset
        TB_PESQ_FUNC.CursorLocation = adUseClient
        TB_PESQ_FUNC.CursorType = adOpenStatic
        TB_PESQ_FUNC.LockType = adLockOptimistic
        TB_PESQ_FUNC.Open "SELECT VENDA.PEDVENNR,FUNC.FUNCNOME,VENDA.OBS_CUPOM FROM VENDA INNER JOIN FUNC ON VENDA.FUNCCOD = FUNC.FUNCCOD WHERE VENDA.PEDVENNR=" + Text9 + ";", Cnn
        Text13 = IIf(IsNull(TB_PESQ_FUNC.Fields("FUNCNOME")), "", TB_PESQ_FUNC.Fields("FUNCNOME"))
        Text14 = IIf(IsNull(TB_PESQ_FUNC.Fields("OBS_CUPOM")), "", TB_PESQ_FUNC.Fields("OBS_CUPOM"))
        Do Until TB_parc.EOF
            Set DataGrid2.DataSource = TB_parc
            Text12 = DataGrid2.Columns.Item(3)
          'inicio para converter VALOR "."
          Dim vpos3 As Byte
            PRO_T = Format(Text12, "####0.00")
            Const ComVirg3 = ","
            Const SemVirg3 = "."
            For I = 1 To Len(PRO_T)
                vpos3 = InStr(1, ComVirg3, Mid(PRO_T, I, 1))
                If vpos3 > 0 Then
                Mid(PRO_T, I, 1) = Mid(SemVirg3, vpos3, 1)
                End If
            Next
            Text11 = PRO_T
     
      Dim x1 As String, x2 As String, Tam As Integer
     'recupera o valor extenso em linhas de tamanho 60, com nome da moeda e separação silábica
     Tam = 60
     x1$ = Extenso(Val(Text11.Text), Tam, True, "Real|Reais")
     Text10 = Left$(x1$, Tam)            'imprime a primeira linha...
     Text10 = removeAcentos(Text10)
            TB_parc.Fields("VLR_EXTENSO") = Text10
            TB_parc.Fields("VENDEDOR") = Text13
            TB_parc.Fields("OBS_VENDA") = Text14
            TB_parc.Update
            TB_parc.MoveNext
        Loop
        TB_parc.Close
        TB_parc.Open "SELECT VENDAPARC.NRDOCTO,VENDAPARC.DTLANCTO,VENDAPARC.DTVENCTO,VENDAPARC.VALOR, VENDAPARC.CLICOD, CLIENTE.CLINOME FROM VENDAPARC INNER JOIN CLIENTE ON VENDAPARC.CLICOD = CLIENTE.CLICOD WHERE (((VENDAPARC.PEDVENNR)=" + Text9 + "))", Cnn
        Set DataGrid2.DataSource = TB_parc
        Label6 = IIf(IsNull(TB_parc.Fields("CLINOME")), "", TB_parc.Fields("CLINOME"))
        Exit Sub

     

    terça-feira, 20 de abril de 2010 14:56
  • Confesso que já havia pensado nisso (ou uma função no SQL), mas não gostei muito da solução. Queria algo em tempo de relatório.

    Sabendo que em outras versões já existia, queria utilizar nessa. De qualquer forma obrigado.

    terça-feira, 20 de abril de 2010 16:38