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