Prueba éstas líneas que te adjunto. Tendrás que sustituir los Nombres de Tabla, el Control "PagosPend" por el que tu tengas. PagosPend es el TextBox sobre el que haces el DobleClick
Declara en la cabecera del Módulo del Formulario, ... puede ser después del Option Explicit.
Dim Ctrl As Access.Control
En el Form_Load del Formulario >>
Private Sub Form_Load()
‘……….Las instrucciones que quiera
For Each Ctrl In Me.Controls
If Ctrl.ControlType = acTextBox And Ctrl.Name = "PagosPend" Then
Ctrl.OnDblClick = "=CuadroTextoDobleClick('" & Ctrl.Name & "')"
End If
Next Ctrl
End Sub
En ésta Función también tendrás que hacer las sustituciones, teniendo en cuenta que: "ClientesCuotas" es el Formulario que quieres abrir, IdCliente es el Campo de la Tabla por el cual sondeas, que en éste caso coincide con el Nombre del TextBox del Formulario.
Public Function CuadroTextoDobleClick(StrControl As String)
Dim StrSQL As String
Dim Rst As DAO.Recordset
'Si el Formulario está abierto lo cierro, antes de abrirlo
If CurrentProject.AllForms("ClientesCuotas").IsLoaded Then DoCmd.Close acForm, "ClientesCuotas"
'Antes de abrir el Formulario me aseguro el que tenga registros para evitar Errores
StrSQL = "SELECT * FROM ClientesCuotas WHERE IdCliente = " & Me.IdCliente & " ORDER BY FechaPago ASC"
Set Rst = CurrentDb.OpenRecordset(StrSQL, dbOpenDynaset)
If Not (Rst.EOF And Rst.BOF) Then 'Si el Recordset tiene Registros
'Abro el formulario ClientesCuotas como diálogo, pasándole como parámetro el Id del registro seleccionado
DoCmd.OpenForm FormName:="ClientesCuotas", WindowMode:=acWindowNormal, WhereCondition:="IdCliente = " & Me.IdCliente
Else 'Sino tiene Registros
MsgBox "No hay datos registrados" & vbCrLf & "La PRIMERA Cuota se da de ALTA en la Ficha de Asociados", vbInformation, "NINGUNA CUOTA PAGADA"
End If
Rst.Close
Set Rst = Nothing
End Function
Espero te sea de utilidad y si tienes dificultades me lo comentas: Jacinto