Foro VBATotal

Aprender a programar en Visual Basic

Por favor, o Regístrate para crear mensajes y debates.

Crear registros secuenciados de manera masiva

Hola, saludos cordiales.

Apreciado profesor.

Soy seguidor suyo y con sus publicaciones he aprendido bastante. Le ofrezco las gracias por la oportunidad de postear esta petición a través de su magnífico foro.

Me atrevo a solicitarle de favor que me conceda una solución con la que se pueda generar una numeración o serie tipo: B0123456789.

Contexto:

Tengo una tabla (TComprobantes) con un campo llamado “Comprobante” del tipo string, en el que almaceno series que incluyen una letra B y una numeración, que va en aumento siempre. Lo que deseo es que, desde un formulario con dos cuadros de textos, se pueda crear una secuencia a partir de una numeración inicial hasta una final, que a través de un botón de comando se genere esa secuencia y se inserte de inmediato de manera masiva en la tabla. De manera que, si dijera hay que crear 10 comprobantes desde el B0000000101 al B0000000110, que al decirle en el formulario dónde debe comenzar y dónde terminar, que la función proceda a crear e insertar en la tabla esos comprobantes para tenerlos disponibles y poder usarlos a conveniencia desde otro formulario.

De igual forma podría ser que solo se le pase o se le diga desde un cuadro de texto el comprobante inicial y la cantidad que a partir de ese se desean, y entonces se creen e inserten dichos comprobantes en la tabla.

Ojalá haya podido explicarme bien con este caso. Le he adjuntado dos ficheros, un pdf con algunas ideas y una .accdb con el esquema que complementa las ideas plasmadas en el pdf.

Agradecería mucho su colaboración.

Gracias anticipadas.

Archivos subidos:
  • Tienes que conectarte para acceder a las subidas.

Buenas,

Creo que la segunda opción es mejor, sobre todo porque a la hora de rellenar el campo inicial y final puedes cometer algún error con la numeración. Rellenando solo la numeración del campo inicial la probabilidad de equivocarse se reduce a la mitad 😉

Como todos los comprobantes van a empezar por la letra B, es mejor no incluirla en el campo y así nos quedamos con un número siendo más fácil de trabajar. En caso de querer incluir la B, tendrías que separar la cadena usando un right para quedarte solo con el valor numérico.

Este es el código a implementar:

Private Sub CmdCrearComprobantes_Click()

'Definición de variables

Dim dbs As DAO.Database
Dim comprobantesSQL As String

Set dbs = CurrentDb()

'Desactivamos mensajes de aviso

DoCmd.SetWarnings False

'Establecemos variables de inicio y fin

comproban = Form!Numeroinicial

Final = comproban + Total

'Bucle con el que vamos insertando comprobantes en la tabla

For i = comproban To Final

comprobantesSQL = "INSERT INTO TComprobantes ([Comprobante]) VALUES ('" & comproban & "')"

DoCmd.RunSQL comprobantesSQL

comproban = comproban + 1

Next

'Activamos mensajes de aviso

DoCmd.SetWarnings True

End Sub

 

Te adjunto el archivo funcionando.

Saludos.

Archivos subidos:
  • Tienes que conectarte para acceder a las subidas.
Por favor, si te he ayudado, haz clic en algún banner publicitario. Es una gran manera de ayudarme. También puedes realizar una donación en Paypal por la cantidad que desees https://paypal.me/vbatotal

Hola, maestro…
Muchísimas gracias por la solución, funciona perfecto.
Con lo del uso de la “B” delante, lo he solucionado atendiendo a sus sugerencias.
Queda demostrado, usted es un maestro. Soluciones prácticas con el mínimo de código.
Reciba un fuerte abrazo.

Administrador ha reaccionado a esta publicacion.
Administrador

De nada.

Para cualquier cosa, por aquí andamos.

Saludos.

Por favor, si te he ayudado, haz clic en algún banner publicitario. Es una gran manera de ayudarme. También puedes realizar una donación en Paypal por la cantidad que desees https://paypal.me/vbatotal

Contacto