COMO ACUMULAR VALORES EN MS ACCESS - DO WHILE - VBA
HTML-код
- Опубликовано: 8 фев 2025
- Si este video te ha sido de utilidad, te dejo este link para donaciones y asi seguir subiendo contenido:
www.paypal.com... #DOWHILE #MICROSOFTACCESS #VBA
Acumular el valor numérico de un campo recorriendo la tabla con do while
Suscribete a mi canal: / @davidsamuelhn
Videos mas recientes: / @davidsamuelhn
Donativos al canal: www.paypal.com...
Comunidad en facebook (Microsoft Access Latinoamerica): / 590344261832647
Curso MS SQL Server basico: • Clase #1 Curso SQL Ser...
Sistema facturación desde cero MS Access + VBA + MS SQL Server: • Parte 1 Sistema de f...
Gracias David, exquisita explicación, mejor imposible, gracias desde Barranquilla.
Buena clase de Access Maestro Vainas Saludos
Excelente mientras cuentas lecciones!
Lo siento, señor. David, había tomado un curso de facturación que se convirtió en parte de compras. Y falta la parte de ventas. Mi pregunta y petición es, ¿cuándo nos vas a ayudar a terminar ese proyecto de facturación?
Muchas gracias y feliz año nuevo!!!
David un excelente video muy sencillo y bien explicado. Le agradezco su generosidad al compartir su conocimiento con esta comunidad. Diez mil gracias por todo.
Un saludo desde Colombia la tierra del café y las esmeraldas. Dios lo Bendice ahora y siempre
Pd Seguimos pendientes de la culminación del sistema de facturación en Access + VBA
Amen..!! Bendiciones a ud también, gracias por el apoyo en mi canal, claro, el sistema de facturación transmitiré en vivo el siguiente video este fin de semana, saludos
Buenas tardes David, es un gusto saludarte y mencionar que tienes una experiencia en el manejo de SQL y por obvias razones, en access, tienes magnificos tutoriales
Te comento que soy nuevo en realizar algunos formularios en access y he estado armando un pequeño sistemas con varias de tus recomendaciones
Este video me ayudo mucho, para poder realizar el acumulado de minutos que tengo en una tabla de Incidencias, pero ahora se me complico un poco, ya que de las claves de incidencias, unas claves deben ser excluidas del acumulado y no deben considerarse, pero al crear otro IF, me sigue arrastrando el valor del registro que no deben considerarse, pido de tu ayuda, para que de favor eches un vistazo a mi problema y me puedas indicar, como se debe evitar el arrastre del valor excluido y no sumarlo. De antemano te agradezco la ayuda que me puedas proporcionar.. Saludos y Gracias .....
gracias por sus enseñanzas, ya habia olvidado programacion del do while.
Me gustó mucho, ya que lo explicaste y lo hiciste paso a paso.gracias 💨⛈🌧🎂🥂🇲🇽
Excelente explicación maestro..jna pregunta Si pudiera explicar como armar una base de datos para control de credito donde muestre un fechas de vencimiento ya sea diario ,semanal ,quincenal o mensual .. cosa que permita mostrar en un informe el extracto de su crédito.... con eso quedaría la salsa a los tacos de maravilla....gracias
Excelente video y la frase salsa a los tacos muy bueno le da sabor a los videos ....y eso q apenas voy a la mitad del video muy buena explicacion y solucion en el codigo.....
hahaha gracias, saludos estimado Rodolfo
Buenas tardes David:
En primer lugar agradecer enormemente el aporte tan didáctico.
En segundo, me ha sabido mal no estar en el directo, pero la diferencia horaria no ayuda y hubo una pregunta del compañero Tango, en cuanto a acceder a access vía web, que me resultó interesante.
En esta semana había cambiado de estrategia y estaba realizando pruebas en SQL Server y contador secuencial con ROW_NUMBER, aunque creo que eso ya es matar moscas a cañonazos.
De hecho, tras ver este vídeo me replanteo hacer los procesos en Access y enviar la tabla definitva a SQL Server, a modo de histórico, ya que cada fichero que me puede llegar de cada cliente, puede tener entre 50 y 100 mil registros y no creo que access tenga problema para nada en hacerlos. Luego ya guardo la tabla resultante en SQL Server y accedo a ella desde Access, para recuperar determinado grupo de registros.
Repito mi agradecimiento, suscribo la técnica de Feynman y saludos desde España.
Muchos saludos Vicente, que bien que puede servir de guía mi video, en efecto, esa cantidad de registros Access los maneja muy bien, con un rendimiento alto, que la pases bien, saludos hasta España
@@DavidSamuelHn Buenos días David y compañeros:
He adaptado el código a la tabla que estoy tratando y haciendo una prueba con dicha tabla de 9.160 registros, he observado que me daba un error.
El código funcionaba bien en todos los registros excepto en uno, que además siempre era diferente. Era como aleatorio, pues he hecho distintas comprobaciones y no seguía un patrón.
Al final me dio por pensar si era provocado por alguna interrupción en el proceso y me vino a la cabeza el quitar "On Error Resume Next", obteniendo el siguiente error:
"Se ha producido el error '3052' en tiempo de ejecución: Se excedió el número de bloqueos de archivos compartidos. Aumente el valor de la entrada MaxLocksPerFile del Registro."
He buscado y habría que cambiar el RegEdit.exe (su valor predeterminado es de 9500) o el método SetOption.
No obstante, he reducido a la mitad el número de registros en la tabla (en torno a 5.500) y sin el "On Error Resume Next", no me ha dado ningún aviso de error y corrió la tabla correctamente, sin dejarse ningún registro por actualizar, con lo que he confirmado que el registro erróneo aleatorio se producía por la interrupción interna del proceso y su reanudación inmediata.
Como no he querido modificar el archivo de registro de Windows, he utilizado un método que temporalmente aumenta el número predeterminado de bloqueos, por lo que he añadido el siguiente código al principio del procedimiento: 'DAO.DBEngine.SetOption dbMaxLocksPerFile, 15000' con lo que me ha funcionado a la perfección recorriendo todos los registros de la tabla y actualizándolos y sin activar el "On Error Resume Next".
Luego he comprobado el archivo de registro y seguía estando en 9500, que es su valor predeterminado.
Disculpad el rollo pero he pensado que esto le podía servir a alguien.
Echando un poquito más de salsa a los tacos.
@@vicentesignes8219 jaja excelente aporte, buena experiencia, de esa manera se enriquecen los conocimientos, enhorabuena
@@DavidSamuelHn Buenas tardes David. Estoy a vueltas con una aplicación en la que me baso en el código de este vídeo. El problema que me están dando access es que tras lanzar el código, la base de datos se queda como "enganchada" con el usuario admin. He quitado lo de compactar y reparar bd al salir y lo que hace es que la base de datos se cierra, pero no así access. Al mirar los ficheros, el del login sigue abierto, aunque la aplicación ya no lo esté. Es como si corriera en segundo plano, abierta por el usuario admin. Cuando voy a hacer alguna modificación me advierte de que puede que no guarde nada, ya que hay otro usuario que tiene abierta la bd.
Al final, si utilizo el código, tengo que cerrarla desde el administrador de tareas.
Esto no me pasa si hago otros procesos y no utilizo el módulo vba.
Se les ocurre qué puede estar pasando?
Gracias de antemano y saluodos.
Buen video Maestro Vainas Saludos :)
Buenas tardes Maestro, cuál sería la mejor forma para manejar una tabla donde tengo id, fecha inicio,fecha fin, tipo y lo que quiero es generar con un do while o foreach un registro por fecha ? gracias por sus detalladas explicaciones
Excelente Video Felicitaciones
David, me podrias ayudar en como hacer para capturar valores de una consulta de una tabla y poder rellenar con esos datos otras tablas, eje, buscar el nombre de una persona mediante su ID y que sus datos mostrados se almacenen junto con otros datos adicionales. se podra?
Hola ingeniero yo quiero es acumular solo cantidades cuando agregue productos desde la tabla más compras
Hola David, excelente como siempre. No llegué al directo pero me hubiera gustado comentarle la conveniencia de usar "DoEvents" en los procesos de bucle para evitar colapsar el sistema en bases con gran cantidad de registros, y en tal caso ¿Donde se coloca esta instrucción?
Saludos
Gracias, si DoEvents es clave, sobre todo cuando el ciclo Do interactúa con controles del formulario como textbox, el DoEvents refresca todo el form, gracias por la acertada observación
Muy Buenas estimado David Samuel
Cuando continúa con el curso de facturación? Ya no esta subiendo videos
Si se va a seguir, he estado mal de salud
@@DavidSamuelHn oh que pena David Samuel, espero estés mejorando saludos un abrazo enorme.
Dios te Bendiga 🙏
Una consulta este procedimiento o codigo bucles do while o for next se puede utilizar para actualizar registros desde mi listbox n cantidad de item ejemplo nombres de campos de la tabla access
Remision status
107001700 pendiente
Cuando ejecute el codigo pase a lo siguiente
Remisio status
107001700 entregado
O que sugerencia me daria para que la actualizacion sea mas optima o correcta y no trabar el procesador del computador como cuando se trabo el video pero me gusto la solucion
Perdon pero no tengo mucho conocimiento en access.. gracias .
Y sus videos son muy buenos bendiciones .....
Una consulta de actualización bastaría en ese caso, el rendimiento siempre será mejor que con un recorrido do while
@@DavidSamuelHn muchas gracias
Estare pendientes de sus videos y muy agradecido por tomarse el tiempo pra responder nuestros comentarios
Y access es muy complejo en el uso de ambito de trabajo y sus funciones
Y su persona nos da a conocer como programar en el mismo
Saludos David, gracias por enseñarnos tus conocimientos, realice una modificación al mismo para adaptarla a un requerimiento en una base de datos sencilla para pruebas, te agradeceré si me puedes decir si observas algún error o mejora al mismo ó algún compañero que sepa al respecto, a continuacion se las comparto:
Sub do_while3()
Dim sql, y As Integer
Dim x As Currency
Dim z As Currency
Dim dt As DAO.Recordset
sql = "Select * from Movimientos order by codigo asc, fecha asc, id asc"
Set dt = CurrentDb.OpenRecordset(sql, dbOpenDynaset, dbSeeChanges)
dt.MoveFirst
x = dt!Abono
y = dt!Codigo
z = dt!Cargo
With dt
Do While Not dt.EOF
If !Codigo = y Then
.Edit
!Saldo = x - z
.Update
x = !Saldo
y = !Codigo
.MoveNext
On Error Resume Next
x = x + !Abono - !Cargo
Else
x = dt!Abono
y = dt!Codigo
End If
Loop
End With
End Sub