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.
Código VB6:
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
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
Código C#:
using AhoraAsistentes; using AhoraCore; using AhoraOCX; using static AhoraCore.VBA.Interaction; namespace AhoraScriptsVacia { public class Script_20 : AhoraOCX.AhoraBaseScript { public void Main() { IAsistente lAsist = (IAsistente)gCn.AhoraProceso("DameAsistente", out _, gCn); lAsist.Text = "Indique la tarifa a aplicar"; lAsist.AddField("Descrip", "Descripcion", ETipoDato.String, null, true, false, true); lAsist.AddField("IdLista", "IdLista", ETipoDato.String, 67, false, true); Valor lLista = lAsist.Carga("Listas_Precios_Cli", "IdLista >= 0", "Descrip", "IdLista", null, 0, 0, gCn.Sesion.MainForm); if (lLista.ToString().Length > 0 ) { MsgBox(lLista); } else { MsgBox("No se ha seleccionado ninguna tarifa", VbMsgBoxStyle.vbExclamation, "Atención"); } } } }
Para más información sobre este método: https://ahora.freshdesk.com/a/solutions/articles/44001792458
¿Le ha sido útil este artículo?
¡Qué bien!
Gracias por sus comentarios
¡Sentimos mucho no haber sido de ayuda!
Gracias por sus comentarios
Sus comentarios se han enviado
Agradecemos su esfuerzo e intentaremos corregir el artículo