Autor Tema: Funcion que devuelva Numero y Letra combinado  (Leído 4811 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Funcion que devuelva Numero y Letra combinado
« en: Enero 02, 2015, 11:15:05 am »
Hola amigos ante que nada les deseo a todos lo integrantes del foro 'UN MUY FELIZ 2015'.

Ahora si!! hace como una hora estoy dando vuelta y no puedo resolver esto haber si alguno me ayuda.

NECESITO TENER UNA FUNCION QUE ME DEVUELVA EN CADA LLAMADO EL SIGUIENTE VALOR CON ESTE CRITERIO EL PRIMER VALOR POSIBLE SERIA
1A  el sig. 2A , 3A, 4A, 5A y así HASTA LLEGAR AL TOPE ESTABLECIDO EN LA CONSTANTE (ejemplo 5) , luego sería
1B el sig.  2B , 3B, 4B, 5B
1C el sig.  2C , 3C, 4C, 5C

Código: [Seleccionar]
Const TOPE = 5

Private Sub Command1_Click()
  Dim actual As String
  actual = "1A"
  Caption = DevuelveValor(actual)
End Sub

Private Function DevuelveValor(actual As String) As String
 DevuelveValor = "1A" '"1B" "1C" .... "2A" "2B" "2C" .... "3C"
End Function
« última modificación: Enero 02, 2015, 11:27:03 am por Bazooka »
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Jeronimo

  • Gigabyte
  • ****
  • Mensajes: 402
  • Reputación: +33/-2
    • Ver Perfil
Re:Funcion que devuelva Numero y Letra combinado
« Respuesta #1 en: Enero 02, 2015, 11:34:05 am »
Hola, Bazooka.
Hice un pequeño ejemplo cuyo código copio acá, a ver si te sirve de guía (si es que entendí bien tu inquietud).
En un proyecto poné 4 textboxes llamadas "txtLI" (letra inicial), "txtLF" (letra final), "txtNI" (número inicial) y "txtNF" (número final). En las propiedades "text" poneles los valores que necesites.
También poné un control list y un botón.
Este es el código del botón:
Código: (VB) [Seleccionar]
Private Sub Command1_Click()
    Dim Letra As Integer
    Dim Numero As Integer
   
    Dim i As Integer
    Dim j As Integer
   
    Dim LI As Integer
    Dim LF As Integer
    Dim NI As Integer
    Dim NF As Integer
   
    LI = Asc(txtLI.Text)
    LF = Asc(txtLF.Text)
    NI = txtNI.Text
    NF = txtNF.Text
   
    Letra = LI
    For i = LI To LF
        Numero = NI
        For j = NI To NF
            List1.AddItem Chr$(Letra) & Numero
            Numero = Numero + 1
        Next
        Letra = Letra + 1
    Next
End Sub

Espero haber entendido tu consulta.
Saludos.

Jerónimo
« última modificación: Enero 02, 2015, 11:35:49 am por Jeronimo »

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Funcion que devuelva Numero y Letra combinado
« Respuesta #2 en: Enero 02, 2015, 02:41:21 pm »
Miguel y
¿que comportamiento quieres si te dan el ultimo valor de tu serie?
¿quieres el valor siguiente (ej 2B) o toda la cadena (ej 2B, 3B, 4B 5B)?
¿siempre mantendras el formato numero/letra?

Asumiendo que sea un solo valor y el mismo formato podría ser asi:

Código: (VB) [Seleccionar]
Private Function DevuelveValor (Actual as String) as String

DevuelveValor = Val(Actual)+1 & Right(Actual, 1)  'El Val de un numero con cualquier letra siempre sera el numero

End Function

Private Sub Command1_Click()
Label1 = DevuelveValor("3B")
End Sub

devolvera 4B

Solo falta definir el limite y su comportamiento.

Saludos
« última modificación: Enero 02, 2015, 02:43:07 pm por YAcosta »
Me encuentras en YAcosta.com

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Funcion que devuelva Numero y Letra combinado
« Respuesta #3 en: Enero 02, 2015, 05:23:52 pm »
Miguel y
¿que comportamiento quieres si te dan el ultimo valor de tu serie?
¿quieres el valor siguiente (ej 2B) o toda la cadena (ej 2B, 3B, 4B 5B)?
¿siempre mantendras el formato numero/letra?

Asumiendo que sea un solo valor y el mismo formato podría ser asi:

Código: (VB) [Seleccionar]
Private Function DevuelveValor (Actual as String) as String

DevuelveValor = Val(Actual)+1 & Right(Actual, 1)  'El Val de un numero con cualquier letra siempre sera el numero

End Function

Private Sub Command1_Click()
Label1 = DevuelveValor("3B")
End Sub

devolvera 4B

Solo falta definir el limite y su comportamiento.

Saludos


Hola amigo!! si siempre debe devolver el siguiente unicamente se pasa 1A, devolveria 1B si se pasa 4C devolveria 5C ,.
Y el formato es siempre el numero adelante.!!!
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Funcion que devuelva Numero y Letra combinado
« Respuesta #4 en: Enero 02, 2015, 05:28:48 pm »
Hola, Bazooka.
Hice un pequeño ejemplo cuyo código copio acá, a ver si te sirve de guía (si es que entendí bien tu inquietud).
En un proyecto poné 4 textboxes llamadas "txtLI" (letra inicial), "txtLF" (letra final), "txtNI" (número inicial) y "txtNF" (número final). En las propiedades "text" poneles los valores que necesites.
También poné un control list y un botón.
Este es el código del botón:


Hola Jeronimo !! Si funciona correcto y estas enfocado en lo que pedi pero lo que necesito esta mas enfocado en una funcion que devuelva el valor siguiente tal como le explique a IVan abajo.

Muchas gracias por tu aporte amigo!
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Funcion que devuelva Numero y Letra combinado
« Respuesta #5 en: Enero 02, 2015, 05:45:05 pm »
Pense que te habia entendido, pero en el ejemplo que pones
...se pasa 1A, devolveria 1B si se pasa 4C devolveria 5C ,....

Los dos primeros tienen 1 y cambia la letra, pero en el segundo caso cambia el numero pero se mantiene la letra, no entendí.
Salvo que se trate de una lista que no necesariamente tenga un patron y lo que se quiere es: "dado un valor devuelveme el que sigue", en ese caso seria como lo puso Jeronimo, trabajar sobre el posicionamiento y en todo caso puedes cambiar el listbox por un arreglo en memoria, ya seria opcional pero la lógica seria esa.

Sin embargo, si logras determinar un patron se puede concebir una formula y de alli no tendrias que almacenar nada sino manipular la formula, sino te queda ir a los datos almacenados.

Saludos
Me encuentras en YAcosta.com

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Funcion que devuelva Numero y Letra combinado
« Respuesta #6 en: Enero 02, 2015, 05:50:00 pm »
A ver la letra solo cambia cuando se llega al tope  y se reinicia el numero a 1.
YA me has ayudado mucho y con la funcion que armaste logre hacer lo que necesitaba fijate.


Código: [Seleccionar]
Const Tope = 5

Private Function DevuelveValor(Actual As String) As String
Dim Letra As String
Dim Num As Byte

Letra = Right(Actual, 1)
Letra = Asc(Letra)
Num = Val(Actual) + 1

If Num > Tope Then
   DevuelveValor = "1" & Chr$(Letra + 1)
Else
   DevuelveValor = Val(Actual) + 1 & Right(Actual, 1) 'El Val de un numero con cualquier letra siempre sera el numero
End If

End Function
 
Private Sub Command2_Click()
  Debug.Print DevuelveValor("2B") 'devuelve 3B por que es el siguiente valido
  Debug.Print DevuelveValor("1A") 'devuelve 2A por que es el siguiente valido
  Debug.Print DevuelveValor("5B") 'devuelve 1C por que el tope es 5
End Sub
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Jeronimo

  • Gigabyte
  • ****
  • Mensajes: 402
  • Reputación: +33/-2
    • Ver Perfil
Re:Funcion que devuelva Numero y Letra combinado
« Respuesta #7 en: Enero 02, 2015, 05:56:35 pm »
Estaba escribiendo cuando vi que ya habías resuelto el problema.
Me alegro.
Saludos.

Jerónimo