Base de datos para administrar facturación y contabilidad de una empresa en Microsoft Access

Estoy realizando una BD para administrar la contabilidad y facturación de una empresa. En un determinado momento, dadas una condiciones necesito, (así se me ocurrió, tal vez haya otra manera), modificar unos registros en unas tablas sin necesidad de hacerlo por formulario, sino a través de VB. Para ello he recurrido a un ejemplo dado por ti a otra persona y al help, creo no me ha ido mal, pero surgió un inconveniente al que no le puedo dar solución. A continuación te adjunto ese procedimiento (tal vez sea necesaria más info) pero quizás sirva. En cierta manera funciona, cuando cambio un dato en un combobox, se llega a este proc., bien, se realiza el cambio necesario (he visto que el campo corresp. De la tabla se cambia), pero cuando quiero cambiar de registro en el formulario o cerrarlo, aparece un msg, ¿así? Conflicto de escritura- Otro usuario modificó este registro después de que UD. Comenzó a modificarlo. Si lo guarda sobrescribirá los cambios que hizo el otro usuario.? Etc,¿etc..? (Dice más pero lo abrevié, quizás lo conozcas). ¿A qué se debe?, ¿Me falta algo? En este u otro proc.? Es aleatorio el aparecer de este msg, a veces lo hace desde la primer modific., otras a partir de la segunda.
Otro problema que tengo, ¿es qué? ¿Es necesario? Determinar por programación los parámetros de configuración de impresión (tipo de papel, márgenes, cant de copias, etc, etc), ¿me podrías dar una pista donde se pueden lozaclizar esos comandos/instrucciones/eventos o como se llamen y cuáles serían?.
Desde ya muchas gracias.
Un saludo desde Argentina, Gustavo.
Public Sub ModificarRegistroClientes()
Dim strCliente As String
Dim dbs As DAO.Database
strCliente = Forms![Pedidos de trabajo por cliente]![NombreCompañía]
Set dbs = CurrentDb()
Select Case varModCampoCliente
Case 80
dbs.Execute "UPDATE Clientes SET " _
& "ValorIva =" & 0 & " WHERE NombreCompañía = '" & strCliente & "';"
Case 81
DoCmd.OpenForm "Información de la compañía", , , , , acHidden
dbs.Execute "UPDATE Clientes SET " _
& "ValorIva =" & Forms![Información de la compañía]![TasaImpuestoVentas] & " WHERE NombreCompañía = '" & strCliente & "';"
DoCmd.Close acForm, "Información de la compañía", acSaveNo
End Select
Dbs. Close
DoCmd. Save acDefault, "Pedidos de trabajo por cliente"
End Sub
Respuesta
1
El error se provoca porque has modificado un campo en el formulario, sin que este cambio se hiciera realidad en la tabla, modificas el valor mediante código, e inmediatamente guardas el registro.. con lo que se encuentra la diferencia de datos.. yo creo que en lugar de hacer esta función y actualizar el valor directamente a la tabla, lo haría en el momento de guardar los datos del formulario (siempre que este formulario esté ligado a la tabla de Clientes). Es decir, en lugar de actualizar los datos, incluir un campo llamado ValorIva y guardar en este campo el valor obtenido en la función ModificarRegistroClientes()
Si por el contrario, el formulario no está ligado a clientes, ejecutaría esta función una vez guardado el registro del formulario... llamando a la función desde el evento DespuesDeActualizar del formulario..
(Si me he liado yo mismo dímelo!)
En cuento a los márgenes de los informes, que Dios te coja confesado! Te las vas a ver y desear... lo normal sería que en tu equipo lo configures y reces para que en los demás equipos, la impresora acepte los márgenes por ti indicados. Si no es así puedes "pelearte" buscando en la ayuda sobre : prtMip y prtDevMode.
Saludos.
Jordi Madern i Pérez
Mataró (Barcelona)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas