Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

como puedo pasar de n° a letra

Estas en el tema de como puedo pasar de n° a letra en el foro de Visual Basic clásico en Foros del Web. estimados tengo esta funcion que me carga un combo box con los datos del mes pero resulta que en la base lo tengo por numero ...
  #1 (permalink)  
Antiguo 29/07/2010, 15:55
Avatar de a83
a83
 
Fecha de Ingreso: noviembre-2005
Ubicación: Santiago de chile
Mensajes: 637
Antigüedad: 18 años, 5 meses
Puntos: 1
como puedo pasar de n° a letra

estimados tengo esta funcion que me carga un combo box
con los datos del mes pero resulta que en la base lo tengo por numero de que forma lo puedo pasar e letra ejemplo, lo tengo en la base con 12 y cuando lo muestre en el combo bos tendria que decir diciembre

este es el codigo
Código PHP:
Function LlenaCombo2()
Dim sqlstr As String
sqlstr 
vbNullString
sqlstr 
"select distinct(mes) from produ_comercial"
Set RS = New ADODB.Recordset
RS
.Open sqlstrCONQCadOpenForwardOnlyadLockOptimistic
While Not RS.EOF
    Combo2
.AddItem RS.Fields!linea
    RS
.MoveNext
Wend
End 
Function 
  #2 (permalink)  
Antiguo 30/07/2010, 20:27
 
Fecha de Ingreso: mayo-2010
Mensajes: 8
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: como puedo pasar de n° a letra

q tal usar otra funcion q te regrese el nombre del mes, como son solo 12 posibles casos
  #3 (permalink)  
Antiguo 04/08/2010, 01:05
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 10 meses
Puntos: 7
Respuesta: como puedo pasar de n° a letra

Buenas

Con la función Format() puedes obtener el nombre del mes en el lenguaje del Windows instalado así:

Código:
Format(<número de mes>, "mmmm")
En tu caso:

Código:
Function LlenaCombo2() 
Dim sqlstr As String 
    sqlstr = vbNullString 
    sqlstr = "select distinct(mes) from produ_comercial" 
    Set RS = New ADODB.Recordset 
    Call RS.Open(sqlstr, CONQC, adOpenForwardOnly, adLockOptimistic)
    While Not RS.EOF 
        Call Combo2.AddItem(Format(RS.Fields!linea, "mmmm"))
        Call RS.MoveNext 
    Wend 
End Function
Yendo un poco más lejos, puedes darle algo más de estilo poniendo la primera letra en mayúscula y lo demás en minúscula:

Código:
(declara la variable NombreMes como String)

...
NombreMes=Format(RS.Fields!linea, "mmmm")
Call Combo2.AddItem(UCase(Left(NombreMes, 1)) & LCase(Right(NombreMes, Len(NombreMes)-1)))
....
Eso si, ten en cuenta que si quieres volver a recuperar el número del mes al hacer una selección en la combo, tendrás que guardarlo en la propiedad ItemData.
__________________
wile sona li mute e sona
  #4 (permalink)  
Antiguo 05/08/2010, 14:21
 
Fecha de Ingreso: mayo-2010
Mensajes: 16
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: como puedo pasar de n° a letra

ItemData + 1 porq no existe el mes 0
  #5 (permalink)  
Antiguo 05/08/2010, 15:22
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: como puedo pasar de n° a letra

Hola txoco, la idea me parecía fantástica, pero por lo menos en mi VB no funciona, ya que esta funcion

For m = 1 To 12
Text1.Text = Text1.Text & Format(m, "mmmm") & vbCrLf
Next


devuelve este resultado

diciembre
enero
enero
enero
enero
enero
enero
enero
enero
enero
enero
enero


evidentemente si que funciona si m es un tipo Date y contiene una fecha

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #6 (permalink)  
Antiguo 06/08/2010, 13:27
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 10 meses
Puntos: 7
Respuesta: como puedo pasar de n° a letra

Touché

Estas cosas pasan por escribir de memoria y no fijarme en que la variable no era de tipo fecha.
Código:
    For m = 1 To 12
        Debug.Print m, Format(CDate("2000/" & m & "/01"), "mmmm")
    Next m
O bien
Código:
    For m = 1 To 12
        Debug.Print m, Format(DateAdd("m", m - 1, CDate("2000/01/01")), "mmmm")
    Next m
si no se quiere concatenar nada ("m-1" por si se quiere utilizar "m" para guardar el número del mes en otro sitio, como bien indica porciento_veinte; de lo contrario, bastaría con recorrer el bucle de cero a once).

En ambos casos he especificado la fecha en formato ISO (yyyy/MM/dd) porque así hay menos propensión a errores; a veces me he encontrado con que al utilizar el formato europeo para fechas en que el mes y el año son iguales o menores a 12, el sistema operaba con ellas internamente en formato estadounidense (MM/dd/yyyy) y no calculaba bien.

No se cuál de los dos métodos será más rápido, aunque los dos se pueden optimizar un poquillo.

Y ahora sí funcionan los dos, que los he probao.
__________________
wile sona li mute e sona

Etiquetas: letra, pasar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:08.