Formulario Asistente de selección

Este formulario sirve para que un usuario pueda buscar un valor en una tabla de manera sencilla.

Consiste en configurar un formulario con un grid y un filtro, para que al hacer doble clic en el registro elegido, obtener el valor seleccionado.
Notas:
- Cuando un control de tipo combo tiene la propiedad "CaptionLink" activada, al pulsar F3, se lanza este formulario automáticamente con las columnas definidas en el control.
- También es llamado desde los campos de los grids al pulsar F3. Siempre que éstos tengan configuradas las propiedades del grid AsignaAsistente y AssistsFields (ver apartado de grid, asignación de asistente F3) que son las que determinarán el comportamiento de éste formulario.

Definición del método addField:
Public Sub AddField(ByVal aField As String, Optional ByVal aDescrip As String, Optional ByVal aType As String, _
Optional ByVal aSize As Variant, Optional ByVal aAutosize As Boolean = False, _
Optional ByVal aDataField As Boolean = False, Optional ByVal aSearchField As Boolean = False, Optional aFormat As String = "")
-- Tipos de datos: "String", "Numeric", "Boolean", "Date", ""
-- Formatos (los mismos que los campos grid): "Sin decimales", "Con 2 decimales", "Fecha corta", etc.

Definición del método de carga:
Public Function Carga(aSource As String, aWhere As String, aOrder As String, Optional aDataField As String, _
Optional aValue As Variant, Optional aWidth As Single, Optional aHeight As Single, _
Optional aPropietario As Object, _
Optional ByVal aLoad As Boolean = False, _
Optional aControlFoco As eAsistenteFoco = eFiltrarPor) As Variant


El último parametro es para que especifiques donde quieres el foco.
Public Enum eAsistenteFoco
eTexto = 1
eBotFiltrar
eFiltrarPor
eCoincidir
EGrid
End Enum

 Ver código ejemplo

Sub Main()


     frmAux.Descargar 'ATENCIÓN: DEBE ESTAR SIEMPRE QUE NO SE MUESTRE EL FORMULARIO.
 

     Dim lIdArticulo

     Dim lIdFamilia

     Dim lLista
 

     Set lAsist = gCn.ahoraProceso("DameAsistente",False,gCn) 

     With lAsist 

         .Caption="Indique la tarifa a aplicar"

         .AddField "Descrip", "Descripción", "String", , True, , True 

         .AddField "IdLista", "IdLista", "String", 1000, , True 

         lLista = .Carga("Listas_precios_Cli", " IdLista > = 0", "Descrip", "IdLista", lValue, , , gcn.sesion.MainForm )

     End With 

     If Len(lLista) > 0 Then

         MsgBox lLista

     Else

         MsgBox "no se ha seleccionado ninguna tarifa",vbExclamation,"Atención"

     End If


End Sub



Para más información sobre este método: https://ahora.freshdesk.com/a/solutions/articles/44001792458