Saltar al contenido

Extraer valor aleatorio y comprobar valor de una tabla de access


Recommended Posts

publicado

Buenas tardes,

Amigos del foro estuve buscando información del tema en la web, antes de realizar mi consulta  en el foro , pero no encontré nada que coincidiera . Detallo mi necesidad:

Parte I

1, Deseo "Generar" mediante un botón en una hoja de Excel (Ver botón generar código en el libro adjunto), busque un valor en una tabla de Access" Clave dinámica "de forma aleatoria. la tabla esta compuesta de valores numéricos ordenados en filas y columnas :

2.  En la hoja "Base "en la celda E1 colocar el valor del resultado del aleatorio. 

3.  Devolver el valor encontrado en un msgbox.

Parte II

1.  En el botón validar  se desplego un userform compuesto por un textbox y un botón, donde se debe digitar el valor resultante del primer proceso "Generar  código  en el textbpx".

2/ Botón validar debe comprobar si el valor del textbox se encuentra en la tabla de Access" Clave dinámica", si se cumple la condición deberá mostrar el " userform  Frmuser", en caso contrario devolver msgbox con error,

Agradezco cualquier ayuda que me puedan brindar.

Ruta de tabla de Access> C:\Users\50688\Desktop\Login Form in VBA\Database

Saludos

Anteproyecto.xlsm Database.accdb

publicado

Hola José

Las tablas de Access son reales bases de datos con campos y registros por lo que considerar que es práctico elegir un valor basado en una celda o columna es un error. Es más, se podría entender tu necesidad de tener un valor al azar basado en valores establecidos en una tabla, pero la lógica de bases de datos indica que deberías tener un solo campo en esa tabla con la cantidad de registros con números que necesites. 

Si persistes en la estructura que tienes, bueno, te complicas un poco, pero...:

- Necesitarías extraer todos los datos de la tabla con un recordset

- Con la propiedad count del recordset podrás tener el número total de registros en una variable

- Con la propiedad Count de la colección Fields (del recordset) podrías tener el número total de campos en un variable

- Si siempre van a ser el mismo número de campos y de registros, obviar los dos puntos anteriores.

- Con las variables y/o el número de filas/columnas podrías usar "ALEATORIO.ENTRE" dos veces y guardar esos valores también en variables y ya tienes tu número de registro y campo al azar.

- Basado en tu variable del número de registros con una sentencia SQL y Where obtienes en el recordset el registro correspondiente basado en el campo "Fila".

- Una vez hecho eso, basta usar tu recordset con la colección Fields y el índice correspondiente para tener el campo en dónde está tu número elegido

Todo eso en VBA conlleva tiempo y desarrollo que va más allá de la ayuda. Espero que con esas indicaciones puedas elaborarlo tú, o bueno, quizás alguien se dé tiempo, pero no es poco.

Saludo.

publicado

Hola!

@Abraham Valencia primero gracias por responder y por tus sugerencias de realizar  la BD en excel tienes mucha la razón, para nadie es un secreto que tienes un gran conocimiento y una larga trayectoria en la web(mejor que nos lo diga @Gerson Pineda), pero la insistencia de realizar en Access esto por la necesidad de la estructura del proyecto real.

El buen amigo @JasallBcnsacrificó su valioso tiempo en brindarme esta solución, la comparto por acá por si en el algún momento le puede ser útil a alguien más:

 

Solución al tema

Saludos cordiales,

 

publicado

Amigo, creo que se me entendió mal, a mí me parece perfecto que uses Access, solo te decía que la forma en que has elaborado esa tabla para tus números al azar no es la ideal para trabajar en dicho programa. Saludos.

 

PD: las "malas lenguas" dicen que soy también experto en Access jejeje

publicado
hace 2 horas, Abraham Valencia dijo:

Amigo, creo que se me entendió mal, a mí me parece perfecto que uses Access, solo te decía que la forma en que has elaborado esa tabla para tus números al azar no es la ideal para trabajar en dicho programa. Saludos.

 

PD: las "malas lenguas" dicen que soy también experto en Access jejeje

Gracias! Por la aclaración. 

 

Saludos

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.