MENSAJE DE ALERTA

Dudas sobre código
Juan Andrade
Nivel 1
Mensajes: 5
Registrado: Lun Oct 07, 2019 6:38 pm

MENSAJE DE ALERTA

Mensajepor Juan Andrade » Lun Oct 07, 2019 7:55 pm

Hola buen día soy nuevo en este foro y quisiera que me ayudaran con un mensaje de alerta.
Estoy realizando un pequeño software de prestamos de expedientes.
El software tiene un formulario de USUARIOS, EXPEDIENTES, PRESTAMOS y DEVOLUCIONES.
En el formulario de PRESTAMOS, si el expediente esta prestado me arroja un mensaje que dice EXPEDIENTE PRESTADO.
Pero como un plus que me pidieron a ese mensaje, es si seria posible que en el mensaje se anexara el nombre del USUARIO y LA FECHA de quien tiene el expediente que fue prestado. Ejemplo EXPEDIENTE PRESTADO a JOSE LOPEZ PEREZ el día 07/10/2019.
Mis tablas con sus campos son:

USUARIOS
Nombre
Departamento
Puesto
Extension

EXPEDIENTES
Nombre del socio
Codigo de barras
Descripción
CAG

PRESTAMOS
Fecha de entrega (es la fecha en que hace entrega del expediente)
Fecha de retiro (es la fecha en que se lleva el expediente)
Usuario
Socio

Este es el código que tengo:

Donde NS es el nombre de mi cuadro combinado
que es en donde realizo la búsqueda del EXPEDIENTE (Que seria el nombre del socio).

Private Sub NS_BeforeUpdate(Cancel As Integer)
If DCount("[NS]", "PRESTAMOS", "[NS] = '" & Me.NS & "'") Then
MsgBox "EXPEDIENTE PRESTADO"
'este comando es para deshacer el registro en caso de que este prestado
Comando83_Click
Else
MsgBox "EXPEDIENTE DISPONIBLE"
'Con esto lleno las cajas de texto del formulario
Me.NOMBRE_DEL_SOCIO = Me.NS.Column(1)
Me.CODIGO_DE_BARRAS = Me.NS.Column(2)
Me.CAG = Me.NS.Column(3)
Me.DESCRIPCION = Me.NS.Column(4)
End If
End Sub

pitxiku
VIP
Reto02
Mensajes: 341
Registrado: Sab Sep 30, 2017 6:23 pm

Re: MENSAJE DE ALERTA

Mensajepor pitxiku » Mar Oct 08, 2019 10:08 am

Puedes usar varios DLookup para tomar los datos que precisas, de forma similar a como usas el DCount, y agregar los datos al mensaje.

O puedes crear un RecordSet para tomar todos los datos de 1 vez.

Juan Andrade
Nivel 1
Mensajes: 5
Registrado: Lun Oct 07, 2019 6:38 pm

Re: MENSAJE DE ALERTA

Mensajepor Juan Andrade » Mar Oct 08, 2019 4:12 pm

Hola buen día ya realice algo parecido nada mas que en vez de que me tome el nombre del usuario me toma la clave principal:
ejemplo EXPEDIENTE PRESTADO a 67 (en donde el 67 es el nombre de JOSE LOPEZ PEREZ) y me falta agregar lo de la fecha pero no me funciona este es el código:

'comparacion para socio repetido por nombre de socio
Private Sub NS_BeforeUpdate(Cancel As Integer)
If DCount("[NS]", "PRESTAMOS", "[NS] = '" & Me.NS & "'") Then
MsgBox "EXPEDIENTE PRESTADO" & " A " & DLookup("[USUARIO]", "PRESTAMOS", "[NS] ='" & Me.NS & "'")
'este comando es para deshacer el registro en caso de que este prestado
Comando83_Click
Else
MsgBox "EXPEDIENTE DISPONIBLE"
'Con esto lleno las cajas de texto del formulario
Me.NOMBRE_DEL_SOCIO = Me.NS.Column(1)
Me.CODIGO_DE_BARRAS = Me.NS.Column(2)
Me.CAG = Me.NS.Column(3)
Me.DESCRIPCION = Me.NS.Column(4)
End If
End Sub

pitxiku
VIP
Reto02
Mensajes: 341
Registrado: Sab Sep 30, 2017 6:23 pm

Re: MENSAJE DE ALERTA

Mensajepor pitxiku » Mié Oct 09, 2019 12:08 am

Entiendo que en la tabla Préstamos solo tienes el código del usuario. Una vez localizado el código, ya solo te queda buscar el nombre en la tabla de Usuarios.

Pero ya estamos con 3 DLookup más 1 DCount. Tal vez te convenga preparar una consulta con los 2 campos que quieres mostrar, y filtrándola por el campo NS. Si la consulta devuelve 1 registro, lanzas el mensaje. Más o menos, escrito de memoria, puede haber más de 1 fallo:

Código: Seleccionar todo

Private Sub NS_BeforeUpdate(Cancel As Integer)
Dim rst As Dao.Recordset

Set rst=CurrentDb.OpenRecordset("Select Usuarios.Nombre, Préstamos.Fecha From Préstamos Left Join Usuarios On Préstamos.Usuario = Usuarios.Usuario Where Préstamos.NS= '" & Me.NS & "'")

If rst.Recordcount <> 0 Then
MsgBox "EXPEDIENTE PRESTADO a" & rst!Nombre & " el día " & rst!Fecha
'este comando es para deshacer el registro en caso de que este prestado
Comando83_Click
Else
MsgBox "EXPEDIENTE DISPONIBLE"
'Con esto lleno las cajas de texto del formulario
Me.NOMBRE_DEL_SOCIO = Me.NS.Column(1)
Me.CODIGO_DE_BARRAS = Me.NS.Column(2)
Me.CAG = Me.NS.Column(3)
Me.DESCRIPCION = Me.NS.Column(4)
End If

Rst.Close
Set rst=Nothing
End Sub

Juan Andrade
Nivel 1
Mensajes: 5
Registrado: Lun Oct 07, 2019 6:38 pm

Re: MENSAJE DE ALERTA

Mensajepor Juan Andrade » Mié Oct 09, 2019 5:22 pm

pitxiku buen dia ya revise el código y me marca un error Aqui abajo adjunto las imagenes.
Imagen
Imagen
https://subefotos.com/ver/?c433bf222e2723cda02d28b39a6bc14eo.png
https://subefotos.com/ver/?b75996cc38584afdc3c9d8c82927046bo.png

No se mucho de programación ya que no soy programador pero me llama la atención esto, se me hace muy interesante apenas llevo como 6 meses en este rollo.
Según yo lo acople a los nombres que tengo de las tablas y sus campos, agradezco tu valioso tiempo, abajo adjunto el código y lo que esta en rojo es donde me sale el error.

Private Sub NS_BeforeUpdate(Cancel As Integer)
Dim rst As Dao.Recordset

AQUI ME MARCA EL ERROR
Set rst = CurrentDb.OpenRecordset("Select Prestamos.Usuario, Prestamos.Fecha_retiro From Prestamos Left Join Usuarios On Prestamos.Usuario = Usuarios.nombre Where Prestamos.NS= '" & Me.NS & "'")

If rst.RecordCount <> 0 Then
MsgBox "EXPEDIENTE PRESTADO a" & rst!Nombre & " el día " & rst!FECHA_RETIRO
'este comando es para deshacer el registro en caso de que este prestado
Comando83_Click
Else
MsgBox "EXPEDIENTE DISPONIBLE"
'Con esto lleno las cajas de texto del formulario
Me.NOMBRE_DEL_SOCIO = Me.NS.Column(1)
Me.CODIGO_DE_BARRAS = Me.NS.Column(2)
Me.CAG = Me.NS.Column(3)
Me.DESCRIPCION = Me.NS.Column(4)
End If

rst.Close
Set rst = Nothing
End Sub

pitxiku
VIP
Reto02
Mensajes: 341
Registrado: Sab Sep 30, 2017 6:23 pm

Re: MENSAJE DE ALERTA

Mensajepor pitxiku » Jue Oct 10, 2019 9:45 am

Crea/ajusta la consulta en el diseñador de consultas de Access. Una vez funcione, cambia a vista SQL y verás cómo la ha creado Access, y la podrás copiar y pegar en el código.

Juan Andrade
Nivel 1
Mensajes: 5
Registrado: Lun Oct 07, 2019 6:38 pm

Re: MENSAJE DE ALERTA

Mensajepor Juan Andrade » Jue Oct 10, 2019 11:33 pm

Si deja me pongo a investigar por que no se como se realizan las consultas como te comento apenas tengo poco tiempo (y no soy programador) con este rollo de la programación, o no se si me puedas pasar tu correo para mandarte el archivo y veas de forma mas detallada los formularios

pitxiku
VIP
Reto02
Mensajes: 341
Registrado: Sab Sep 30, 2017 6:23 pm

Re: MENSAJE DE ALERTA

Mensajepor pitxiku » Vie Oct 11, 2019 11:11 am

Para usar el diseñador de consultas de Access no hace falta ser programador. De hecho, solo hace falta saber programar (un poco) para usar el editor de VBA.

En cuanto a correos, 3 cosas:

1. Esto es un foro público, por lo que solucionar cosas de forma privada va en contra de su propia existencia.

2. Ya he tenido problemas en el pasado por dejar direcciones de correo. Hay gente que piensa que por que quieras ayudarles en un problema puntual, ya vas a querer ayudarles toda la vida.

3. Si tienes problemas con el desarrollo de una aplicación de Access,y no tienes tiempo y/o conocimientos, hay gente muy cualificada que se dedica profesionalmente a esto, y que te podrán ayudar muy gustosamente (a cambio de un importe previamente acordado). Y por si acaso alguien lo duda, yo no me dedico profesionalmente a esto de Access.

Juan Andrade
Nivel 1
Mensajes: 5
Registrado: Lun Oct 07, 2019 6:38 pm

Re: MENSAJE DE ALERTA

Mensajepor Juan Andrade » Vie Oct 11, 2019 3:47 pm

A ok muy bien, entonces cuando logre el código lo publicare aquí mismo para que no quede así nada mas, muy a amble por tu tiempo pitxiku.


Volver a “Código VBA”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados