Imprimir página | Cerrar ventana

Mostrar mayor valor

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86389
Fecha de impresión: 29/Marzo/2024 a las 13:57


Tema: Mostrar mayor valor
Publicado por: noise56
Asunto: Mostrar mayor valor
Fecha de publicación: 17/Junio/2022 a las 22:09
Buenas tardes.
Windows 10
Access 2016
Tengo una base de datos y quería a ver si alguien por favor, me puede decir cómo hacer para que en un cuadro de texto en un formulario, me pinte el mayor valor de la columna "Ubicación", al abrir el formulario. Teniendo en cuenta que en dicha columna, existen diferentes formatos de valores y que se irán introduciendo más registros con mayores valores.
Realmente lo que me interesa es el mayor valor de los dígitos después del guión bajo.
Como se puede ver en la imagen adjunta, el mayor valor que se debería mostrar sería 983 
Gracias de antemano
Saludos




Respuestas:
Publicado por: emiliove
Fecha de publicación: 18/Junio/2022 a las 00:41
Puedes hacer con una consulta para crear un campo donde solo sea números, con ayuda de las Funciones de texto, por ejemplo con InStr, Len y Mid, y luego lo conviertes a numero con CInt. una vez hecho esto no tienes mas que decirle que te de el top 1 de la consulta o con una función de dominio como DMax.

Saludos


Publicado por: main
Fecha de publicación: 18/Junio/2022 a las 10:10
Hola, esta es una pequeña función que extrae lo que hay en una cadena a partir del primer caracter deseado, encontrado.
A poco que la adaptes ya lo tienes.
y como dice emilove, debes anteponer la funcion Cint
Ten en cuenta el registro que carece del caracter "_" ya que ese caso la funcion no devolveria un número.
Para este ultimo caso la funcion deberia devolver cero(0)

Function TextoDespuesdeChar(scadena As String, schar As String) As String
If InStr(scadena, schar) > 0 Then
    If Right(scadena, 1) = schar Then scadena = Left(scadena, Len(scadena) - 1)
    TextoDespuesdeChar = Mid(scadena, InStrRev(scadena, schar) + 1)
Else
TextoDespuesdeChar = scadena  ' 0
End If
End Function

Saludos


Publicado por: noise56
Fecha de publicación: 18/Junio/2022 a las 10:24
Buenos días.
Mucho me temo que mis conocimientos de Access no dan para tanto.
Gracias de todos modos Emilio.
Un abarazo


Publicado por: noise56
Fecha de publicación: 18/Junio/2022 a las 10:26
Buenos días Main.
Ahora no puedo pero en cuanto pueda haré algunas pruebas a ver si acierto.
Gracias.
Un abrazo


Publicado por: noise56
Fecha de publicación: 18/Junio/2022 a las 12:23
Hola de nuevo Main.
Como ya he dicho, mis conocimientos de Access son muy de andar por casa y no sé por dónde meter mano a tu mensaje anterior.
No veo que se haga referencia a la columna "Ubicación", ni al cuadro de texto. Si puedes hacer el favor de ponerme el ejemplo más completo te lo agradeceré.
Saludos


Publicado por: main
Fecha de publicación: 20/Junio/2022 a las 09:03
Hola de nuevo
Lo primero que debes hacer es crear o añadir a un modulo existente la función que te di.
A continuacion pruébala en la ventana de inmediato del módulo escribiendo lo siguiente:
?TextoDespuesdeChar("HD_0983","_")
Verás que devuelve  "0983"
y si escribes
?CInt(TextoDespuesdeChar("HD_0983","_"))
te devuelve  983

Saludos







Publicado por: noise56
Fecha de publicación: 20/Junio/2022 a las 14:21
Hola Main, gracias otra vez.
He hecho lo que me has dicho y he probado lo que me dices de la ventana inmediato del módulo.
Como ves todo perfecto, pero no sé dónde poner lo de "CInt" ni qué hacer para que me muestre el resultado en un cuadro de texto del formulario.







Publicado por: noise56
Fecha de publicación: 20/Junio/2022 a las 21:47
Hola Main
Por fin he podido solucionar el problema y hacer que funcione como yo quería
Muchas gracias a todos, muy amables.
Asunto resuelto.
Saludos. Clap



Imprimir página | Cerrar ventana