Access - actualizar registro

 
Vista:
sin imagen de perfil

actualizar registro

Publicado por Juan Carlos (4 intervenciones) el 23/01/2022 00:01:50
Hola buena tarde.
como hago para capturar el usuario que se loguea y modifica un registro:
es decir: tengo un formulario con un subformulario
(subformulario se creo con esta consulta:
SELECT PlantillaInventario.CodigoBarras, PlantillaInventario.DescripcionArticulo, PlantillaInventario.Marca, PlantillaInventario.Lote, PlantillaInventario.Invima, PlantillaInventario.fecha_vencimiento, PlantillaInventario.Conteo1, PlantillaInventario.Clasificacion, PlantillaInventario.Usuario, PlantillaInventario.Usuario2, PlantillaInventario.ZonaConte1, PlantillaInventario.ZonaConte1
FROM PlantillaInventario
WHERE (((PlantillaInventario.CodigoBarras) Like [Formularios]![PrimerConteo]![txtNombre].[Texto]));
)

cuando llamo en el cuadro de texto "txtNombre" un codigo de barra el en el subformulario me trae el producto donde puedo puedo modificar la cantidad que hay.

quisiera capturar automaticamente el usuario que modifica el registro, el registro ya existe en la BD y este formulario es para modificar la cantidad existente.

tengo una tabla donde registro los usuarios que pueden ingresar a la aplicación.

agradecería si me pueden orientar

gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

actualizar registro

Publicado por Anonimo (3323 intervenciones) el 23/01/2022 10:30:18
... tengo una tabla donde registro los usuarios que pueden ingresar a la aplicación.....

Al validarse como usuario autorizado se guarda su ID (o la referencia que lo identifica) en una variable publica que se puede utilizar para lo que sea necesario.

.... quisiera capturar automáticamente el usuario que modifica el registro, el registro ya existe en la BD y este formulario es para modificar la cantidad existente.

La metodología clásica para manipular existencias consiste en:
.- Añadir al introducir las compras
.- Reducir al efectuar las ventas
.- El inventario para análisis y corrección de errores.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo

actualizar registro

Publicado por Eduardo (320 intervenciones) el 23/01/2022 17:24:31
Si bien es cierto que esto se hace con una variable pública, la define a nivel de módulo, algo como:

Public pidusuario As Long

Cómo varios usuarios pueden modificar el registro no se puede hacer el control sobre el mismo registro, se requiere de una tabla adicional o log, por ejemplo, tblLOG con los campos :

id Autonumérico
idusuario (Entero largo)
idproducto (Entero largo)
fecha_modifica Fecha/hora, valor predeterminado Date()
tipo ( entero en donde 1= Entrada al inventario 2= Salida)
cantidad (Doble)

¿Cuál sería el procedimiento?

1. Es una entrada

INSERT INTO tblLOG(idusuario,idproducto,tipo,fecha_modifica,cantidad) VALUES(" & pidsuario & "," & Me.idproducto &",1" & "# "& FORMAT(Me.fecha,"mm/dd/yyyy" & "#" & "," & "Me.cantidad

2. Es una salida

INSERT INTO tblLOG(idusuario,idproducto,tipo,fecha_modifica,cantidad) VALUES(" & pidsuario & "," & Me.idproducto &",2" & "# "& FORMAT(Me.fecha,"mm/dd/yyyy" & "#" & "," & "Me.cantidad

Hay otros mecanismos, si no quiere en una tabla lo puede llevar en un archivo texto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

actualizar registro

Publicado por Juan Carlos (4 intervenciones) el 23/01/2022 18:43:12
Hola Eduardo, gracias por contestar.
te cuento esta aplicación es para la toma de un inventario, 4 personas se loguea para esta toma de inventario que se divide por zonas,
la idea es: la ultima persona que modifique el registro es decir:
producto :acetaminofen conteo1:3 cuando cambie el valor en conteo se registre en usuario el ultimo que modifico el registro.

cuando conteo1= cambie de valor, se registre el usuario que lo modifico automáticamente.

tengo declarada una variable en un modulo " no se si este bien declarada"

Public Function fncUsuario() As String

fncUsuario = Nz(txtlogin, "")

End Function

que puedo hacer con esa variable en el editor de codigo cuando cambie de estado el campo actualice el usuario?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo

actualizar registro

Publicado por Eduardo (320 intervenciones) el 23/01/2022 21:17:38
Es muy diferente una función pública a una variable pública, basta con definir txtlogin como publica, algo como: (A nivel de módulo)

Public txtlogin As String

Ahora, tratándose del último usuario que lo modificó si se puede hacer en la misma tabla de producutos, en este caso programe el evento Después de actualizar, algo como

Currentdb.Execute "UPDATE tablaproductos SET usuario=" & txtlogin

En donde tablaproductos es el nombre de la tabla de sus productos y txtlogin es el login que almacenó al ingresar el usuario. Resumiendo, siempre irá a quedar registrado el último.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

actualizar registro

Publicado por Juan carlos (4 intervenciones) el 24/01/2022 13:14:29
Gracias Eduardo nuevamente por tu comentario.

declare en el modulo la variable publica
Public txtlogin As String

y en el formulario en el campo en el conteo1:

Private Sub Conteo1_Change()
CurrentDb.Execute "UPDATE PlantillaInventario SET usuario=" & txtlogin
End Sub

pero me sale "error 3144 en tiempo de ejecucion error de sintaxis en instrucion UPDATE"
-------------------------------------------------------------------------------------------------------------------------------
este es el codigo que utilizo en el formulario para ingresar al aplicativo:

Private Sub btnIngresar_Click()

Dim idUsuario As Integer

If DCount("[Usuario] and [Clave]", "[Usuario]", "[Usuario]='" & Me.txtlogin & "' and [Clave]='" & Me.txtpass & "'") Then
idUsuario = DLookup("[Id_Usuario]", "Usuario", "[Usuario]= '" & Me.txtlogin & "' and [Clave]='" & Me.txtpass & "'")
DoCmd.OpenForm "Inicio", , , , , , idUsuario
DoCmd.Close acForm, "formlogin"
Else
MsgBox "Usuario o contraseña incorrecta", vbExclamation, "Aviso"
End If

End Sub
----------------------------------------------------------------------
y este valida que el usuario este logeado antes de abrir el formulario:

Private Sub Form_Open(Cancel As Integer)

If IsNull(Me.OpenArgs) Then
MsgBox "Acceso no autorizado", vbCritical, "Aviso"
Cancel = True
End If

End Sub

todo funciona bien menos el actualizar el usuario que modifica el registro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo

actualizar registro

Publicado por Eduardo (320 intervenciones) el 24/01/2022 13:26:25
Hace falta los apostrofres

1
CurrentDb.Execute "UPDATE PlantillaInventario SET usuario='" & txtlogin & "'"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

actualizar registro

Publicado por Juan carlos (4 intervenciones) el 24/01/2022 15:35:03
ya no sale el error, paro tampoco actualiza el registro ):
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar