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 SubCon 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