Pasar el resultado de una consulta a una variable en vba acess
He tratado de buscar información sobre el tema indicado, sin embargo no logro hacer funcionar como quisiera. Quiero que cuando el usuario digite el código de un libro, el sistema antes de que haga cualquier cosa verifique si este CodLib aún esta prestado u si ya está disponible (devuelto). Si el código digitado se encuentra disponible, que continúe la rutina (lo demás funciona muy bien).
Lo que he hecho hasta el momento es esto:
Private Sub TexCodLib_AfterUpdate() Dim DisponL As Boolean Dim rst As Recordset Dim Client As String Dim miVariable Set rst = CurrentDb.OpenRecordset(miSQL, dbOpenDynaset) miVariable = rst("Carnet").Value DisponL = Nz(DLookup("Disponible", "02LIBROS", "[CodLib]='" & Me.CodLib & "'"), "") Client = "SELECT [06CLIENTES].Carnet, [06CLIENTES]![Nombres] & "" "" & [06CLIENTES]![Apellidos] AS CLIENTE FROM (06CLIENTES INNER JOIN (02LIBROS RIGHT JOIN 11VALES_PRÉSTAMO ON [02LIBROS].CodLib = [11VALES_PRÉSTAMO].CodLib) ON [06CLIENTES].Carnet = [11VALES_PRÉSTAMO].Carnet) LEFT JOIN 12DEVOLUCIONES ON [11VALES_PRÉSTAMO].ValeNo = [12DEVOLUCIONES].ValeNo GROUP BY [11VALES_PRÉSTAMO].ValeNo, [11VALES_PRÉSTAMO].CodLib, [02LIBROS].Libro, [06CLIENTES].Carnet, [06CLIENTES]![Nombres] & "" "" & [06CLIENTES]![Apellidos], [12DEVOLUCIONES].DescargoNo HAVING ((([11VALES_PRÉSTAMO].ValeNo)=IIf(IsNull([12DEVOLUCIONES]![DescargoNo]),[11VALES_PRÉSTAMO]![ValeNo],(0))) AND (([11VALES_PRÉSTAMO].CodLib)=[Formularios]![EJECUTAR PRÉSTAMO]![TexCodLib]));" If DisponL = False Then MsgBox "Los registros muestran que éste libro lo tiene prestado: '" & Client & "'", vbCritical, "ERROR, LIBRO NO DISPONIBLE" Else TxtCodLib = Nz(DLookup("Libro", "02LIBROS", "[CodLib]='" & Me.CodLib & "'"), "") Me.TxtLibro = TxtCodLib TexCodEq.Enabled = False TxtEquipo.Enabled = False End If End Sub
Con el DisponL quiero evaluar si el libro está disponible, es decir si en la tabla 02LIBROS.Disponible=False/True. Si es False entonces ¿Quién tiene el libro?, para ello ejecuto la consulta Client para que me diga el carnet y el nombre completo del individuo, para luego pasárselo al MsgBox.
1 Respuesta
Respuesta de Sveinbjorn El Rojo
2