Ayuda en Access, =Max |
Responder |
Autor | |
ronis10
Nuevo Unido: 14/Octubre/2020 Localización: CR Estado: Sin conexión Puntos: 6 |
Tema: Ayuda en Access, =Max Enviado: 14/Octubre/2020 a las 08:09 |
Necesito ayuda en Access 2016 con el comando =Max
Tengo una table de productos (Tabla 1) con un autonumerado indice y un sub indice (Codigo) donde hay 8 categorías que informan donde esta almacenado el producto. Cada categoria inicia con una letra seguida de numeros. Ej m001 f001 h001 k001 m002 f002 h002 k002 m003 f003 h003 k003 . . . . . . . . . . . . El caso es que para cada producto nuevo necesito saber cual es el ultimo registro m(x+1), f(x+1), etc ALGUIEN ME PUEDE AYUDAR ? |
|
IRC
|
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14720 |
Enviado: 14/Octubre/2020 a las 09:09 |
Hola ronis10 y bienvenido al foro,
No se como andas de VBA pero, por aquello de enseñar a pescar en lugar de dar peces, aquí va la lista de "ingredientes" para obtener lo que buscas - Función DMax aplicando el criterio adecuado. Operador Like - Función Mid para eliminar la parte del valor obtenido que no sea numérica - Función CInt para convertir el valor a entero (opcional) - Función Format para formatear el nuevo valor al formato deseado Prueba y nos cuentas. Si te atascas, explícanos dónde. Un saludo
|
|
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3062 |
Enviado: 14/Octubre/2020 a las 10:38 |
Hola
Me ha venido bien para practicar, hace lo que quieres, pero no se si la forma de conseguirlo es como quieres.... Fijate en la consulta los pasos que voy dando,la idea la he sacado de Xavi claro..... La funcion la he ido armando poco a poco en diferentes campos de la consulta, pero access que es demasido listo me ha eliminado los campos no necesarios......asi que queda solo el que vale SELECT Max(CLng(Right([Codigo],Len([Codigo])-1))+1) AS CombiertoNumeroY_Sumo1, Left([Codigo],1) AS SacoLetra FROM Tabla1 GROUP BY Left([Codigo],1) HAVING (((Left([Codigo],1))=[Formularios]![Formulario1]![ccLetras])); Lo que esta en negrita lo que hace es quitar la letra, pasarlo a numero, sacar el mas grande y sumarle 1. Y lo que esta en rojo es el filtro para la letra. Aislo la letra que es la primera y la filtro desde un formulario. Quizas haya una forma mas facil y ortodoxa de sacarla, pero mi nivel da para esto... El ejemplo https://www.dropbox.com/s/wrajzj4oyrm8j6p/FiltrarLetrasYSumarNumero.rar?dl=0 Max(CLng(Right([Codigo],Len([Codigo])-1))+1) Con Len saco la longitud del codigo menos 1 Con Right combinado con len aislo los numeros(que son letras), pillo los 3 de la derecha de la letra Con CLng paso esos numeros con cero que en realidad son texto a numero entero, 001 por ejemplo quedaria 1 Max me da en numero mas grande y para terminar a ese numero le sumo 1 Y con format le doy el formato que quiero ponindolela letra al principio que corresponde, esto en el codigo del boton. A partir de hay tu ya metes ese codigo donde quieras..... No he utilizado casi nada de codigo vba, pero si he jugado con diferentes funciones para sacar lo que quiero en la consulta
Editado por rokoko - 14/Octubre/2020 a las 10:44 |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14720 |
Enviado: 14/Octubre/2020 a las 11:01 |
Hola,
Solo una puntualización: si voy a tomar de una cadena de texto solo a partir de un determinado carácter hasta el final de la cadena, no necesito calcular su distancia para utilizar la función Right; el tercer argumento de la función MID es opcional. En caso de dejarlo vacío tomará todos los caracteres a partir del indicado en el segundo argumento. PD: me alegro que sirva para practicar. Yo lo habría hecho con una función (por eso de la reutilización) y una sola línea de código. A ver que saca quien preguntó. Un saludo
|
|
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3062 |
Enviado: 14/Octubre/2020 a las 11:42 |
Cierto! la funcion Mid la he utilizado poco y no la controlaba bien, quedaria asi
CombiertoNumeroY_Sumo1: Máx(CLargo(Medio([Codigo];2))+1)
|
|
ronis10
Nuevo Unido: 14/Octubre/2020 Localización: CR Estado: Sin conexión Puntos: 6 |
Enviado: 14/Octubre/2020 a las 19:06 |
Rokoko y Xavi
Chicos, ambas respuestas asustan a un lego, pero le hechare ganas mas tarde y les tendre informados de mi avance. Les gradezco su interés y ayuda... |
|
IRC
|
|
hipromark
Habitual Unido: 18/Julio/2016 Localización: Caracas Estado: Sin conexión Puntos: 71 |
Enviado: 14/Octubre/2020 a las 20:56 |
Hola Ronis, pues si te pierdes mucho con el código, tal vez habría una forma de hacerlo sin código. Básicamente tendrías que guardar el último valor en una tabla temporal, esta tabla la creas con un query tipo create table, luego con otro query puedes ver el último registro.
Ahora todo depende de en que momento necesites saberlo, si es algo dinámico que te debe mostrar de inmediato el código y seguir avanzando o si es sólo que te informe cada vez que abras un formulario, es decir, dependiendo de lo avanzado de la funcionalidad podrías hacerlo sin código o con código. Déjanos saber más detalles para ver si te serviría la opción que te propongo
|
|
ronis10
Nuevo Unido: 14/Octubre/2020 Localización: CR Estado: Sin conexión Puntos: 6 |
Enviado: 14/Octubre/2020 a las 22:11 |
He qui lo que
he logrado…
SELECT Max(CLng(Right([Codigo],Len([Codigo])-1))+1) AS CombiertoNumeroY_Sumo1, Left([Codigo],1) AS SacoLetra FROM Tabla1 GROUP BY Left([Codigo],1) HAVING
(((Left([Codigo],1))=[Formularios]![Formulario1]![ccLetras]));
EL PROBLEMA: No puedo
cambiar el valor Alfa a menos que haga clic “SQL” y “Ejecutar” e introduzca otra
letra Perdón por la arrogancia de pedir más… ya es un asunto de estética |
|
IRC
|
|
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3062 |
Enviado: 14/Octubre/2020 a las 22:26 |
Arriba te he puesto un enlace a dropbox con un ejemplo, creo que no lo has visto.....
|
|
ronis10
Nuevo Unido: 14/Octubre/2020 Localización: CR Estado: Sin conexión Puntos: 6 |
Enviado: 15/Octubre/2020 a las 20:16 |
Listo,
Anoche lo baje y copie lo mejor que pude pero aun me da algunos problemas. Hoy trato de nuevo y te informo Gracias por tu ayuda... de verdad muy valiosa |
|
IRC
|
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |