Home
StartFrame Net Framework
Contents
1. Columnas no mapeadas En caso de necesitar agregar columnas a la grilla que no se correspondan con ninguna columna de la tabla deber realizarse lo siguiente En primer lugar deber modificarse el m todo que realiza la b squeda de registros de la capa de negocios que retorna los registros de la grilla para que retorne todas las columnas necesarias ya sea con un DA Sql Select como en el siguiente ejemplo o bien ejecutando un stored procedure Public Function getMiembros ByVal As String As DataSet _ Implements Consulta para buscar los datos necesarios Dim ds As DataSet Dim sSelect As String Dim sFrom As String Dim sWhere As String f ds DA Sql Select Common Env ConnectionString sSelect sFrom sWhere Renombra la tabla para poder hacer un Merge ds Tables 0 TableName wld miembros_grupo Return ds End Function Las columnas agregadas al datatable que no pertenezcan a la tabla a grabar deber n ser removidas del dataset antes de que el mismo sea grabado en el m todo ActualizarDatos Public Overloads Overrides Function ActualizarDatos _ ByRef paramDataSet As System Data DataSet As Boolean Dim tran As OleDbTransaction Nothing Try InicializarConeccion _cn Open tran cn BeginTransaction Elimina las columnas no mapeadas paramDataSet Tables wld miembros grupo Columns Remove nm operador Si se esta eliminando la cabecera primero se borran los detalles If N
2. 4 Existen varios eventos que podr n utilizarse en el caso de que desee realizar validaciones asignar valores por defecto a los controles completar datos antes de grabar etc En cualquier caso deber crearse un manejador para cada evento en cuesti n ver documentaci n de ayuda online para mayores detalles 5 si fuera necesario podr cear m s p ginas del tipo Web Content Form Para ello deber ingresar el siguiente c digo en el evento load de la p gina Cantidad de tabs a utilizar m ximo 8 Dim tp As Integer 8 Asigna los atributos del AbmBase masterpage TabsAdicionales tp Nombre de los tabs a utilizar masterpage lblTabs P gina 1 masterpage lblTabs1l P gina 2 masterpage lblTabs2 P gina 3 masterpage lblTabs3 P gina 4 masterpage lblTabs4 P gina 5 masterpage lblTabs5 P gina 6 masterpage lblTabs6 P gina 7 masterpage lblTabs7 P gina 8 Luego en el c digo HTML de la p gina se ingresar n porciones de c digo similares a lt asp Content ID Contentl ContentPlaceHolderID FormularioEdicion runat server gt lt asp Panel ID panelEdicion runat server gt lt asp Panel gt lt asp Content gt lt asp Content ID ContentA ContentPlaceHolderID FormularioEdicionl runat server gt lt asp Panel ID panelEdicionl runat server gt lt asp Panel gt lt asp Content gt lt asp Content ID Content9 ContentPlaceHolderID FormularioEdicio
3. TextBox Name MappingName HeaderText Common Display FieldToText im total Common Display FormatoMnemotecnicos CORTO Alignment HorizontalAlignment Center Width avgCharWidth 10 NullText 0 Format c formato num rico Minimo 0 Maximo 999999999 End With Add dg1l_im total 38 0 5 E a F Eh i 5 AR e StartFrame Net Framework Manual Programaci n J net Framework versi n 1 10 2013 End With End With Configuraci n de la grilla With TableStyles Add table gridTableStyle DataSource _dataSet Tables kld cuentas proveedores End With End Sub End Region Refrezco de Datos Para obtener los datos de la grilla y conseguir que se refrezquen con el movimiento entre registros deber agregarse en la capa de negocios el siguiente m todo sin olvidar declarar su interfaz como corresponde Tal vez sea necesario reemplazar el uso del m todo base Buscar por la ejecuci n de un DA Select Retorna los registros para la grilla de cuentas de proveedores Public Function getCuentas ByVal As String As DataSet Implements Return cuentas Buscar Hed cuenta 116 CuentalD 6 00 End Function En la capa de usuario deber llamarse al m todo anteriormente mencionado en el evento Display Al moverse entre registros Private Sub Proveedores Display Handles MyBase Display Borra los datos de las grillas _dataSet Tables kld cuentas proveedores
4. Clear Actualiza los datos de las grillas _dataSet Merge BroveedoresgetCuentas Me cd proveedor Text End Sub Tambi n deber llamarse al evento Display despu s de eliminar y al iniciar la edici n en las altas a efectos de que refresque la grilla Despu s de eliminar Private Sub Provesdores Eliminado ByVal ds As System Data DataSet Handles MyBase Eliminado Refrezca datos de la grilla Me Proveedores Display End Sub Al iniciar la edici n Private Sub Provesdores Editando ByRef cancela As Boolean _ Handles MyBase Editando Refrezca datos de la grilla If Me Estado Estados Alta Then Me Broveedores Display End If End Sub Adem s deber n completarse los campos de la tabla que no se muestran en la grilla y son generalmente los que vinculan la grilla con la tabla padre del abm 390 5 E a F Eh i 5 AR e StartFrame Net Framework Manual Programaci n J net Framework versi n 1 10 2013 Antes de grabar Private Sub Provesdores CompletarDatos ByRef ds As System Data DataSet _ Handles MyBase CompletarDatos Completa los campos ocultos de las grillas Dim row As DataRow For Each row In ds Tables kld cuentas proveedores Rows If row RowState lt gt DataRowState Deleted Then If IsDBNull row Item Then row Item Me Text TrimEnd End If End If Next End Sub Validaciones locales Pueden realizarse dos tipos de validaciones cuando ca
5. bEdit Asigna un valor al campo descriptivo y saltea la celda If grdMG_col ant nCol cd operador AndAlso Not IsNothing col_ cd _ operador LvRetorno Then tem grdMG_row_ant nCol_ nm operador rim Gu col cd operador LvRetorno End If Asigna un valor por defecto If grdMG col_ant nCol tp operador _ AndAlso IsDBNull wld_miembros grupo Item grdMG_row_ant nCol_po_pago Then tem grdMG_row_ant nCol po pago 100 End If Permite s lo valores num ricos entre 1 y 100 para po pago If grdMG_col_ ant nCol po pago Then I Item grdMG_row_ant nCol po pago gt Then Item grdMG_row_ant nCol po pago StartFrame US Display MsgBox Error de Validaci n StartFrame US Display MsgBoxTipos eq Ha End If End If Si cambi de fila verifica que pueda hacerlo sino retorna If grdMG_row_ant lt gt row _ AndAlso Not ValidaRow grdMG_row_ant Then CurrentCell New DataGridCell grdMG_row_ant grdMG_col_ant End If Catch ex As Exception Finally Guarda la fila y columna actual para saber de d nde ven a en el pr ximo ingreso grdMG_row_ant row grdMG_col_ant col End Try End Sub 410 5 E 9 F Ef i 5 AR e StartFrame Net Framework Manual Programaci n i versi n 1 10 2013 net Framework Otra alternativa para realizar las validaciones m s comunes en relaci n al ingreso de datos en las columnas que contengan el control DataGridLnkTextBoxFKColumn es utilizar el evento OnTextValidated propio
6. e tp tipo de e va valor 3er D gito Gui n bajo _ separando los mnemot cnicos del nombre del campo 4to D gito en adelante Nombre del campo en singular en min sculas y separando las palabras con guiones bajos Procedimientos Almacenados Los procedimientos almacenados respetan las siguientes reglas de nombres POSICI N DESCRIPCI N 1er D gito Indica el subsistema al que pertenece el procedimiento seg n se registr en la tabla wap_subsistemas por ej w para utilitarios 2do D gito Indica el tipo de programa asociado al mismo e a abm e c consulta e listado e p proceso e r rutina 3er D gito en adelante Nombre del procedimiento en min sculas y separando las palabras con guiones bajos generalmente y siempre que sea posible deber utilizarse el mismo nombre que el programa vinculado al procedimiento En caso de haber m s de un procedimiento relacionado al mismo programa deber utilizarse un nuevo gui n bajo y a continuaci n deber ingresarse alguna palabra que act e como diferenciador e identificador de la naturaleza del procedimiento Un ejemplo de un nombre de procedimiento almacenado v lido puede ser waoperadores_alta o wp_obtener_usuarios 120 StartFrame Net Framework Manual Programaci n net arameo versi n 1 10 2013 CONFECCIONES EST NDAR Una Nueva Soluci n StartFrame est dise ado como una herramienta para desarrollar nuevas soluciones Dado que el producto se instala
7. lt register gt lt register name SeekStrstr type StartFrame US SeekWindow US mapTo US CustomUI SeekWindowCustom US CustomUI gt lt constructor gt lt param name sOrigen type System String gt lt param name sPrewWhere type System String gt Solicitar proyecto de ejemplo a ITSouth 140 kaamee StartFrame Net Framework Manual Programaci n net Framework versi n 1 10 2013 lt constructor gt lt register gt lt register name ZoomNull type StartFrame US ZoomWindow US mapTo US CustomUI ZoomWindowCustom US CustomUI gt lt constructor gt lt register gt lt container gt lt unity gt lt configuration gt Como puede verse por cada entrada existen los siguientes atributos e name nombre que identifica la entrada opcional si tiene un nico constructor e type nombre de la clase y assembly original llamado desde el c digo e mapTo nombre de la clase y assembly el cual deber ejecutarse e constructor lista de par metros del constructor Los formularios de la interfaz de usuario que actualmente hacen uso de la t cnica de inyecci n de dependencia son e WPMain e Splash e Display ShowError e Locate e Search e Seek e Zoom e Display MsgBox e HelpOnLine e HelpOnLineField e SeleccionarDir e VistaPrevia Si desea modificar el aspectos de los formularios Abm AbmGrilla Listador etc lo que debe hacer es simplemente crear un nuevo form
8. StartFrame Net Framework Manual Programaci n met aran versi n 1 10 2013 Creaci n de Objetos Debido a la utilizaci n de la tecnolog a Remoting para la ejecuci n remota de objetos en entornos desktop deber n respetarse ciertas reglas para la creaci n de dichos objetos Dimensiona una variable del tipo Interfaz Private objOperadores As IOperadores Instancia el objeto a trav s de Remoting objOperadores CType RemotingHelper GetObject GetType IO0peradores IOperadores Lo anterior es aplicable nicamente cuando se utilizan objetos remotos entre capas Si se utilizan objetos locales dentro de la misma capa como es el caso del code behing en las aplicaciones Web podr usarse la sintaxis com n de Net Ahora bien si se instancian objetos de BR desde US desktop cabe destacar que el operador con el cual lo instancia es el operador del sistema ServerUsr ya que la capa servidora usando remoting es totalmente ciega en lo que respecta al llamador se limita a responder un llamado sin saber a qui n Luego valida la seguridad con el operador actualmente logueado Ink_NombreOperador propiedad de StartFrame BR ClaseBase Esta inteligencia la realizan operaciones en conjunto entre las clases base de US desktop o web y BR Por ende si se requiere instanciar un objeto de BR desde el mismo BR el programador deber tomar las precauciones necesarias para identificarse correctamente Esto podr a hacerse p
9. podr utilizarse para ello el evento Clase_Display Tener en cuenta que hay que crear un m todo en la capa BR para que retorne todos los registros de la grilla en base a una determinada condici n la cual lo vincula con la tabla de cabecera Private Sub UnidadesMonetarias Display Handles MyBase Display Borra los datos de la grilla y actualiza sus datos _dataSet Tables Clear _dataSet Merge End Sub 15 Para trapear errores y mostrarlos en un formato m s amigable para el usuario utilizar el siguiente evento Se aclara que los errores por excepciones vienen en formato de string en tanto que los dem s vienen informados en el dataset Intercepta los errores Private Sub Paises MostrarErrores ByVal ds As System Data DataSet ByVal textoErrores As String ByRef cancela As Boolean Handles MyBase MostrarErrores Dim valRet As String Texto a mostar Dim findError As Boolean True Indica si se trapearon todos los errores Try If ds HasErrors Then Busca errores recorriendo el dataset Dim t As Integer Table Dim r As Integer Row Dim c As Integer Col Dim tabError As DataTable Tabla con el error Dim colErrors As DataColumn Columnas con errores Dim textError As String Texto con el error original Recorre Cada tabla registro y columna del dataset For t 0 To ds Tables Count 1 tabError ds Tables t For r 0 To tabError Rows Count 1 colErrors tabError Rows r GetColumnsIn
10. 1 10 2013 Namespace Public Class Inherits StartFrame US Listados Dim _Rubros As IRubros End Class End Namespace Namespace de la clase Nombre de la clase Herencia 4 Modificar el Text del t tulo del formulario B Pegar los controles de pantalla utilizando la clase StartFrame LnkControls No es necesario colocar etiquetas de t tulo para los rangos ya que no son necesarias en modo dise o 6 Agregar los reportes a la colecci n y vincular los rangos para cada reporte modificando el OnLoadForm del formulario agregando el siguiente c digo y modificando los valores resaltados Tener en cuenta que estas instrucciones son case sensitive El orden de los rangos debe ser el mismo aplicado en el stored procedure Private Sub Auditoria OnLoadForm ByRef reportCollection As Reports Handles MyBase OnLoadForm Try Crea los rangos Dim rpt As Report Dim As New Rango 1 i Ma Dim As New Rango r r Crea los reportes rpt New Report rpt Rangos Add rpt Rangos Add reportCollection Add rpt Catch ex As Exception StartFrame Us Display ShowError ex message End Try End Sub Vincular el formulario de US a la clase de BR modificando el OnLoadForm del formulario agregando el siguiente c digo y modificando los valores resaltados Ejemplo Private Sub Auditoria OnLoadForm ByRef reportCollection As Reports Handles _ MyBase OnLoadForm Try Agrega los reportes D
11. BR deber vincularse el di logo a alg n componente de la capa BR a fin de poder controlar la seguridad Private Sub GeneracionFacturas Load ByVal sender As Object ByVal e As _ System EventArgs Handles MyBase Load Try Moena CType RemotingHelper getObject GetType Igenfact Igenfact Me ObjetoReglasNegocio Para poder utilizar BR Abm _tablaPrincipal getTablaPrincipal _dataSet getDataSet Catch ex As Exception StartFrame Us Display ShowError ex message End Try End Sub 16 A e E Ver tutorial para una ilustraci n paso a paso de las tareas a realizar 17 T are 8 a Las que figuran con la vi eta en video inverso son obligatorias 540 StartFrame Net Framework Manual Programaci n met aran versi n 1 10 2013 5 Entrada en config esto ser necesario nicamente si el programa utiliza alg n nuevo componente de negocios g Aspecto visual Deber n realizarse todas aquellas tareas que tengan que ver con el aspecto visual del programa y acceso al programa a saber a Eliminar las p ginas sobrantes ejecutando en el evento Load el m todo RemovePage Siempre deber n eliminarse las p ginas intermedias nunca la primera ni ltima p gina comenzando desde la pen ltima b Cambiar las etiquetas de las p ginas que quedaron los labels de las p ginas de inicio fin e intermedias c Agregar una entrada en el men Evento CambioPagina Utilizar este evento para poner el c
12. Esta clase nos dar un marco para colocar una serie de controles y una zona para ubicar la botonera Cada acci n en la p gina har que se ejecute el controlador asociado a la misma 560 StartFrame Net Framework Manual Programaci n net PARAE OLIA versi n 1 10 2013 anchor 100 flex 1 Buttons text handler function Ext getCmp FrmImportacion getForm submit success function form action Ext Msg alert La importaci n se complet con xito Ext getCmp tafLog setValue b failure function form action Ext getCmp tafLog setValue action result message y H 2 Crear un nuevo manejador o controlador WebSite Handlers que recibir todos los eventos acciones que se produzcan en la vista al realizar submit del formulario Indicar el espacio de nombres en el cual se organiza un nombre nico para la clase e instanciar por un lado el objeto de negocios y por el otro la p gina web con la vista que contiene el formulario N tese el m todo p blico cuyo nombre coincide con la acci n asociada al submit del form en la vista antes definida Tambi n se destaca que la l gica principal no est en el manejador en cuesti n sino en el objeto de negocios asociado ver m todo Importar Namespace Handlers Mantenimiento Procesos Public Class Importacion Inherits baseHandler Constructor Public Sub New
13. Integer cel ColumnNumber Dim row As Integer cel RowNumber Try Columnas de la grilla Dim nCol_cd operador As Integer Dim nCol_nm operador As Integer Io Ro Valida el c digo del operador y carga su nombre If dgl tp operador Textbox Text supervisor Then dgl_cd_operador LvWhere st _supervisor 1 End If Catch ex As Exception End Try End Sub 420 5 E A F Ef fa 5 AA e StartFrame Net Framework Manual Programaci n versi n 1 10 2013 net Framework Validaciones especiales Existen algunas validaciones que si bien son aplicables a cualquier tabla son muy t picas de las grillas por ello se describen en este cap tulo Para validar que no se puedan insertar o eliminar registros en una grilla deber realizarse la validaci n en las reglas de negocios dentro del evento Validando de la clase que maneja la grilla Private Sub _grupoAccesos_Validando ByRef cancela As Boolean ByRef paramDataTable _ As System Data DataTable Handles MyBase Validando No deben eliminarse registros en esta grilla If Not paramDataTable GetChanges DataRowState Deleted Is Nothing Then cancela True Throw New Exception No se pueden eliminar registros en la grilla de accesos End If No deben insertarse registros en esta grilla If Not paramDataTable GetChanges DataRowState Added Is Nothing Then cancela True Throw New Exception No se pueden insertar registros en la grilla de accesos End If End Sub
14. es la pantalla de edici n de datos En este caso contiene nicamente dos controles del tipo textfield con algunas propiedades que definen su nombre la etiqueta con la que se muestra la longitud del campo y la obligatoriedad del mismo Por ltimo se definen las columnas que aparecer n en la grilla que se utiliza para consultar los datos Ext define Rubros extend ABMBase Title R Model Model 3 defaultPropertySort descripcion WindowPanel xtype textfield fieldLabel name maxLength isPrimaryKey true enforceMaxLength true allowBlank false ht xtype textfield fieldLabel name maxLength f enforceMaxLength true allowBlank false Hl Columns text dataIndex filter true text dataIndex filter true H 4 La clase ABMbase antes mencionada nos brindara algunos eventos para un mejor manejo de los datos o para agregarle funcionalidad al ABM que estemos creando a saber e OnNew Se dispara al apretar el boton de Agregar Como par metro recibe un objeto que tiene una propiedad record que hace referencia al registro creado al apretar el bot n e OnEdit Se dispara al empezar a Editar un registro tanto apretando el bot n como haciendo doble clic sobre el registro de la grilla Como par metro recibe un objeto que tiene una propiedad record que hace referencia al registro seleccionado e BeforeSave Se dispara antes de enviar los datos al
15. especifica el procedimiento para cualquiera de las arquitecturas Windows Desktop Un Proceso es el tipo de programa que m s variedad de formatos puede llegar a tener Por ello hay que estudiar previamente la funcionalidad deseada para el proceso y determinar si se desea realizar un proceso tipo batch un di logo con el usuario o un Wizard Dependiendo de la elecci n anterior cambiar la clase base de la cual hay que heredar e Dialogo Esta clase deber usarse para funcionalidades que tengan como obtetivo dialogar con el usuario y realizar alg n proceso de relativamente corto tiempo de ejecuci n liviano Un ejemplo de este tipo de programas puede ser un logueo con cambio de password e Wizard Es el caso de los procesos que son relativamente pesados en cuanto a su ejecuci n y que requieren una cierta comunicaci n con el usuario un poco m s compleja o interactiva Esta es la opci n m s recomendable por lo amigable de su funcionalidad Un ejemplo de este tipo de programas puede ser una generaci n masiva de facturas en base a ciertos datos de abonos o pedidos de facturaci n e Proceso Deber usarse para ejecutar procesos batch pesados sino deber a usarse la clase Dialogo los cuales tengan poca o nula comunicaci n con el usuario sino deber a usarse la clase Wizard Podr a decirse que debe utilizarse esta clase cuando no sean apropiadas ninguna de las anteriores 510 5 E S F Eh i a AA e StartFrame Net Framework Manual
16. gt lt asp TableHeaderCel1 gt lt asp TableCel1 gt lt asp TextBox ID va minimo runat server gt lt asp TextBox gt lt ccl CalendarExtender ID CalendarExtenderl runat server TargetControlID va_ minimo Format dd MM yyyy PopupButtonID images Calendar_scheduleHS png Enabled false gt lt ccl1 CalendarExtender gt lt asp TableCel1 gt lt asp TableRow gt lt Combobox gt lt asp TableRow gt lt asp TableHeaderCel1 gt lt asp Label ID Label1l class label runat server Text Nombre gt lt asp Label gt lt asp TableHeaderCel1 gt lt asp TableCel1 gt lt asp DropDownList id nm_ campo runat server class dropdownlist gt lt asp DropDownList gt lt asp TableCell gt lt asp TableRow gt lt l Radio button gt lt asp TableRow gt lt asp TableHeaderCel1 gt lt asp Label ID Label2 class label runat server Text Filtro gt lt asp Label gt lt asp TableHeaderCel1 gt lt asp TableCel1 gt lt asp RadioButtonList ID tp filtro runat server gt lt asp ListItem Selected True Value U Text Unico gt lt asp ListlItem gt lt asp ListItem Value D Text Desde Hasta gt lt asp Listltem gt 320 E E a F Eh fi E AR a StartFrame Net Framework Manual Programaci n 4 J net Framework versi n 1 10 2013 lt asp RadioButtonList gt lt fasp TableCell gt lt asp TableRow gt lt asp Table gt lt asp Panel gt lt asp Content gt
17. la manera de realizar las distintas operaciones entre ellas las validaciones m s comunes que pueden especificarse para un Abm Cada ejemplo mostrado no es la nica forma de hacerlas pero es una forma v lida y sin errores que es recomendable adoptar como est ndar Casi cualquier porci n de c digo utilizada en esta secci n puede ser creada mediante el uso de los code snippets incluidos en StartFrame Dato sin duplicados Para esto es necesario crear en el motor de datos una restricci n no un ndice del tipo Unique Dato obligatorio Este control se realiza generalmente en el motor de datos seteando la propiedad Null Not Null del campo correspondiente En la interfaz Web adem s de la validaci n en BR siempre es recomendable validar lo mismo del lado del cliente para lograr una interfaz m s interactiva y eficiente Integridad referencial Configurar esta validaci n en el motor de base de datos en la tabla correspondiente A no ser que se indique lo contrario siempre es aconsejable adoptar el criterio de actualizaci n en cascada independientemente del criterio adoptado para la eliminaci n Tener en cuenta que por razones internas del motor hay ocasiones en que no se permite establecer un criterio de actualizaci n o eliminaci n en cascada En tal caso deber realizarse la validaci n o eliminaci n seg n corresponda dentro de las reglas de negocio Dato predeterminado al grabar Desde el dise o de la tabl
18. para realizar una anotaci n apropiada sobre el tema Bajo ning n concepto deber n ingresarse datos basura para las pruebas siempre deber n utilizarse datos reales o al menos potencialmente reales Manejo y Control de Errores El siguiente es un c digo est ndar que representa una captura de error t pica capa US desktop donde atrapa el error y lo muestra en una forma est ndar Try Trata de abrir la conexi n ob3Sql1Command Connection objSqlConnection objSqlConnection 0Open Catch objException As Exception Muestra el error Display ShowError objException Finally Cierra la conexi n si est abierta If objSqlConnection State ConnectionState Open Then objSqlConnection Close End If End Try El siguiente es un c digo est ndar que representa una captura de error t pica capa BR donde graba un log en el eventlog de la aplicaci n tanto en la base de datos como en el visor de sucesos y luego propaga el error para que un componente de la capa US lo intercepte e informe al usuario Trey Trata de abrir la conexi n objSqlCommand Connection objSqlConnection objSqlConnection Open Catch objException As Exception Captura el error Env LogError PROCESO TERMINAL OPERADOR COD ERROR objException Message Throw objException Finally Cierra la conexi n si est abierta If objSqlConnection State ConnectionState Open Then objSqlConnection Close End If End Try 40
19. siguiente documentaci n enumera sint ticamente los pasos a seguir para la confecci n de un ABM est ndar El objetivo de la misma es lograr una estandarizaci n total en la programaci n de todo el sistema de forma tal que sea imperceptible el paso de varios programadores diferentes facilitar el mantenimiento y minimizar la posibilidad de errores Es conveniente comenzar por las capas inferiores las que est n m s cerca de los datos y luego ir subiendo de nivel Por ello la confecci n de un abm se divide en dos partes las cuales se detallan a continuaci n Se aclara que la siguiente es s lo una gu a de los pasos a realizar pero no es la nica manera de realizarlos ni necesariamente el orden requerido Cuando el programador tome experiencia con StartFrame l mismo podr optar por la manera m s c moda en que le resulte realizar estas tareas Las partes grisadas de los ejemplos de c digo est n a modo de referencia para indicar la ubicaci n del c digo relacionado al tem de referencia Las partes resaltadas indican que deber reemplazarse el contenido por el apropiado en cada caso En el caso de las validaciones estas partes est n s lo a modo de ejemplo ya que no se puede especificar una validaci n gen rica Por razones de espacio y claridad algunas l neas de c digo debieron ser tipeadas en varios renglones Casi cualquier porci n de c digo utilizada en esta secci n puede ser creada mediante el uso de los code s
20. y las siguientes propiedades e Id N mero nico que identifica al nodo e Text Nombre de la funcionalidad del men que mostrar el treeview e Description Texto de ayuda del men que aparecer cuando seleccione la opci n e Leaf Indica si el nodo del men es final o bien posee hijos children 190 5 E a F Ef fa 5 AA e StartFrame Net Framework Manual Programaci n net Framework versi n 1 10 2013 e Url apunta al handler archivo ashx a cargar para el dibujo de la p gina en runtime Programa indica el objeto de reglas del negocio contra el cual se validar la seguridad del acceso l id 23 text Administraci n description Administraci n del sistema children id 24 text Seguridad description M dulo de Seguridad del Sitio children l id 27 text Configuraci n de Usuarios description Modificaciones de usuarios leaf true url Handlers Mantenimiento Administracion Seguridad ConfUsuarios ashx programa XRUSUARIO Fr id 28 text Herramientas description M dulo de Utilitarios del Formularis sistema children id 30 text Par metros de Sistema description los Par metro de Sistema leaf true url Handlers Mantenimiento Administracion Herramientas ConfigPar ashx programa XRCONFIGPAR Configuraci n de 200 StartFrame Net Framework Manual Programaci n met aran versi n 1 10 2013 Abms La
21. E E E A E T E E E 9 Etiquetas del Archivo de Recurso ais iii ada 10 ELEMENTOS DELMOTOR DEB ui iio a ds 11 UNAINUEVA SOLUCI N cosrcoranatiaa ado ndestcd doo orita lic tdi eane ETE aia 13 Cambios del Aspecto Visual asi A iaa 13 Personalizaci n dela Interfaz Windows Desktop cesaron ia 14 MENUES suas da iaa ect 16 Interfaz WINdOWS DESKtOPex cia Sd A AAA dai 16 Agregado de UNNE Modo lO iS a ein 16 Edici n del MEU susana ARENA 16 Interfaz WED ASP trad OE EA EA a a AEA 19 Edici n del Me pi A A RR 19 Interaz Web IS AAA AAA A A AA AA 19 Edici n del Mes aaa 19 Parte Il Clase US interfaz Windows De es aa ol ed A O O A A O O OE teraz WebSite Grillas interfaz Windows Desktop Grea E Refrezco de DORA ei StrFSRNS StartFrame Net Framework Manual Programaci n net Framework versi n 1 10 2013 Validaciones doc Psic AAA A A AAA A Validaciones AP o a A O OA Columnas no mapeadas Validaciones ESTANDAR sinisi aire RaRa EEE AER AE E REE DARE UE iA EENAA AEAEE AIR Dato sinduplicidOs E AE E E dto less 46 A E A A E E A ER 46 integridad referential micras ranr E REN T EENEN 46 Dat predeterminado algera iran AA AA ARAS 46 Registro Iborra iia ia a n FK contra otra tabla Rango de valores aceptables Datos pordelect O esseri AA a a A E TE Camposd ltipoidentitV nennen n N RE N N E Controles delltipo filtro ocu aE E AE EAE E EE EEEE AE E EEEE Controles del tipo localizadores cimil a il 49 AA O OT 50 In
22. Error For c 0 To colErrors GetUpperBound 0 Error a trapear textError tabError Rows r GetColumnError colErrors r ColumnName Trapeo de errores If tabError TableName wad provincias _ And colErrors c ColumnName cd provincia _ And textError Like valor ingresado ya existe Then valRet amp Grilla Provincias Est intentando ingresar informaci n duplicada vbCrLf ElseIf tabError TableName wad provincias _ And colErrors c ColumnName nm provincia _ And textError Like nombre incompleto Then valRet amp Grilla Provincias Debe ingresar el nombre de la provincia vbCrLf Else Alg n error no fue trapeado findError False End If Next Next Next 290 StartFrame Net Framework Manual Programaci n net aran versi n 1 10 2013 Else Busca los errores por excepciones If textoErrores Like valor ingresado ya existe Then valRet amp Grilla Provincias Est intentando ingresar informaci n duplicada vbCrLf Elself textoErrores Like nombre incompleto Then valRet Grilla Provincias Debe ingresar el nombre de la provincia 8 vbCrLf Else Alg n error no fue trapeado findError False End If End If Verifica si encontr errores If findError Then Cancela el display de errores en la clase base cancela True Muestra los errores StartFrame US Display MsgBox valRet Errores detectados StartFrame US Display MsgBoxTipos msgError End If Catc
23. GLP Abms Public Class Impo Inherits Abm Constructor Sub New MyBase New Operador Password XRImpo App articulo MyBase 1lnk_nombreOperador Common Env Operador Graba tracking Me 1lnk_Tracking True End Sub Proceso de importaci n de un archivo CSV en una tabla de SQL Public Function Importar FileContent As String Tabla As String As ResultSet Dim ds As New DataSet Dim dt As DataTable DA Sql GetSchema Common Env ConnectionString Tabla Dim sr As New 10 StringReader FileContent Dim strLine As String sr ReadLine Return New ResultSet With success True End Function End Class End Namespace 580 5 E S F Ef fa 5 AA e StartFrame Net Framework Manual Programaci n net Framework versi n 1 10 2013 Listados Los listados tienen diferente formato dependiendo de la arquitectura no es lo mismo un reporte Windows que una consulta por Web y del tipo de reporte informe diario resumen gr fico formulario documento etc Cualquiera sea el caso a continuaci n se describe un procedimiento est ndar para su creaci n Interfaz Windows Desktop A continuaci n se especifica el procedimiento para cualquiera de las arquitecturas Windows Desktop z Las 20 s La siguiente documentaci n enumera sint ticamente los pasos a seguir para la confecci n de un listado completo formulario listador y reporte est ndar Las partes grisadas de los ejemplos de c digo est n a modo de refe
24. No escribir grandes bloques de c digo ya que es muy dif cil realizar el seguimiento Deber n utilizarse subrutinas para separar dicho c digo Es conveniente que las subrutinas no dependan de variables u otros elementos que sean externos a la misma para que pueda ser reutilizada Estas subrutinas deben ser m todos privados o p blicos dentro de la clase que se est utilizando IM Es conveniente declarar expl citamente todas las variables al comienzo de cada bloque de c digo En dicha declaraci n se indicar la finalidad de uso de la variable Siempre debe tratar de utilizarse el menor alcance scope posible para todas las variables evitando al m ximo el uso de variables globales M En lo posible no superar el ancho m ximo de la pantalla con un comando Usar el separador de l neas para seguir en el rengl n siguiente y adentrado ssQL Select C IdCliente C Nombre C Calle C Numero amp _ C Localidad TdProvinc E _ Erom VACliente e _ Where C IdCliente 12300015 M Todo programa realizado reci n se considera terminado cuando est probado ver Error No se ncuentra el origen de la referencia y documentado en el diccionario de datos en l nea del sistema M Deben respetarse al 100 las convenciones de nombres ver m s adelante adoptadas para variables formularios tablas campos procedimientos almacenados reportes etc W Nunca dejar una condici n sin su correspondiente alternativa d
25. Programaci n H J net Framework versi n 1 10 2013 Di logos Para el uso de esta clase se har menci n nicamente a la parte correspondiente a la capa de usuario Windows Desktop ya que puede utilizar cualquier componente de negocios con el cual el di logo podr a enlazarse z 14 En l neas generales puede decirse que deber n realizarse los mismos pasos mencionados para Abms e z gt 15 con algunas salvedades las cuales se detallan a continuaci n Los ejemplos dados a continuaci n har n referencia al enlace del di logo con un componente de negocios del tipo Abm que es el uso m s complejo que puede d rsele a esta clase 1 Agregar la interfaz puede que no se requiera una nueva interfaz ya que el di logo suele utilizar un componente de negocios ya existente 2 Agregar el formulario en este caso heredado de StartFrame US Dialogo E Declaraci n de la clase var a dependiendo del tipo de uso que se le quiera dar Imports StartFrame BR Interfaces Procedencia de las referencias utilizadas Namespace Namespace de la clase Public Class Nombre de la clase Inherits Herencia Dim As Componente de negocios Para poder utilizar BR Abm Protected dataset As DataSet Protected _tablaPrincipal As String Windows form designer generated code End Class End Namespace 4 Vinculaci n a BR deber vincularse el di logo a alg n componente de la capa BR a fin de poder control
26. STARTFRAME NET FRAMEWORK Manual Programaci n El objetivo de este manual es definir una serie de criterios que sirvan de base para un arquitecto analista o programador que desee utilizar el producto Podr encontrar dentro de este manual una serie de convenciones adoptadas gu as paso a paso para utilizar el producto mejores pr cticas entre otros aspectos igualmente importantes Se destaca que el lector de este manual debe tener un perfil de programador Net iTSouth amp CDT Consultores Versi n liberada el 01 10 2013 StrFSRNS StartFrame Net Framework Manual Programaci n net Framework versi n 1 10 2013 STARTFRAME NET FRAMEWORK Manual Programaci n NDICE GENERAL NDICE GENERAL cooncnccccocccnnonnononononnnonccnonancononanonocnnc ano nono nno nana noc rne nao nana narnia nn anne noo r enana naa rn crac anar ana anar ne 1 CONVENCIONES DE DESARROLLO ioosci soni niniconocoononcindncondnnna cionado rre aosan ieaie ieia 3 MANEJO Y CONTROL DE ERRORES cos recalca 4 CREACI N DE OBJETOS cccccccoccorononanononos TECLAS DE CORTE SHORTCUTS CONVENCIONES DE NOMBRES cccoociocciccc naccoosioncsnnccdcono ESEESE OA AENEAN RNE CIAO OENE RR Dni EEREN 7 ELEMENTOS DELLA APLICACI N srci ssie namas anas ukata rae an EAE ESE NEEE ai AS EECa cm dae Res ci 7 Variables de Memoria star AEE AEVO A TI EEEE EA 7 ODO ad E A EE EE T E E E 8 Formularios Y PAGINAS sissisotaan daria 8 A T
27. Suele utilizarse la misma imagen de App_logo pero con diferente tama o BACKGROUND_IMAGEN 700 500 Imagen de fondo de cada m dulo Se recomienda utilizar un fondo blanco en una imagen muy tenue marca de agua y con bordes difusos MENU_LOGO 220 57 Imagen del selector de m dulos Windows Desktop con fondo met lico verde APP_SPLASH 455 350 Imagen de fondo de la pantalla de Spash y el Acerca de MENU _ 48 48 conos del selector de m dulos Corresponde a las im genes referenciadas en el archivo MenuModulos xml 2 z Referirse al Tutorial que demuestra los pasos necesarios para realizar esta tarea de creaci n de una nueva soluci n o bien al Manual T cnico para detalles espec ficos 130 StartFrame Net Framework Manual Programaci n met arnes versi n 1 10 2013 116_ 16 16 conos de cada opci n de cada men de m dulo Corresponde a las im genes referenciadas en los archivos de men es Otro aspecto que deber a modificar en cada soluci n creada son los valores de los siguientes par metros tabla wap_parametros VA_PARAMETRO DESCRIPCI N EMPRESA Nombre de la empresa a nombre de la cual se emite la licencia Este par metro no puede editarse directamente desde el abm Debe grabarse encriptado APPNAME Nombre de la aplicaci n el cual figura en el Splash y el About VERSION Nombre de la versi n de la aplicaci n el cual figura en el Splash y el About Personalizaci n de la Interfaz Windows Desk
28. Tambi n determina el control de seguridad de acceso al tem si no existe la etiqueta Seguridad Public Shared Function OnlItemSelected ByVal item As String ByVal tipoLllamado As TipoLlamado As Boolean Select Case item ToUpper Substring 0 5 Case ID001 Ejecuta un proceso externo Dim curPath As String CurDir Dim pathnameBcos As String Dim ProcID As Integer Try Pathname Common Env GetConfigValue pathProcZ amp Common Env GetConfigValue exeProcZ If Not I0 File Exists pathnameBcos Then MsgBox No se encuentra instalado el proceso en esta PC MsgBoxStyle 0OkO0nl y Else If MsgBox Confirma la ejecuci n MsgBoxStyle YesNo Confirmaci n MsgBoxResult Yes Then ProcID Shell pathnameBcos AppWinsStyle NormalFocus ChDir curPath End If End If Catch ex As Exception MsgBox Se produjo un error al ejecutar el proceso 6 _ ex Message MsgBoxStyle OkOnly End Try Impide que se ejecute la opci n desde el men Return True Case Else Llamado est ndar desde el men Return False End Select End Function e Seguridad Esta etiqueta opcional permite establecer un ID de programa correspondiente a wad_programas nm_programa que determinar el nivel de acceso a la presente opci n En caso de no informarse la seguridad quedar establecida por la clase que ejecuta wad_programas nm_clase la cual ser identificada por el atributo d 170 StartFrame Net Framework Manual Programa
29. _Abm New StartFrame BR Web _Pagina UserPages Mantenimiento ajs End Sub Proceso de importaci n del archivo Public Sub ImportarArchivo Dim rs As ResultSet If _Context Request Files Count gt Then Si seleccion un archivo Try Importaci n Dim body As System IO Stream _Context Request Files 0 InputStream Dim encoding As System Text Encoding _Context Request ContentEncoding Dim reader As System IO StreamReader New System IO StreamReader body _ encoding Ejecuta un proceso en BR rs CType _Abm Impo Importar reader ReadToEnd _ _RequestData tableName Catch ex As Exception rs New ResultSet rs success False rs message ex Message End Try Else Sin archivo para importar rs New ResultSet rs success False rs message No se seleccion ning n archivo 570 5 E A F Ef f 5 AA e StartFrame Net Framework Manual Programaci n J net Framework versi n 1 10 2013 End If Retorna el texto con el resultado _Context Response Write rs ToJsonString End Sub End Class End Namespace E Deber crear una clase de negocios como ya se explic en la parte de BR para abms Esta clase referenciada desde el manejador podr contener toda la l gica del negocio a ejecutar desde la p gina web ya que no es aconsejable poner l gica de negocios en el manejador el cual deber a ser un simple conector entre la vista el modelo y el objeto de negocios Namespace
30. a Realizar la declaraci n de la clase y asegurarse de apuntar a la tabla o vista origen de la consulta a realizar Imports Common Env Imports StartFrame DA Sql Public Class Nombre de la clase Inherits Herencia Sub New Modificar nombre de programa y tabla principal relacionada a la clase MyBase New Operador Password wad operadores End Sub End Class 2 Crear un stored procedure con el origen de datos Tener en cuenta que se deben colocar como par metros del SP los rangos a utilizar como filtros en la p gina web E Utilizando la misma aplicaci n web como interfaz dar de alta los filtros a utilizar en la consulta por medio del abm correspondiente Registrar correctamente las propiedades de cada filtro tipo de dato longitud valor por defecto y las validaciones pertinentes 4 Utilizando la misma aplicaci n web como interfaz dar de alta los reportes a ejecutar en la p gina por medio del abm correspondiente Tener presente que pueden ejecutarse m ltiples reportes por cada p gina cada reportes apunta a un stored procedure que le da origen Tambi n deber n asociarse los filtros antes mencionados g Crear una nueva p gina del tipo Web Content Form dentro del proyecto WebSite en la carpeta UserPages En el evento load de la p gina deber ponerse c digo para relacionar a la misma con el objeto de negocios correspondiente y vincularla con una instancia de ReporteBase Partial Public Cla
31. a en el motor de datos ingresar los valores predeterminados para cada campo En la interfaz Windows desktop si el campo no figura en el formulario o el valor por defecto sea de c lculo condicionado a otros campos la validaci n debe realizarse colocando c digo en el evento CompletarDatos Otra posibilidad es agregar un Textbox invisible y asignarle su valor en el evento Actualizando Private Sub Operadores CompletarDatos ByRef ds As System Data DataSet Handles MyBase CompletarDatos Completa el dato va_clave acceso cd operador en el caso de un alta If Me Estado Estados Alta Then Dim row As DataRow For Each row In ds Tables Waa operadores Rows If row RowState lt gt DataRowState Deleted Then row Item Pwalclavelaceeso End If Next End If 460 StartFrame Net Framework Manual Programaci n versi n 1 10 2013 net Framework End Sub En la interfaz web lo m s aconsejable es resolver esto en la parte de reglas del negocio utilizando los eventos Insertado o Modificado donde se cuenta con un par metro que permite consultar el valor del registro afectado antes y despu s de la actualizaci n Private Sub Modificado ByRef row As System Data DataRow Handles Me Modificado a End Sub Registro inborrable La validaci n debe realizarse colocando c digo en el evento Eliminando BeforeDelete en el caso de la interfaz JSWeb A modo de ejemplo en el caso de la
32. a tabla principal MyBase ActualizarDatos paramDataSet lnk cn tran Actualiza tabla detalle ActualizarDatos paramDataSet 1nk cn tran Else Elimina registros Actualiza tabla detalle ActualizarDatos paramDataSet 1nk cn tran Actualiza tabla principal MyBase ActualizarDatos paramDataSet lnk cn tran End If Confirma o anula la transacci n If paramDataSet HasErrors Then tran Rollback Else 240 5 E S F Ef i 5 AR e StartFrame Net Framework Manual Programaci n net Framework versi n 1 10 2013 tran Commit End If Catch e As Exception tran Rollback Throw New Exception e Message e Finally Cierra la transacci n y la conexi n tran Nothing 1nk_cn Close Ink cn Nothing End Try End Function 9 Para retornar los registros de la grilla a la capa US deber crearse un m todo que en base a una condici n la cual lo vincula con la tabla de cabecera retorne los mencionados registros en forma de dataset A continuaci n se muestra un ejemplo sencillo solo retornando las columnas de la tabla bindeada Retorna los registros para la grilla de cotizaciones Public Function getCotizaciones ByVal As String _ As DataSet Implements Return _cotizaciones Buscar cd unidad monetaria cotizacionID amp End Function 250 StartFrame Net Framework Manual Programaci n net Framework versi n 1 10 2013 Parte ll Clase US La c
33. acking para esta clase Me Tracking True End Sub End Class El s lo para componentes accesibles desde el front end Windows desktop Agregar una entrada con el nombre de la clase en el archivo XML de configuraci n lt wellknown mode Singleton type AEAEE aE objectUri MATAAS gt 4 Si son necesarias nuevas clases con reglas de negocios espec ficas crear dentro del mismo componente tantas clases como entidades relacionadas existan para efectuar las validaciones correspondientes Adem s si se utilizan m todos que no son propios de la clase heredada se debe referenciar la interfaz si desea que dichos m todos sean visibles desde el front end Windows desktop a trav s de Remoting Public Class UnidadesMonetarias Nombre de la clase Inherits Abm Herencia Implements IUnidadesMonetarias Referencia de interfaz Dim M As Neu M Clase asociada subclase Sub New Modificar nombre de programa y tabla principal relacionada a la clase MyBase New Operador Password waunidmon wad_unidades_monetarias End Sub End Class 6 Las que figuran con la vi eta en video inverso son obligatorias 7 F r Ver tutorial para una ilustraci n paso a paso de las tareas a realizar 220 5 E S F Ef i 5 AR e StartFrame Net Framework Manual Programaci n versi n 1 10 2013 net Framework Public Class Cotizaciones Nombre de la clase Inherits Abm Herencia Sub New M
34. age CamposEdicion ce masterpage AliasCampos ac Instancia del objeto de reglas del negocio Dim obr As New BR Web Utilitarios Abms Pruebas Inicializaci n de la p gina Abmbase enlazada al objeto de negocios masterpage InicializarPagina obr End Sub 3 En caso de desear crear una p gina con dise o expl cito en el c digo HTML simplemente debe evitar asignarle valor a la propiedad del AbmBase CamposEdicion Luego deber crear en la p gina ASPX un contenedor con ID ContentPrincipal y ContentPlaceHolderlD FormularioEdicion Dentro de dicho contenedor se debe dise ar el formulario de la p gina respetando siempre los ID de los controles asign ndoles el mismo nombre que el campo de la tabla con la cual se bindea lt asp Content ID Contentl1 ContentPlaceHolderlD FormularioEdicion runat server gt lt asp Panel ID panelEdicion runat server gt lt asp Table ID Tablel runat server gt lt le Textbox gt lt asp TableRow gt lt asp TableHeaderCel1 gt lt asp Label ID Label4 class label runat server Text Caracteres gt lt asp Label gt lt asp TableHeaderCel1 gt lt asp TableCel1 gt lt asp TextBox ID ga caract r es runat server gt lt asp TextBox gt lt asp TableCel1 gt lt asp TableRow gt lt Calendario gt lt asp TableRow gt lt asp TableHeaderCel1 gt lt asp Label ID Label5 class label runat server Text M nimo gt lt asp Label
35. al sender As Object ByVal e As _ System EventArgs Handles MyBase Load Try Configuraci n del abm Me ColumnasNoVisiblesEnGrilla va observaciones fe operacion Me CamposNoActualizables st bloqueado st_estado Me FiltroGlobal not st bloqueado Me TablaBusquedas wav_operadores activos Me OrdenBusquedas nm apellido nm nombres Me CargaAutom False CType RemotingHelper getObject GetType IUnida etarias _unidadesMonetarias ion Display sh c AltasOk al ponerla en false se inhabilita la posibilidad de realizar altas en el abm d BajasOk al ponerla en false se inhabilita la posibilidad de realizar bajas en el abm e ModifOk al ponerla en false se inhabilita la posibilidad de realizar modificaciones en el abm f MovimOk al ponerla en false se inhabilita la posibilidad de realizar movimientos internos entre registros del abm o consultor Todas estas propiedades deben setearse despu s de asignarle valor al ObjetoReglasNegocio para que sobreescriba la seguridad est ndar 280 5 E a F Eh i 5 AR e StartFrame Net Framework Manual Programaci n J net Framework versi n 1 10 2013 13 Para destruir objetos externos al manejo de la clase que pudieron crearse en el programa deber ponerse c digo en el evento Clase_Dispose 14 En caso de tener que realizar alg n refrezco de los datos de pantalla como carga de datos de las grillas durante el movimiento entre registros
36. alue filtro Catch ex As Exception Ignora errores por estar sin datos End Try End Sub 480 StartFrame Net Framework Manual Programaci n met aran versi n 1 10 2013 Controles del tipo localizadores Interfaz Windows Desktop A diferencia de los controles del tipo filtro se entiende por localizador a un control utilizado para posicionarse en un registro pero sin realizar una nueva b squeda sino tan solo movi ndose en los registros del dataset actual Se asume que dicho posicionamiento se desea realizar a trav s de la evaluaci n de una serie de condiciones Para hacer lo descripto deber utilizar un c digo similar al del siguiente ejemplo para un abmGrilla Al seleccionar un valor para el localizador Private Sub BSITISperador OnSelectedChanged ByVal sender As Object _ ByVal e As System EventArgs Handles ESITSperado onSelectedChanged Try Rearma la grilla principal Dim filtro As String CType Me sel operador cboDescription SelectedValue String Dim cols As New ArrayList Dim vals As New ArrayList Condiciones cols Add Ed operador vals Add filtro cols Add e vals Add 0 Busca el registro Me MovePosition cols vals Marca el registro seleccionado en la grilla Me grdTablaPrincipal Select Me CurrentPosition Me grdTablaPrincipal CurrentRowIindex Me CurrentPosition Catch ex As Exception Ignora errores por estar sin datos End Try End Sub 490 StartFrame Net Framework Ma
37. apa de presentaci n o interfaz con el usuario depender de la arquitectura de soluci n elegida Windows Web etc Interfaz Windows Desktop A continuaci n se especifica el procedimiento para cualquiera de las arquitecturas Windows Desktop A E 8 A Deben realizarse las siguientes tareas en el formulario de la capa de usuario Agregar la interfaz para la clase en el proyecto IBR que corresponda con el siguiente esquema modificando los valores resaltados Este assembly reside tanto en el server como en el cliente Public Interface MUnidadesMonetarias Inherits IAbm Agregar las declaraciones de funciones que correspondan End Interface 2 Agregar un nuevo formulario en la capa de usuario que herede de StartFrame US Abm o StartFrame US AbmGrilla y modificar su constructor a efectos de que el formulario pueda ser llamado en modo autom tico FRegion Windows Form Designer generated code Public Sub New Me New Modos Normal End Sub Public Sub New ByVal modo As Modos Me New modo End Sub Public Sub New ByVal modo As Modos ByVal condicion As String MyBase New modo condicion required by the Wi E Realizar la declaraci n de la clase con una variable privada global Imports StartFrame BR Interfaces Procedencia de las referencias utilizadas Namespace Abms Namespace de la clase Public Class Nombre de la clase Inherits Herencia Dim As Windows form
38. ar la seguridad Private Sub EvolucionOficina _Load ByVal sender As Object ByVal e As _ System EventArgs Handles MyBase Load TY CType RemotingHelper getObject GetType Tevolucion evolucion Me ObjetoReglasNegocio _Tevolucion Para poder utilizar BR Abm _tablaPrincipal getTablaPrincipal _dataset getDataSet Catch ex As Exception StartFrame Us Display ShowError ex message 14 ds Ver tutorial para una ilustraci n paso a paso de las tareas a realizar 15 T are 2 A Las que figuran con la vi eta en video inverso son obligatorias 520 5 E S F Ef i 5 AR e StartFrame Net Framework Manual Programaci n net Framework versi n 1 10 2013 End Try End Sub 5 Entrada en config esto ser necesario nicamente si el programa utiliza alg n nuevo componente de negocios g Aspecto visual Deber n realizarse todas aquellas tareas que tengan que ver con el aspecto visual del programa t tulo controles y la entrada del mismo en el men Uso con BR Abm A fin de que pueda enlazarse el di logo de la capa US con un componente del tipo Abm de la capa BR para poder utilizar toda su funcionalidad elemental deber n crearse algunas funciones internas obtenidas de las clases ConsultaBase o Abm a saber SetErrors dsErrorsToString ClearErrors E Evento Ejecutar En este evento deber ubicarse todo el c digo que ejecute el proceso para el cual se cre esta pantalla ya q
39. ci n met aran versi n 1 10 2013 En cuanto al TAG principal MainMenu se pueden ingresar los siguientes atributos e Name Nombre del m dulo t tulo del formulario MDI e Collapse Es un atributo opcional que permite ingresar true o false opci n por defecto Para lograr que el splitter que oculta o muestra el men de rbol aparezca colapsado deber ingresar true en este atributo lt xml version 1 0 encoding UTF 8 gt lt MainMenu Name M dulo Testing Collapse false gt lt Menu Name samp Tablas Shortcut Icon Checked False Enabled True Id gt lt Menu Name samp Tablas de Uso Compartido Shortcut Icon I16 TABLASVARIASM Checked False Enabled True Id gt lt Menu Name samp Paises y Provincias Shortcut Icon I16_PAISES Checked False Enabled True Mdichild True Nforms False Id StartFrame US Utilitarios Abms Paises US utilitarios gt Seguridad WAPAISES gt lt Menu Name samp Localidades y Calles Shortcut Icon 116_ CALLES Checked False Enabled True Mdichild False Id StartFrame US Utilitarios Abms Localidades US utilitarios gt Seguridad WALOCALIDADES gt lt Menu gt lt Menu gt lt Menu Name amp amp Procesos Shortcut Icon Checked False Enabled True Id gt lt Menu Name samp Cambiar Parametros de Conexi n a la Base de Datos Shortcut Icon I16_DB Checked False Enabled True Id StartFrame US Utilitarios Abms Conexion
40. como una extensi n de Visual Studio para crear una nueva soluci n tan s lo deber seleccionar la opci n Nuevo Proyecto del men principal de Visual Studio y seleccionar el template deseado Existen diferentes tipos de plantillas que pueden utilizarse para crear soluciones con diferentes arquitecturas desktop web asp servicio windows servicio web etc Cambios del Aspecto Visual Es posible cambiar el aspecto ntegro de cualquier soluci n basada en StartFrame siempre y cuando se respeten los tama os de las im genes Caso contrario deber n adem s ajustar manualmente los tama os de los objetos de pantalla que las contienen En el caso de las plantillas Windows todas las im genes predise adas se encuentran en el archivo de recursos de la aplicaci n ya sea en InkfwrkInk es AR resources o bien en App es AR resources el cual se puede editar directamente desde Visual Studio En el caso de las plantillas de soluci n Web el aspecto visual proviene en gran medida del tema seleccionado el cual puede modificarse o bien agregarse uno nuevo Cada tema est compuesto por im genes plantillas CSS y Skins Las im genes que deber an cambiar las soluciones basadas en la plantilla desktop son ETIQUETA TAMA O APROXIMADO PIXELS DESCRIPCI N ANCHO ALTO APP_LOGO 150 92 Imagen del Splash y About del sistema Se recomienda utilizar fondo blanco BACKGROUND_LOGO 95 58 Logo mostrado sobre la imagen de fondo de cada m dulo
41. db US utilitarios gt lt Menu gt lt MainMenu gt 180 StartFrame Net Framework Manual Programaci n met aran versi n 1 10 2013 Interfaz Web ASP A continuaci n se especifica el procedimiento para la arquitectura Web Application En dicha plantilla no existe el concepto de m dulos como tal sino que deber crear una p gina principal con un selector de m dulos que redireccione a los correspondiente subsitios o bien manejar este concepto dentro del mismo men de la aplicaci n si no son m dulos demasiado grandes Edici n del men El men contenido en esta plantilla est formado por un control del tipo treeview que se alimenta de un archivo del tipo sitemap Para actualizar el contenido de los tems de men submen es y opciones finales simplemente deber actualizar el archivo Web sitemap el cual se encuentra en el directorio principal del sitio web lt xml version 1 0 encoding utf 8 gt lt siteMap xmlns http schemas microsoft com AspNet SiteMap File 1 0 gt lt siteMapNode url title Men del Sitio description gt lt siteMapNode url title Seguridad description M dulo de Seguridad del Sitio gt lt siteMapNode url FwrkPages Login aspx title Login description Login out gt lt siteMapNode url FwrkPages Login_NewUsr aspx title Nuevo Usuario description Registrar un nuevo usuario gt lt siteMapNode url title Auditor a description Informes de auditor a g
42. debe ser igual al nombre de la tabla de detalle a la cual est bindeada para que el abm maneje autom ticamente su estado Region Declaraciones Controles Grilla Cuentas Private dgl_cd proveedor As New DataGridLnkTextBoxColumn Private dgl cd banco As New DataGridLnkTextBoxFKColumn Ecd bancos Ed banco dd o Private dgl tp cuenta bancaria As New DataGridLInkComboBoxColumn _ DataSource Proveedores getCuentasBancarias Tables 0 DisplayMember 1 ValueMember 0 Private dgl _ st _noalaorden As New DataGridLnkCheckBox Private dgl_im total As New DataGridLnkTextBoxNumericoColumn fEnd Region Region Grilla Cuentas Creaci n de la grilla Private Sub Inicializaci n del modo gr fico Dim avgCharWidth As Integer With Graphics FromHwnd Me Handle _ MeasureString Text ABCDEFGHIJKLMNOPORSTUVWXYZ Font Me Font avgCharWidth CInt Width 26 0 End With Columnas BE presente cap tulo hace referencia al uso de la grilla nativa de Net 370 StartFrame Net Framework Manual Programaci n net aran versi n 1 10 2013 Dim gridTableStyle As DataGridLnkTableStyle gridTableStyle New DataGridLnkTableStyle With gridTableStyle Mapeo MappingName kldlcuentas proveedores Agrega las columnas With GridColumnsStyles cd proveedor columna del tipo Textbox com n With Me dgl_cd proveedor MappingName En TextBox Name MappingName HeaderText Common Display Fie
43. del mencionado control y que se ejecuta una vez ingresado un valor v lido en la mencionada columna Para poder hacer esto el control debe declararse a nivel del formulario y con la cl usula withevents Al ingresar un c digo de operador Private Sub aape OnTextValidated ByVal sender As Object _ ByVal e As System EventArgs Handles dgl_cd operador OnTextValidated Variables de trabajo Dim cel As DataGridCell Wld miembros grupo CurrentCell Dim col As Integer cel ColumnNumber Dim row As Integer cel RowNumber Try Columnas de la grilla Dim nCol_cd operador As Integer Dim nCol_nm operador As Integer Ro Valida el c digo del operador y carga su nombre If Not IsNothing dgl_cd_operador LvRetorno Then Item row nCol_nm operador dgl_cd operador LvRetorno End If Catch ex As Exception End Try End Sub En caso de necesitar realizar alguna validaci n en un control DataGridLnkTextBoxFKColumn previo al llamado del localizador podr utilizarse el evento OnLocate propio del mencionado control y que se ejecuta antes de llamar a una ventana de apoyo Para poder hacer esto el control debe declararse a nivel del formulario y con la cl usula withevents Al ingresar un c digo de operador Private Sub agil lcd operados OnLocate ByVal sender As Object _ ByVal e As System EventArgs Handles dgl_cd operador OnlLocate Variables de trabajo Dim cel As DataGridCell ld miembros grupo CurrentCell Dim col As
44. designer generated code End Class End Namespace 8 A sa A Las tareas que figuran con la vi eta en KAORE son obligatorias 260 ANOS StartFrame Net Framework Manual Programaci n versi n 1 10 2013 net Framework 4 Vincular el formulario de US a la clase de BR modificando el Load del formulario agregando el siguiente c digo y modificando los valores resaltados Private Sub UnidadesMonetarias Load ByVal sender As Object ByVal e As System EventArgs Handles MyBase Load Try CType RemotingHelper getObject GetType IUnidadesMonetarias Me ObjetoReglasNegocio unidadesMonetarias Catch ex As Exception StartFrame Us Display ShowError ex message End Try End Sub B Agregar una entrada con el nombre de objeto en el XML US ni exe config maa OOOO url tcp localhost 1234 UnidadesMonetarias gt 6 Si fuera necesario agregar p ginas y cambiarles el Text de cada una de ellas Si existiera una sola p gina el text va debe decir Datos Generales Si existieran m ltiples p ginas la primera de ellas deber tener el Text igual a 1 Datos Generales las siguientes deber n estar igualmente numeradas con el n mero resaltado para utilizar como acceso r pido y con un t tulo apropiado a los controles que en ella se ubiquen Modificar el Text del t tulo del formulario en el evento Load E Pegar los controles de pantalla utilizando las clases de LnkC
45. digo requerido cada vez que se acceda a una p gina diferente E Evento Ejecutar En este evento deber ubicarse todo el c digo que ejecute el proceso para el cual se cre esta pantalla ya que el mismo se dispara cuando el usuario confirma la operaci n 550 AA e StartFrame Net Framework Manual Programaci n versi n 1 10 2013 net Framework Interfaz JSWeb A continuaci n se especifica el procedimiento para la arquitectura JSWeb Application la cual utiliza el patr n MVC Modelo Vista Controlador aunque los di logos no requieren el uso de un modelo en particular Esta plantilla hace uso de un amplio set de extensiones Javascript que permiten dibujar la interfaz de usuario en runtime utilizando para ello una serie de controles sumamente ricos los cuales pueden descargarse gratuitamente desde http www sencha com products extjis E 6 a 18 Z A Deben realizarse las siguientes tareas en la aplicaci n Web para enlazar la vista al modelo y el manejador correspondiente Crear una nueva p gina con la vista que ser la interfaz del di logo a realizar Esta tarea es la m s compleja de todas ya que el dise o de la pantalla se realiza con c digo Javascript que es interpretado en runtime para dibujar la pantalla en cuesti n A continuaci n se muestra un ejemplo de un di logo para importar un archivo CSV a una tabla en SQL el cual es bastante representativo de cualquier proceso web est ndar Para dibujar pantal
46. e acci n IF sin ELSE CASE sin CASE ELSE etc aunque la posibilidad de que ello ocurra sea muy remota M Cada vez que se agreguen controles en un formulario controlar lo siguiente O Tama o y alineaci n O Orden de tabulaci n O Inclusi n del campo en el diccionario si corresponde M Para todos los mensajes al usuario de error validaci n informaci n etc deber tenerse en cuenta O Emplear un lenguaje impersonal O Capitalizar s lo la primera palabra de la oraci n O Colocar signos de expresi n si corresponde a ambos lados de la oraci n sin dejar espacios intermedios Q En caso de no haber signos de expresi n colocar punto final de la oraci n O Siempre que sea posible utilizar el archivo de recursos para los mensajes al usuario creando una etiqueta prefijada ver Etiquetas del Archivo de Recursos 30 StartFrame Net Framework Manual Programaci n met aran versi n 1 10 2013 O La forma de mostrar el mensaje depender si se trata de un error ShowError o informaci n general MsgBox Para las etiquetas labels que se relacionen directamente con alg n campo en lugar de llenar la propiedad text del label deber asignarse a la etiqueta el nombre del campo vinculado con el prefijo Ibl en su propiedad name Siempre que se deje una tarea pendiente en alg n bloque de c digo deber utilizarse la lista de tareas task list con un prefijo correspondiente a las iniciales del desarrollador
47. endo del valor de otros campos debe utilizarse este evento El mismo tambi n se utiliza para realizar validaciones y asignar valores por defecto Tener presente que cuando se posee una columna con un localizador habilitado puede utilizarse OnTextValidated para optar por una alternativa a este ltimo tipo de validaci n fRegion Declaraciones Private grdMG_col_ant As Integer Private grdMG_row_ant As Integer tEndRegion Io oo Al cambiar de celda Private Sub ld miembros grupo CurrentCellChanged ByVal sender As Object ByVal e As System EventArgs _ Handles wld miembros grupo CurrentCellChanged Variables de trabajo Dim cel As DataGridCell wld miembros grupo CurrentCell Dim col As Integer cel ColumnNumber Dim row As Integer cel RowNumber Dim tabla As DataTable CType hd miembros grupo DataSource DataTable 400 StartFrame Net Framework Manual Programaci n met aran versi n 1 10 2013 No realiza validaciones si la grilla es de s lo lectura If Not WIdmismbros grupo Enabled Or WId mi mbros grupo ReadOnly Then Exit Sub End If Try Columnas a validar Dim nCol_cd operador As Integer 0 Dim nCol_nm operador As Integer Dim nCol_tp operador As Integer 2 Dim nCol_ po pago As Integer 3 pun Valida el ingreso a las celdas Dim bEdit As Boolean Mia miembros grupo Item row 0 N A Me col im neto ReadOnly bEdit Me col_im iva ReadOnly bEdit Me col im total ReadOnly
48. erre StartFrame Net Framework Manual Programaci n net Framework versi n 1 10 2013 Elementos del Motor de BD Tanto para los nombres de las tablas como para los campos se utilizan caracteres en min sculas con un gui n bajo _ separando las palabras No se opt por un esquema de nombres capitalizados para obtener una mayor compatibilidad con los diferentes motores con respecto al case sensitive Tablas Las tablas respetan las siguientes reglas de nombres POSICI N DESCRIPCI N 1er D gito Indica el subsistema al que pertenece la tabla seg n se registr en la tabla wap_subsistemas por ej w para utilitarios 2do D gito Indica el tipo de tabla e a abm maestro e c cabecera e l neas o detalle 3er D gito Indica la forma de ingresar datos en la tabla e d directo por el usuario e p proceso por el sistema como por ej un log e v vista 4to D gito Gui n bajo _ separando los mnemot cnicos del nombre de la tabla 5to D gito en adelante Nombre de la tabla en plural en min sculas y separando las palabras con guiones bajos Un ejemplo de un nombre de tabla v lido puede ser wad_operadores Relaciones En cuanto a las relaciones estas llevan el nombre encabezado por el texto FK_ seguido del nombre de la tabla hija extremo muchos de una relaci n un gui n bajo y el nombre de la tabla padre extremo uno de una relaci n Un ejemplo de un nombre de relaci n v lido puede ser FK_wap_tracki
49. h ex As Exception Ignora los errores porque ser n mostrados por la clase base End Try End Sub 300 5 E A F Eh fa 5 AA e StartFrame Net Framework Manual Programaci n J net Framework versi n 1 10 2013 Interfaz Web ASP A continuaci n se especifica el procedimiento para la arquitectura Web Application Deben realizarse las siguientes tareas en la p gina Web algunas corresponden al html de la p gina ASPX y otras al code behing subyacente Crear una nueva p gina del tipo Web Content Form dentro del proyecto WebSite en la carpeta UserPages En el evento load de la p gina deber ponerse c digo para relacionar a la misma con el objeto de negocios correspondiente y vincularla con una instancia de AbmBase Imports StartFrame BR Web Utilitarios Partial Public Class ABMIPEUEBaS Inherits System Web UlI Page Public masterpage As AbmBase Protected Sub Page _Load ByVal sender As Object ByVal e As System EventArgs Handles Me Load Instancia de la clase masterpage AbmBase masterpage CType Page Master AbmBase Asigna los atributos del AbmBase masterpage lblTitulo Instancia del objeto de reglas del negocio Dim obr As New BR Web Utilitarios Abms Inicializaci n de la p gina Abmbase enlazada al objeto de negocios masterpage InicializarPagina obr End Sub Protected Overloads Sub OnPrelInit Handles Me Prelnit Aplicacion de Tema If Not Session Tema Is Nothing Then Page Theme Session Tema T
50. i n correspondiente del listador desde el Sistema Utilizar el XML generado para dise ar el reporte Para el dise o del reporte es v lido copiar un reporte similar ambos archivos y guardarlo con el nombre correspondiente para aprovechar el formato del mismo Para cambiar el archivo XML vinculado al reporte es necesario desvincular el anterior log off antes de seleccionar el nuevo Este reporte puede crearse en el assembly indicado en su definici n en el listador o bien en el assembly que contiene los reportes a medida del cliente par metro REPORTSCTE 4 El formato del reporte estandar se especifica m s abajo a modo de sugerencia reg Y z A Da Diccio rio de Dato rogramas priulin Ordenado Subsistema DOperador Subsistema hm_subsistema 22 A ne x P Las que figuran con la vi eta en video inverso son obligatorias 620 StartFrame Net Framework Manual Programaci n versi n 1 10 2013 met Framework Interfaz Web ASP En este caso las consultas toman la forma de listados contenidos en tablas HTML en realidad grillas paginadas A continuaci n se especifica el procedimiento para la arquitectura Web Application Deben realizarse las siguientes tareas en la p gina Web algunas corresponden al html de la p gina ASPX y otras al code behing subyacente Agregar un nuevo componente clase en la capa de reglas de negocios que herede de StartFrame BR Abm o StartFrame BR Consult
51. iene un propiedad record que hace referencia al registro que ser eliminado e AfterDelete Se dispara cuando obtenemos una respuesta desde el servidor luego de una operaci n de eliminaci n Como par metro recibe un objeto que tiene un propiedad record que hace referencia al registro eliminado y otra propiedad success que indica si la baja se realiz con xito o no Los mencionados eventos deben agregarse a la vista como listeners y puede llegar a ser necesario incluir c digo en el manejador depende del evento que se quiera utilizar En el siguiente ejemplo se aprecian dos m todos muy utilizados 1 GetNum utiliza la clase Startframe BR Utilitarios Talonarios para retornar un nuevo id de un determinado talonario de numeraci n 2 EjecutarEnServidor permite ejecutar una acci n definida en el manejador la cual podr a llamar a un m todo p blico en la clase de negocios utilizando la propiedad _Abm Ext define Rubros extend ABMBase Title Formulario ABM Rubro Model Model Rubro listeners OnNew function rcd rcd record set activeInstance GetNum RUBROS rcd record set activelnstance EjecutarEnServidor ObtenerEntidad AfterSave function rcd success if success Ext StoreMgr get storePedidoDetalle sync J WindowPanel xtype textfield fieldLabel Identificador name id_rubro DE 360 5 E A F Ef fa 5 AA e StartFrame Net Framewor
52. ilizar n las siguientes reglas POSICI N DESCRIPCI N 1er D gito Indica el subsistema al que pertenece el formulario seg n se registr en la tabla wap_subsistemas por ej W para utilitarios 2do D gito Indica el tipo de programa e A abm e C consulta e L listado e P proceso 80 StFERNS StartFrame Net Framework Manual Programaci n net Framework versi n 1 10 2013 e R rutina 3er D gito en adelante Nombre del formulario En cuanto a los espacios de nombre para la capa de usuario se utilizar el siguiente rbol NAMESPACE DESCRIPCI N 1er Elemento Copyright del producto o la empresa Por ej StartFrame 2er Elemento Opcionalmente puede indicarse el nombre en clave del proyecto Por ej ERP 3er Elemento Capa a la cual pertenece el formulario Por ej US o Web 4to Elemento M dulo al cual pertenece en forma prioritaria Ejemplo Utilitarios 5to Elemento Tipo de programa a saber e Abms e Consultas e Listados e Procesos e Rutinas Por ltimo la clase recibe el mismo nombre que el archivo f sico del formulario pero sin los mnemot cnicos Ejemplo de un nombre completo StartFrame US Utilitarios Abms Operadores o StartFrame ERP US Ventas Abms Clientes En cuanto a los espacios de nombre para la capa de negocios se utilizar el siguiente rbol NAMESPACE DESCRIPCI N ler Elemento Copyright del producto o la empresa Por ej StartFrame 2er Elemento Opcionalmente puede indicarse el no
53. im rpt As Report Dim rangoRubro As New Rango 1 cd rubro cd _rubro rpt New Report 1 TLRubros rubros Rubros rpt Rangos Add rangoRubro reportCollection Add rpt tlrubros rubros Referencia el objeto de negocios relacionado CType RemotingHelper getObjJect GetType IAuditoria TAuditoria Me ObjetoReglasNegocio 600 StartFrame Net Framework Manual Programaci n net Framework versi n 1 10 2013 Catch ex As Exception StartFrame Us Display ShowError ex message End Try End Sub 8 Pueden realizarse validaciones previas o con posterioridad a la carga de datos para la impresi n del formulario Esto puede hacerse en los eventos AntesDeCargarDatos y DespuesDeCargarDatos del formulario En ambos casos podr ponerse el par metro cancelar en true para impedir que se prosiga con la ejecuci n del informe 9 Puede ejecutarse c digo antes y despu s de imprimir en los eventos OnPrintClick OnPrintEnad OnScreenClick etc 610 StartFrame Net Framework Manual Programaci n net Framework versi n 1 10 2013 Parte Il Reporte m a a 27 r Deben realizarse las siguientes tareas en el formulario de la capa de usuario Crear un stored procedure con el origen de datos Tener en cuenta que se deben colocar como par metros del SP los rangos de pantalla del listador en el mismo orden de ubicaci n que tengan en el formulario 2 Generar un archivo XML ejecutando la opc
54. interfaz Windows Desktop utilizar la siguiente estructura modificando los valores resaltados Si el campo condicionante de esta validaci n figura en el formulario tratar como cualquier error caso contrario dirigir el error al campo clave que figure en pantalla Private Sub TipoTelefonos Eliminando ByRef cancela As Boolean ByRef row As _ System Data DataRow Handles MyBase Eliminando Valida que no elimine un registro marcado como de sistema If CType row Item st interno sistema DataRowVersion Original ETETE Then row SetColumnError Epltelefono Nose puede eliminar el registro End If End Sub FK contra otra tabla Configurar esta validaci n en la base de datos en la tabla correspondiente seg n lo especificado en la planilla de dise o En la tabla del lado de muchos en la relaci n deber crearse un ndice tipo FK por los campos de la relaci n Rango de valores aceptables Se puede ingresar esta validaci n en el evento Validando de las reglas del negocio Private Sub Programas validando ByRef cancela As Boolean ByRef paramDataTable As System Data DataTable Handles MyBase Validando Dim row As DataRow For Each row In paramDataTable Rows With row 470 5 E S F Ef f 5 AA e StartFrame Net Framework Manual Programaci n net Framework versi n 1 10 2013 If row RowState lt gt DataRowState Deleted Then End With Next End Sub Datos por defecto Co
55. k Manual Programaci n J net Framework versi n 1 10 2013 Grillas interfaz Windows Desktop Ya se mencionaron algunos aspectos relativos a las grillas en el cap tulo que describe los abms sin embargo aqu se detalla todo lo relativo a estos controles que suelen ser los m s complicados de cualquier formulario Windows Desktop Creaci n Para crear la grilla tanto la grilla en s como sus columnas deber n utilizarse los controles provistos para tales fines Sin embargo cabe se alar que hay que crear las columnas y las caracter sticas de la grilla mediante c digo y no mediante un generador o el seteo de propiedades en forma visual En el Load del formulario hay que llamar a un procedimiento que se encargue de crear cada grilla Private Sub UnidadesMonetarias Load ByVal sender As Object ByVal e As _ System EventArgs Handles MyBase Load Try _unidadesMonetarias _ CType RemotingHelper getObject GetType IUnidadesMonetarias IUnidadesMonetarias Me ObjetoReglasNegocio unidadesMonetarias Grillas Catch ex As Exception StartFrame Us Display ShowError ex message End Try End Sub Ese procedimiento tendr la siguiente estructura Tener en cuenta que se muestran varias columnas para que pueda apreciarse la diferencia en la creaci n de los diferentes tipos de campos Crear s lo las columnas que deben mostrarse en la grilla no crear columnas ocultas Tener muy presente que el nombre de la grilla
56. las m s sofisticadas deber consultar la documentaci n de ayuda del amplio set de controles javascript utilizados En el siguiente ejemplo puede verse que se crea una pantalla con un nombre nico que hereda de FormBase un t tulo para la p gina la referencia a un manejador de los eventos de la p gina una serie de tems que dibujar n cada control del di logo en cuesti n t picamente una caja de texto para elegir un archivo a importar dentro de un form cuya acci n ejecutar un m todo en el manejador al realizar submit como se indica en la propiedad URL una colecci n de botones que se ubicar n en la cabecera de la p gina indicando las acciones a realizar por cada bot n Ext define Importacion extend FormBase Title p Proxy Handlers ashX Items f xtype form id 5 url Handlers Mantenimiento Procesos Importacion ashx action ImportarArchivo layout vbox width 700 items xtype filefield name archivo fieldLabel Archivo a Importar labelWidth 250 width 100 msgTarget side allowBlank false submitValue true anchor 100 buttonText Explorar xtype textareafield id taflog width 100 grow false fieldLabel Log 18 A va Las tareas que figuran con la vi eta en Ke OA son obligatorias 19 z raen n A Pia z De esta clase se heredar n todas las p ginas con funcionalidades b sicas de un formulario est ndar
57. ldToText Ed proveedor s Common Display FormatoMnemotecnicos CORTO Alignment HorizontalAlignment Left Width avgCharWidth 15 NullText Obligatorio True End With Add dgl cd proveedor cd banco columna del tipo TextboxFK With Me dgl_cd banco MappingName cd banco TextBox Name MappingName HeaderText Common Display FieldToText Ed banco Common Display FormatoMnemotecnicos CORTO Alignment HorizontalAlignment Left Width avgCharWidth 10 NullText LvCamposRetorno AbmModo DataGridlnkTextBoxFKColumn Modos PermiteTodas AbmForm m AbmWhere A End With Add dg1_cd_banco tp cuenta bancaria columna del tipo Combobox With Me dgl_tp cuenta bancaria MappingName n HeaderText Common Display FieldToText Ep_cuenta bancaria _ Common Display FormatoMnemotecnicos CORTO Alignment HorizontalAlignment Left Width avgCharWidth 15 NullText End With Add dgl_tp cuenta bancaria st _noalaorden columna del tipo Checkbox With Me dgl_st_noalaorden MappingName s HeaderText Common Display FieldToText SE noalaorden _ Common Display FormatoMnemotecnicos CORTO Alignment HorizontalAlignment Center Width avgCharWidth B NullValue False valor por defecto para este tipo de campos AllowNull False End With Add dgl_st_noalaorden im total columna del tipo TextBoxNum rico With Me dgl_im total MappingName iM toral
58. les e 132 Icono de 32x32 pixeles e LOGO Logotipo de alguna clase e PANEL Panel de controles e TIP Tooltip e LBL Label e MSG Mensaje e CMD Texto de un bot n de comando e GRD Encabezado de columna de grilla 2do elemento Gui n bajo _ separando los campos 3er elemento Opcionalmente puede indicarse el tipo de programa que utiliza el recurso e ABM Abms e CON Consultas e LIS Listados e PRO Procesos e RUT Rutinas e MENU Men 4to Elemento Gui n bajo _ separando los campos 5to Elemento Identificaci n del recurso en may sculas y separando cada palabra por guiones bajos Siempre que corresponda deber coincidir con el nombre del campo asociado al control Por ejemplo LBL_ABM_cd_operador o CMD_PRO_configurar_impresora o MSG_LIS_rango_obligatorio Existen dos tipos diferentes de archivos de recursos e Lnkfrmwrk es AR resources Archivo de recursos del Framework No debe tocarse a no ser que desee cambiarse el aspecto de la interfaz del usuario Pueden existir m ltiples versiones de este archivo una para cada cultura a la cual est traducido el framework e App es AR resources Archivo de recursos de cada soluci n desarrollada con StartFrame Este es el archivo en el que deben a adirse todas las etiquetas a utilizar por la aplicaci n desarrollada Deber n existir tantas versiones de este archivo como culturas soportadas Ambos archivos de recursos compilan con el proyecto Common de cada aplicaci n 100 g
59. mbia de celda columna o fila y a nivel de la grilla Estas validaciones deber n apuntar a temas de formato ya que las validaciones importantes deben estar siempre en la capa de negocios Las validaciones a nivel de la grilla en realidad se realizan a nivel del formulario debido a que estas no se ejecutar an si el usuario nunca entra a la grilla Para ello se utiliza el evento Form_Actualizando que se dispara antes de enviar a grabar los datos a la capa de negocios Validaciones Private Sub Proveedores actualizando ByRef cancela As Boolean _ Handles MyBase Actualizando Valida que exista un registro en la grilla de cuentas If _dataSet Tables Rows Count 0 Then ErrorProviderl SetError Grilla Cuentas incompleta cancela True End If End Sub Para validar a nivel de celda deber utilizarse el evento de la grilla CurrentCellChanged Este evento se dispara cada vez que se posiciona en una nueva columna al entrar a la nueva celda no al salir de la anterior por lo cual deber utilizarse cierta l gica para saber no s lo d nde lleg sino de d nde ven a Las validaciones deben referirse a las celdas de la grilla y no a los campos de la tabla ya que esta ltima no posee registros hasta que se cambia de fila por lo tanto puede funcionar s lo en ocasiones Para impedir que se edite una columna se la puede definir como ReadOnly pero cuando hay que evitar que se edite la columna en forma din mica dependi
60. mbre en clave del proyecto Por ej StartFrame 3er Elemento Capa a la cual pertenece el formulario Por ej BR o BR Web 4to Elemento M dulo al cual pertenece en forma prioritaria Ejemplo Utilitarios Por ltimo la clase recibe el mismo nombre que el archivo f sico del formulario pero sin los mnemot cnicos tal cual el nombre de la clase de la capa de usuario Ejemplo de un nombre completo StartFrame BR Utilitarios Operadores o StartFrame ERP BR Ventas Clientes Reportes Los nombres de los reportes en entornos Windows desktop utilizar n las siguientes reglas POSICI N DESCRIPCI N 1er Elemento Nombre del formulario listador con el cual se vincula el reporte 2to Elemento Gui n bajo _ como separador de elementos 3er Elemento Nombre que identifica al reporte en s Un ejemplo de un nombre de reporte v lido puede ser wloperadores_porgrupo 90 StartFrame Net Framework Manual Programaci n net aframe versi n 1 10 2013 Etiquetas del Archivo de Recursos El archivo de recursos se utilizar para facilitar las traducciones del sistema para otras culturas Por ello es indispensable que se utilice para almacenar cualquier tipo de informaci n de ndole cultural gr ficos mensajes de cualquier ndole textos en pantalla etc La siguiente tabla muestra las etiquetas utilizadas en dicho archivo POSICI N CONTENIDO 1er elemento Tipo de etiqueta e Sin prefijo si es una imagen gen rica e 16 Icono de 16x16 pixe
61. me Ventas gt lt Menu Name Facturacion Image MENU_MOD1_ITEM1 Descrip M dulo de facturaci n MenuXml MenuFact xml gt lt Menu Name Cobranzas Image MENU_MOD1_ITEM2 Descrip M dulo de control de cuentas corrientes MenuXml XmlCobranzas xml gt lt Menu gt lt Menu Name Sueldos gt lt Menu Name Liquidador Image MENU_MOD2 ITEM1 Descrip M dulo de liquidaci n de sueldos MenuXml XmlSueldos xml gt lt Menu gt lt MainMenu gt Edici n del men Para crear un nuevo men deber buscar los men es ya definidos y referenciados en el archivo MenuModulos xml La opci n m s sencilla es seleccionar alguno de los XML ya hechos y hacer un copy 8 paste para crear el nuevo archivo XML de men Pn x E ag A 75 Una vez obtenido el XML del men deber ingresar la siguiente informaci n por cada tem de men e Name nombre de la opci n de men Puede utilizar el prefijo amp para resaltar una tecla Tambi n puede utilizar un gui n medio simple para crear una l nea divisoria e Shortcut tecla de corte para la opci n de men El formato para ingresarla es por ejemplo CtrlA AltC ShiftD e Icon corresponde a la etiqueta dentro del archivo de recursos App resources del cono 4 aje 2 Puede utilizar los code snippets provistos por StartFrame para agregar una nueva entrada al men 5 nje Puede utilizar los code snippets provistos por StartFrame para agregar una nueva e
62. mento nicamente aplicable si el alcance de la variable es global pero privada a nivel de clase En tal caso deber llevar un gui n bajo _ Si dicha variable es p blica por convenciones de Net no podr utilizarse dicho prefijo _ En su defecto se reemplazar por m_ 2do Elemento Indica el tipo de dato de la variable string boolean date datetime num rica de cualq tipo integer double etc tipos definidos por el usuario array obj para objetos en forma gen rica ver e Objetos 3er Elemento en adelante Nombre de la variable que no supere los 30 caracteres Siempre que sea posible pueden utilizarse los mismos mnemot cnicos que los recomendados para los nombres de los campos ver Campos Capitalizar cada palabra en el nombre de la variable Un ejemplo de un nombre de variable global privada del tipo string para el c digo del operador puede ser_sCd_Operador n E gt a g 0 70 Serre StartFrame Net Framework Manual Programaci n net Framework versi n 1 10 2013 Objetos En los abms debido a una raz n t cnica interna del funcionamiento autom tico de la interfaz de programaci n los nombres de los controles de pantalla que est n vinculados a campos de tablas deben tener el mismo nombre que el campo con el cual se vincula En el caso del resto de los formularios los nombres de los controles responden a su contenido o funcionalidad con la anteposici n de un prefijo que indica su tip
63. mo esto es necesario antes de iniciar una edici n el mejor lugar para hacerlo es el evento Editando OnEdit en el caso de la interfaz JSWeb Al iniciar la edici n Private Sub Provesdores Editando ByRef cancela As Boolean _ Handles MyBase Editando Valores por defecto If Me Estado Estados Alta Then Me fe alta Value Now End If End Sub Campos del tipo identity A este tipo de campo no puede asign rsele ning n valor en particular con lo cual no podr editarse nunca pero es posible que quiera visualizarse En este ltimo caso agregar el control pero del tipo ReadOnly Controles del tipo filtro Interfaz Windows Desktop En caso de desear utilizar algunos filtros a modo de buscadores que al elegirlos refresquen la tabla principal deber n ubicarse los mismos sin un bindeo directo a la tabla en todo caso asignarle valor al campo bindeado equivalente Una forma de hacer esto es utilizando un control del tipo LnkTextboxFK en modo Combo como en el siguiente ejemplo Al seleccionar un valor para el filtro Private Sub epe OnSelectedChanged ByVal sender As Object _ ByVal e As System EventArgs Handles BSIToperados onSelectedChanged Try Rearma la grilla principal Dim filtro As String CType Me sel operador cboDescription SelectedValue String Me RefrescarGrilla amp filtro Restablece los valores de pantalla que ya se hab an cargado Me Text filtro Me CboDescription SelectedV
64. n8 runat server gt lt asp Panel ID panelEdicion8 runat server gt lt asp Panel gt lt asp Content gt 330 5 E A F Ef fa a AA e StartFrame Net Framework Manual Programaci n 7 F net Framework versi n 1 10 2013 Interfaz Web JS A continuaci n se especifica el procedimiento para la arquitectura JSWeb Application la cual utiliza el patr n MVC Modelo Vista Controlador Esta plantilla hace uso de un amplio set de extensiones Javascript que permiten dibujar la interfaz de usuario en runtime utilizando para ello una serie de controles sumamente ricos los cuales pueden descargarse gratuitamente desde http www sencha com products extjs 10 cd Deben realizarse las siguientes tareas en la aplicaci n Web para enlazar la vista al modelo y el manejador correspondiente Crear el nuevo modelo editando el archivo model js WebSitelScriptsiModel y agregando una nueva entrada con un nombre nico todos los campos de la tabla a la cual el modelo se enlaza el campo que constituye la clave primaria y el nombre del manejador del modelo Ext define Model Rubro 1 extend Ext data Model fields name id_rubro type int y name type bool name type date idProperty 5 proxy GenerarProxy Handlers Mantenimiento Articulos RUbFOS ashx H 2 Crear un nuevo manejador o controlador WebSite Handlers que recibir todos los even
65. ng_wad_operadores ndices Los ndices llevan nombres diferentes seg n su tipo TIPO DE NDICE NOMBRE Clave primaria Encabeza el nombre el texto PK_ seguido por el nombre de la tabla Ejemplo PK_wad_operadores Clave externa Encabeza el nombre el texto FK_ seguido por el nombre del primer campo indexado con alg n diferenciador si hiciera falta Ejemplo FK_cd_operador Clave nica Encabeza el nombre el texto UN_ seguido por el nombre del primer campo indexado con alg n diferenciador si hiciera falta Ejemplo UN_nm_operador 110 StartFrame Net Framework Manual Programaci n net ar ranne versi n 1 10 2013 Campos Los campos respetan las siguientes reglas de nombres POSICI N DESCRIPCI N 1ro y 2do D gitos Indica el tipo de contenido del campo cuyo nombre debe leerse traduciendo este mnemot cnico ej tp_operacion se leer a tipo de operaci n Los mnemot cnicos m s comunes son los siguientes Sin embargo cualquier mnemot cnico deber registrarse en el archivo de recursos sin ning n tipo de prefijo s lo el mnemot cnico Cada mnemot cnico debe contener tres tipos de expresiones a retornar separadas por larga media y corta Por ej para el mnemo ca deber grabarse Cantidad de Cantidad Cant e ca cantidad e cd c digo e de descripci n e fe fecha e hr hora e im importe e Is lista e nm nombre e nu n mero e po porcentaje e st status flag
66. nippets incluidos en StartFrame 210 StartFrame Net Framework Manual Programaci n versi n 1 10 2013 met Framework Parte l Clase BR Sin importar el tipo de plantilla arquitect nica seleccionada los componentes de reglas del negocio son gen ricos y reutilizables desde todos los tipos de soluciones Windows Web Servicios etc Deben 6 7 realizarse las siguientes tareas en el componente de la capa de negocios Agregar un nuevo componente clase en la capa de reglas de negocios que herede de StartFrame BR Abm o de StartFrame BR Web Helpers J sonAbm para el caso de objetos de negocios a invocar desde un frontend JSweb Dentro del mismo componente se pueden crear tantas clases como sea necesario ver punto 4 2 Realizar la declaraci n de la clase y modificar los valores resaltados del c digo Asegurarse de no dejar c digo innecesario al efectuar este paso En caso de tratarse de un componente para utilizar en forma local del lado del servidor no es necesario que implemente ninguna interfaz Imports System Data Oledb Imports Common Env Imports StartFrame DA Sql Public Class UnidadesMonetarias Nombre de la clase Inherits Abm o JsonAbm Herencia Implements TUnidadesMonetarias Interfaz s lo para usar desde I F desktop Sub New Modificar nombre de programa y tabla principal relacionada a la clase MyBase New Operador Password waunidmon wad unidades monetarias Habilita el tr
67. ntrada al men 160 StartFrame Net Framework Manual Programaci n met aran versi n 1 10 2013 asociado a la opci n de men Deber n tratarse de conos de 16x16 en 256 colores e Checked indica si la opci n del men es del tipo check uncheck Los valores v lidos son True y False e Enabled indica si debe mostrarse habilitada o no la opci n de men Los valores v lidos son True y False e Mdichild indica si el formulario a llamar estar contenido dentro del MDI como MDIchild o no Este par metro es opcional asumiendo por defecto el valor True dentro del MDI Los valores v lidos son True y False e Nforms indica si el formulario a llamar soporta m ltiples instancias o no En caso de que no las soporte al llamar al formulario por segunda vez se pasar a poner el foco en la instancia activa del mismo Este par metro es opcional asumiendo por defecto el valor True m ltiples instancias permitidas Los valores v lidos son True y False Este par metro es s lo aplicable cuando MadiChild es igual a True e Id nombre de la clase y el assembly que la contiene tal cual se indica en el diccionario de datos de programas en el campo nm_clase Esta celda puede llegar a contener una determinada etiqueta la cual podr ser interceptada por el evento OnltemSelected para ejecutar alg n programa externo o directamente incluir c digo para dicha opci n
68. nual Programaci n net Framework versi n 1 10 2013 Consultores Como en los cap tulos anteriores el objetivo del presente punto es lograr una estandarizaci n total en la programaci n de todo el sistema de forma tal que sea imperceptible el paso de varios programadores diferentes facilitar el mantenimiento y minimizar la posibilidad de errores Casi cualquier porci n de c digo utilizada en esta secci n puede ser creada mediante el uso de los code snippets incluidos en StartFrame Interfaz Windows Desktop A continuaci n se especifica el procedimiento para cualquiera de las arquitecturas Windows Desktop En este caso para confeccionar un Consultor deber n realizarse los mismos pasos que para realizar un Abm obviando todos los puntos referentes a validaciones y grabaciones de datos En resumen deber Agregar un nuevo componente Declarar la clase Agregar la entrada en el archivo de configuraci n Agregar las nuevas clases si hubiera A Agregar las grillas si hubiera al dataset Interfaz Web ASP En este caso las consultas toman la forma de listados contenidos en tablas HTML en realidad grillas paginadas El procedimiento para la creaci n de los mencionados listados se explica en detalle m s adelante en el cap tulo de confecci n de listadores Interfaz Web JS A continuaci n se especifica el procedimiento para la arquitectura JSWeb Application la cual utiliza el patr n MVC Modelo Vista Controlado
69. o Capitalizar cada palabra componente de un nombre para mayor claridad La siguiente lista es s lo indicativa PREFIJO TIPO DE OBJETO No corresponde prefijo para los objetos vinculados a campos de los abms del sistema Ibl Label txt Textbox de cualquier tipo cbo Combo box de cualquier tipo y contenido Ist List box de cualquier tipo y contenido opt Option button chk Check box cmd Command button de cualquier tipo forma y contenido img Image picture y cualquier tipo de control gr fico spn Spinner tab Panel tab frame grd Grid de cualquier tipo forma contenido y fabricante frm Form mnu Men ds Dataset drd Datareader dv Dataview dt Datatable dr Datarow dc Datacolumn ex Exeption obj Control de cualquier tipo que no entre en ninguna de las clasificaciones antes descriptas en esta tabla Formularios y p ginas Hay que hacer una salvedad al hablar de nombres de formularios en entornos Windows desktop o p ginas en entornos Web Primero hay que distinguir perfectamente la diferencia entre el nombre f sico con el cual el formulario o p gina se guarda en disco el cual coincide con el nombre con el cual Visual Studio lo reconoce y por otro lado est el nombre l gico compuesto por un nombre de clase y el espacio de nombre namespace a la cual esa clase pertenece Por otro lado los espacios de nombre para las capas de usuario y negocios tienen una estructura muy similar Para los nombres f sicos se ut
70. oString End If End Sub End Class 2 Podr n utilizarse ciertas propiedades de la plantilla para configurar el aspecto y funcionamiento del abm sobre todo si va a crear un abm autom tico y no uno con dise o expl cito Protected Sub Page Load ByVal sender As Object ByVal e As System EventArgs Handles Me Load Campos de filtado si esta vacio los incluye a todos Dim cf As String cd prueba fe prueba nu prueba nm prueba nm programa sade Columnas de la grilla si esta vacio las incluye a todas Dim cg As String fe prueba nm programa nm prueba Columnas del formulario de alta modificacion si esta vacio los incluye a todos Dim ce As String cd prueba fe prueba nu prueba nm prueba nm programa Alias de columnas si esta vacio pone los nombres de los campos Dim ac As New Hashtable ac Add cd prueba C digo ac Add fe prueba Fecha ac Add nu_prueba N Prueba ac Add nm prueba Detalle ac Add nm programa Funcionalidad Instancia de la clase masterpage AbmBase masterpage CType Page Master AbmBase Asigna los atributos del AbmBase masterpage lblTitulo Registro de Pruebas Realizadas masterpage FiltrosBusqueda cf masterpage ColumnasGrilla cg 9 a no A A Las tareas que figuran con la vi eta en KOANE son obligatorias 310 5 E S F Ef i 5 AR e StartFrame Net Framework Manual Programaci n net Framework versi n 1 10 2013 masterp
71. oText Am operador _ Common Display FormatoMnemotecnicos CORTO Width avgCharWidth 380 ReadOnly True Columna de s lo lectura End With Add dgTextBoxColumn3 Deber asignarse el valor a la columna asociada cuando cambie el valor de la columna principal Esto puede hacerse en el evento CurrentCellChanged Private Sub grilla CurrentCellChanged ByVal sender As Object _ ByVal e As DataColumnChangeEventArgs Completa el nombre del operador If grdMG_col ant nCol cd operador _ AndAlso Not IsNothing col_cd operador LvRetorno Then wld miembros grupo Item grdMG_row_ant nCol_cd operador col cd operador LvRetorno Trim End If End Sub En el evento _editando y en _eliminado deber llamar al evento _display para que aparezcan las columnas no mapeadas en la grilla Private Sub grilla Eliminado ByVal ds As System Data DataSet Handles MyBase Eliminado Refrezca datos de la grilla Me Proveedores Display 440 StartFrame Net Framework Manual Programaci n net Framework versi n 1 10 2013 End Sub Private Sub grilla Editando ByRef cancela As Boolean _ Handles MyBase Editando Refrezca datos de la grilla If Me Estado Estados Alta Then Me BESVESASESS Display End If End Sub 450 5 E S F Ef fa 5 AA e StartFrame Net Framework Manual Programaci n net Framework versi n 1 10 2013 Validaciones Est ndar A continuaci n se especificar
72. odificar nombre de programa y tabla principal relacionada a la clase MyBase New Operador Password waunidmon wld cotizaciones End Sub End Class 5 Para crear una grilla o tabla secundaria administrada autom ticamente por la clase ABM insertar el siguiente c digo y modificar los valores resaltados Tener en cuenta que al existir una tabla de detalle la grabaci n de datos debe efectuarse con ciertas reglas a fin de automatizarla ver punto 8 Public Class UnidadesMonetarias Nombre de la clase Inherits Abm Herencia Implements IUnidadesMonetarias Referencia de interf z Dim lcotizaciones As New Cotizaciones Crea el objeto detalle Sub New Modificar nombre de programa y tabla principal relacionada a la clase MyBase New Operador Password waunidmon wad unidades monetarias Grilla agrega tablas de detalle al dataset Dim arrayTablasDetalle As New ArrayList arrayTablasDetalle Add wld cotizaciones MyBase setTablasDetalle arrayTablasDetalle End Sub End Class Public Class Cotizaciones Nombre de la clase Inherits Abm Herencia Sub New Modificar nombre de programa y tabla principal relacionada a la clase MyBase New Operador Password waunidmon wld_cotizaciones End Sub End Class 6 Para efectuar validaciones manuales sobre todos los registros utilizar el evento _ validando En este evento el dataset se encuentra cargado con todos los registros de la tabla relaci
73. onada Usar el siguiente esquema y modificar los valores resaltados En el caso de estar utilizando un frontend Web es recomendable realizar estas validaciones del lado de la p gina con controles validators para lograr un mejor resultado Private Sub UnidadesMonetarias Validando ByRef cancela As Boolean _ ByRef paramDataTable As System Data DataTable Handles MyBase Validando Dim row As DataRow Recorre todos los registros de la tabla For Each row In paramDataTable Rows With row If RowState lt gt DataRowState Deleted Then Valida duplicados por el dato nombre If Not IsDBNull row nm unidad monetaria Then If CType StartFrame DA Sql Search ConnectionString COUNT wad unidades monetarias nm unidad monetaria amp _ CType row nm _ unidad monetaria String Integer gt 0 Then SetColumnError a 1 End If End If End If End With 230 5 E a F Eh i 5 AR e StartFrame Net Framework Manual Programaci n J net Framework versi n 1 10 2013 Next End Sub 7 Para efectuar validaciones manuales m s precisas sobre cada registro en particular existen eventos determinados _insertando _ modificando _eliminando _insertado _ modificado _eliminado En estos eventos en lugar de un dataset contiendo todos los registros a modificar se trabaja con el datarow procesado Utilizar el m todo que corresponda para cada validaci n En el caso de estar utilizando un fr
74. ontend Web es recomendable realizar estas validaciones del lado de la p gina con controles validators para lograr un mejor resultado Private Sub UnidadesMonetarias Insertando ByRef cancela As Boolean ByRef row As System Data DataRow Handles MyBase Insertando MyBase Modificando Valida el primer d gito If row nm unidad monetaria ToString Length gt 0 Then Select Case row nm unidad monetaria ToString Substring 0 1 Case A B C Todo Ok Case Else Error row SetColumnError e e i T End Select End If End Sub 8 La grabaci n de las tablas de detalle del ABM debe hacerse en forma transaccionada llamando a cada objeto de negocios asociado a cada tabla grilla a procesar ver punto 5 Para esto es necesario hacer un overload del m todo ActualizarDatos En dicho m todo deber ponerse c digo con el siguiente esquema y modificar los valores resaltados Public Overloads Overrides Function ActualizarDatos ByRef paramDataSet As _ System Data DataSet As Boolean Dim tran As OleDbTransaction Nothing Try InicializarConeccion 1nk_cn Open tran cn BeginTransaction Elimina las columnas no mapeadas Me RemoveUnmappedCols paramDataSet Tables wld cotizaciones Setea el operador actual de las subclases SetOperadorLogueado _NombreOperador Inserta o modifica registros If paramDataSet Tables _tablaPrincipal GetChanges DataRowState Deleted Is _ Nothing Then Actualiz
75. ontrols y o US En cada control deber cambiarse el Text y el Name del control igual al nombre del campo vinculado y el Text y Name de la etiqueta relacionada igual al nombre del campo anteponiendo el prefijo Ib El Alinear y ordenar los controles seg n la importancia Se sugiere utilizar grilla de 8 x8 Verificar el llamado al programa en el men dentro del archivo XML del m dulo que corresponda Adem s agregar la correspondiente entrada en el diccionario de datos de programas y tablas si es que estas no existen 11 si fuera necesario restringir el acceso a un campo se deber escribir c digo en el evento When del control con el siguiente esquema modificando los valores resaltados Private Sub va obs When ByVal sender As Object ByVal e As system ComponentModel CancelEventArgs Handles va_obS When e Cancel True End Sub 12 para reconfigurar propiedades u otros seteos iniciales como creaci n de listas utilizar el evento Clase_Load Las propiedades que pueden afectarse en este evento son 270 StartFrame Net Framework Manual Programaci n met aran versi n 1 10 2013 a TablaBusquedas por defecto para las b squedas se utilizar la tabla principal pero puede optarse por utilizar alguna vista que contenga m s par metros de localizaci n En este caso es necesario que la tabla de b squedas contenga todos los campos que contiene la tabla principal Caso contrario habr que hacer un
76. or ejemplo ejecutando el m todo SetOperadorLlogueado pas ndole el valor del operador actualmente logueado Ink_NombreOperador Esto es v lido si ambas clases la que se llama y la llamadora heredan de ClaseBase o cualquiera de sus clases heredadas Instancia una clase de negocios Private objOperadores As New Operadores ObjOperadores setOperadorLogueado 1nk _NombreOperador Teclas de Corte Shortcuts La siguiente tabla enumera las teclas de corte que StartFrame Net Framework tiene reservadas para distintos formularios en la plantilla Windows desktop TECLA FORMULARIO CLASE ACCI N C Men Edici n Copiar E Men Edici n Seleccionar todo Ap Consulta Abm Imprimir AU Men Edici n Deshacer AV Men Edici n Pegar AX Men Edici n Cortar Alt nro Consulta Abm Se desplaza al n mero de TAB tipeado en nro F1 Consulta Abm Listado Men Ayuda AF1 Men Ayuda Ayuda sobre el uso del sistema Shift F1 Men Ayuda Ayuda Qu es esto Alt F4 Men Archivo Salir del m dulo F9 Grabar Graba altas o modificaciones AF9 Consulta Abm B squeda puntual 1 z Ver el Manual T cnico para mayores detalles sobre Remoting 50 7 net Framework F10 AF10 F11 F11 AF11 F12 F12 AF12 Abm Consulta Abm Abm Listador Consulta Abm Abm Listador Consulta Abm StartFrame Net Framework Manual Programaci n versi n 1 10 2013 Nuevo registro B squeda global Modificar registro Impresi n prelimina
77. ot paramDataSet Tables _tablaPrincipal GetChanges DataRowState Deleted Is Nothing Then 430 5 E A F Ef f 5 AA e StartFrame Net Framework Manual Programaci n J net Framework versi n 1 10 2013 _grupoMiembros ActualizarDatos paramDataSet _cn tran En la capa de usuario la definici n de la columna vinculada se realizar normalmente aunque ser por lo general de s lo lectura pero deber declararse privado utilizando Private en lugar de Dim cualquier control de columna del cual desee posteriormente consultar sus propiedades T picamente esto ocurrir con los controles del tipo DataGridLnkTextBoxFKColumn que posean alguna columna vinculada Private dgTextBoxColumn2 As New DataGridLnkTextBoxFKColumn _ wj ri Grilla Cuentas Private Sub InicializarGrillaMiembros Crea las columnas With gridTableStyle Mapeo MappingName kld cuentas proveedores Agrega las columnas With GridColumnStyles cd operador columna del tipo TextboxFK With dgTextBoxColumn2 MappingName cd operador HeaderText Common Display FieldToText Ed operador _ Common Display FormatoMnemotecnicos CORTO Width avgCharWidth LvCamposRetorno iii AbmModo DataGridLnkTextBoxFKColumn Modos NoPermiteOperaciones End With Add dgTextBoxColumn2 nm_operador columna asociada a cd_operador With dgTextBoxColumn3 MappingName nm operador HeaderText Common Display FieldT
78. override del m todo OnLoadDataset Para que todo esto sea aplicable deber realizarse un override en la clase de negocios del m todo Buscar para que tome en cuenta que debe retornar los datos requeridos por la TablaBusquedas Esto ltimo no ser a necesario si se utilizan vistas actualizables con al menos todos los campos de la tabla principal Protected Overrides Sub OnLoadDataSet ByVal ds As DataSet ByVal condicion As String ByVal clearDS As Boolean Limpia el dataset If clearDS Then _dataSet Tables _tablaPrincipal Clear End If If tablaBusquedas lt gt String Empty And _tablaBusquedas lt gt tablaPrincipal _ And _dataSet Tables Index0f _tablaBusquedas lt gt 1 Then dataSet Tables _tablaBusquedas Clear End If Agrega los registros obtenidos en la b squeda ds Tables 0 TableName _tablaPrincipal _dataSet Merge ds If tablaBusquedas lt gt String Empty And tablaBusquedas lt gt tablaPrincipal _ And _dataSet Tables Index0f _tablaBusquedas lt gt 1 Then ds Tables 0 TableName _tablaBusquedas _dataSet Merge ds End If Acepta los cambios _dataSet AcceptChanges End Sub b FiltroGlobal se usa en caso de tener que aplicar un filtro global a todas las b squedas del abm independientemente de los par metros de b squeda ingresados por el usuario Todos estas propiedades deben setearse antes de configurar el ObjetoReglasNegocio Private Sub UnidadesMonetarias Load ByV
79. r Esta plantilla hace uso de un amplio set de extensiones Javascript que permiten dibujar la interfaz de usuario en runtime utilizando para ello una serie de controles sumamente ricos los cuales pueden descargarse gratuitamente desde http www sencha com products extjs En este caso al igual que en la interfaz desktop lo m s aconsejable es utilizar la misma plantilla base que para los abms pero sin habilitar las funciones de alta baja ni modificaci n con lo que se puede consultar la informaci n bindeada a un modelo pudiendo ordenar la misma filtrarla por cualquier dato visible y exportarla En resumen deber Crear el nuevo modelo Crear el controlador que enlaza la vista con la p gina Crear la p gina con la vista del modelo Deshabilitar desde el sistema de seguridad interno las opciones de alta baja modificaci n T IAS de registros 500 StartFrame Net Framework Manual Programaci n net Framework versi n 1 10 2013 Procesos Di logos y Wizards Como en los cap tulos anteriores el objetivo del presente punto es lograr una estandarizaci n total en la programaci n de todo el sistema de forma tal que sea imperceptible el paso de varios programadores diferentes facilitar el mantenimiento y minimizar la posibilidad de errores Casi cualquier porci n de c digo utilizada en esta secci n puede ser creada mediante el uso de los code snippets incluidos en StartFrame Interfaz Windows Desktop A continuaci n se
80. r Registro anterior Eliminar registro Impresi n a impresora Registro siguiente 60 StartFrame Net Framework Manual Programaci n net Framework versi n 1 10 2013 CONVENCIONES DE NOMBRES Se definen a continuaci n las reglas que deber n utilizarse para nombrar cada objeto dentro del sistema y su entorno El objetivo es lograr una estandarizaci n tal del sistema de modo que cualquier programador contando con la especificaci n de dise o pueda modificar cualquier programa aunque no haya sido l qui n lo confeccion Adem s esto facilitar en gran manera las tareas de control de calidad Sin embargo podr an adoptarse otras convenciones totalmente diferentes a las expresadas a continuaci n Lo importante es que exista alguna convenci n y cuente con el consenso de la mayor a del equipo de desarrollo Elementos de la Aplicaci n Se entiende por elementos de la aplicaci n a todos aquellos objetos que se pueden individualizar e identificar con un nombre determinado como ser variables matrices punteros de objetos instanciados controles de pantalla formularios reportes etc A continuaci n se dictar n las reglas utilizadas para nominar todos ellos Variables de Memoria Si bien se parti de las convenciones propuestas por Microsoft para Visual Studio se simplificaron para unos fines m s convenientes y pr cticos La siguiente tabla muestra la estructura del nombre de una variable POSICI N DESCRIPCI N 1er Ele
81. rencia para indicar la ubicaci n del c digo relacionado al tem de referencia Las partes resaltadas indican que deber reemplazarse el contenido por el apropiado en cada caso En el caso de las validaciones estas partes est n s lo a modo de ejemplo ya que no se puede especificar una validaci n gen rica Por razones de espacio algunas l neas de c digo debieron ser tipeadas en varios renglones Casi cualquier porci n de c digo utilizada en esta secci n puede ser creada mediante el uso de los code snippets incluidos en StartFrame Parte l Listador 3 a 21 A y Deben realizarse las siguientes tareas en el formulario de la capa de usuario 1 Agregar la interf z si no existe para la clase en StartFrame IBR IAbm con el siguiente esquema modificando los valores resaltados Public Interface TRubros Inherits IAbm Agregar las declaraciones de funciones que correspondan End Interface 2 Agregar un nuevo formulario heredado en la capa de usuario desde StartFrame US Listador E Realizar la declaraci n de la clase Imports StartFrame BR Interfaces Procedencia de las referencias utilizadas especificar otras si es necesario 20 E Se E Ver tutorial para una ilustraci n paso a paso de las tareas a realizar 21 T 2 A Las que figuran con la vi eta en video inverso son obligatorias 590 met Framework StartFrame Net Framework Manual Programaci n versi n
82. servidor para grabarlos Si el controlador del evento devuelve false la ejecucion se cancelar y los datos no se sincronizar n Como p rametro recibe un objeto que tiene una propiedad record que hace referencia al registro creado modificando e AfterSave Se dispara cuando obtenemos una respuesta desde el servidor luego de enviar los datos para grabarlos El par metro que contiene adem s de la propiedad con el registro creado modificado tiene otra propiedad success que indica si la ejecuci n se realiz con xito o no Si el controlador del evento devuelve false se va a evitar que se cierre la ventana de edici n 1 De esta clase se heredar n todas las p ginas con funcionalidades b sicas de un ABM Esta clase nos dar un marco con una grilla paginada para consultar ordenar y filtrar los registros con botones para agregar editar borrar y exportar Cada acci n en la p gina har que se ejecute el controlador asociado a la misma en el modelo antes definido 350 5 E a F Eh i 5 AR e StartFrame Net Framework Manual Programaci n J net Framework versi n 1 10 2013 ya que se interpreta que ocurri alg n error Si se devuelve true la ventana de edici n se cerrar y la grilla se refrescar e BeforeDelete Se dispara antes de enviar la llamada al servidor para borrar el registro Si el controlador del evento devuelve false la ejecuci n se cancelar y el registro no se borrar Como par metro recibe un objeto que t
83. ss Lst Pruebas Inherits System Web UlI Page Public masterpage As Reporte Protected Sub Page _Load ByVal sender As Object ByVal e As System EventArgs Handles Me Load Instancia de la clase masterpage ReporteBase masterpage CType Page Master Reporte Asigna los atributos a la clase base masterpage lblTitulo ld Instancia del objeto de reglas del negocio Dim obr As New Inicializaci n de la p gina ReporteBase enlazada al objeto de negocios 23 a sa A Las tareas que figuran con la vi eta en Ke OAK son obligatorias 630 StartFrame Net Framework Manual Programaci n met aran versi n 1 10 2013 MasterPage InicializarPagina obr End Sub Protected Overloads Sub OnPrelnit Handles Me Prelnit Aplicacion de Tema If Not Session Tema Is Nothing Then Page Theme Session Tema ToString End If End Sub End Class 6 Existen varios eventos que podr n utilizarse en el caso de que desee obtener el origen de datos desde otra fuente diferente a un store procedure o validar dicho set de datos En cualquier caso deber crearse un manejador para cada evento en cuesti n ver documentaci n de ayuda online para mayores detalles 640 StartFrame Net Framework Manual Programaci n net Framework versi n 1 10 2013 Interfaz Web JS A continuaci n se especifica el procedimiento para la arquitectura JSWeb Application la cual utiliza el patr n MVC Modelo Vista Controlador Esta plantilla hace
84. t lt siteMapNode url ManagerPages Lst_Tracking aspx title Log de Accesos description Informes de auditor a del sistema gt lt siteMapNode gt lt siteMapNode gt lt siteMapNode url title Herramientas description M dulo de Utilitarios gt lt siteMapNode url ManagerPages Abm Reportes aspx title Reportes description Generador autom tico de reportes gt lt siteMapNode url ManagerPages Abm _Filtro aspx title Filtros description Filtros a utilizar en los reportes generados gt lt siteMapNode url FwrkPages Temas aspx title Temas description Selec Tema gt lt siteMapNode gt lt siteMapNode gt lt siteMap gt Interfaz Web JS A continuaci n se especifica el procedimiento para la arquitectura JSWeb Application Al igual que en la plantilla web ASP no existe el concepto de m dulos como tal sino que deber crear una p gina principal con un selector de m dulos que redireccione a los correspondiente subsitios o bien manejar este concepto dentro del mismo men de la aplicaci n si no son m dulos demasiado grandes Edici n del men El men contenido en esta plantilla est formado por un control del tipo treeview que se alimenta de un archivo javascript que se encuentra en la carpeta Menu del web site Para actualizar el contenido de los tems de men submen es y opciones finales simplemente deber actualizar el archivo men js el cual posee una escritura de nodos encadenados
85. terfaz Windows DeSKtOPicnisrdaai tii da dai dat 50 Interfaz Web ASP Interfaz Web JS cid PROCESOS DIALOGOS WIZARD ds 51 Interfaz Windows DeskKtOP ecosciocomsiiiiiin anian anaa caida aAa do edad dean dans cestas 51 Dd A ai iaa Nee E A A A RA A AAA Ra Interfaz JSWeb A A E Interfaz Windows Deskto Pisani ad EA 59 Parte A NO Parte Il Reporte Interfaz Web ASP Interfaz Web JS irissriissnsrsiss 20 StartFrame Net Framework Manual Programaci n met aran versi n 1 10 2013 CONVENCIONES DE DESARROLLO Si bien no se trata de reglas formales se sugiere tener presente las siguientes pr cticas adoptadas por los mejores desarrolladores del mercado para la escritura de c digo W Documentar todos los bloques de c digo con t tulos y comentarios a fin de que cualquier programador que no sea el que escribi el c digo pueda interpretarlo perfectamente Debe indicarse principalmente el objetivo del proceso los par metros pasados indicando su funci n posibles valores y el valor de retorno de la rutina si corresponde Redactar los comentarios en un lenguaje impersonal No s lo se comentar n los encabezados de los procesos sino que dentro de los mismos deber comentarse cada bloque de c digo para que se pueda determinar lo que se est haciendo Siempre que sea posible se comenzar el comentario con una identificaci n que ligue el bloque de c digo a un punto en particular de la especificaci n de dise o si hubiera M
86. top Si desea personalizar a n m s la interfaz Windows Desktop puede hacer uso de la t cnica de dependency injection para reemplazar los formularios est ndares que provee Startframe con nuevos formularios Esto es posible porque la interfaz desktop est dise ada utilizando el patr n dependency injection mediante Microsoft Unity Para utilizarlo lo que debe hacer es reemplazar el archivo unity config que est en SharedSources por el suyo propio reapuntando todos los formularios de la interfaz de usuario a los nuevos formularios los 3 cuales deber an estar contenidos en un nuevo proyecto de UF Para crear los nuevos formularios deber heredar de los existentes en US dll y modificarlos a su gusto Luego deber editar el archivo unity config reapuntando el llamado del formulario original al nuevo formulario Tener presente que debe existir una entrada en el archivo de configuraci n por cada constructor que tenga la clase lt configuration gt lt configSections gt lt section name unity type Microsoft Practices Unity Configuration UnityConfigurationSection Microsoft Practices Unity Configuration gt lt configSections gt lt unity xmlns http schemas microsoft com practices 2010 unity gt lt assembly name Common gt lt container gt lt register type Splash US Ini mapTo US CustomUI SplashCustom US CustomUI gt lt register gt lt register type WPMain US ini mapTo WPMain US ini gt
87. tos acciones que se produzcan en la vista y est n asociados al modelo antes especificado Indicar el espacio de nombres en el cual se organiza un nombre nico para la clase e instanciar por un lado el objeto de negocios y por el otro la p gina web con la vista del modelo Namespace Handlers Mantenimiento Articulos Public Class Rubros Inherits baseHandler Public Sub New _Abm New StartFrame BR Web _Pagina UserPages ase End Sub End Class End Namespace E Crear una nueva p gina con la vista que desplegar el modelo Esta tarea es la m s compleja de todas ya que para poder lograr la excelente performance de la aplicaci n la interfaz de usuario est ntegramente creada en Javascript A continuaci n se muestra un ejemplo simple de un abm Para dibujar pantallas m s sofisticadas deber consultar la documentaci n de ayuda del amplio set de 3 sje 11 E P A controles javascript utilizados En el siguiente ejemplo puede verse que se crea una pantalla con un 10 Las tareas que figuran con la vi eta en Je M3 de son obligatorias 11 al ia A Ver documentaci n adicional en http www sencha com products extjs 340 StartFrame Net Framework Manual Programaci n versi n 1 10 2013 met Framework nombre nico que hereda de ABMbase un t tulo para la p gina un modelo y un ordenamiento predeterminado para los registros de la grilla A continuaci n se define un WindowPanel que
88. ue el mismo se dispara cuando el usuario confirma la operaci n 530 5 E S F Eh i a AA e StartFrame Net Framework Manual Programaci n H J net Framework versi n 1 10 2013 Wizards Para el uso de esta clase se har menci n nicamente a la parte correspondiente a la capa de usuario ya que puede utilizar cualquier componente de negocios con el cual el wizard podr a enlazarse En l neas generales su uso es muy similar a los Di logos y puede decirse que deber n realizarse los i 16 E T V j mismos pasos mencionados en Abms con algunas salvedades las cuales se detallan a continuaci n Los ejemplos dados a continuaci n har n referencia al enlace del wizard con un componente de negocios del tipo ClaseBase sin embargo puede enlazarse con cualquier tipo de componente 1 Agregar la interfaz puede que no se requiera una nueva interfaz ya que el di logo suele utilizar un componente de negocios ya existente 2 Agregar el formulario en este caso heredado de StartFrame US Wizard E Declaraci n de la clase var a dependiendo del tipo de uso que se le quiera dar Imports StartFrame BR Interfaces Procedencia de las referencias utilizadas Namespace Namespace de la clase Public Class Nombre de la clase Inherits Herencia Dim As Componente de negocios Para poder utilizar BR Abm Protected dataset As DataSet Protected tablaPrincipal As String End Class End Namespace 4 Vinculaci n a
89. ulario heredado de los primeros y luego basar sus formularios en estos ltimos ya que en este caso es innecesaria la inyecci n de dependencia 150 StartFrame Net Framework Manual Programaci n net Framework versi n 1 10 2013 Men es Esta parte del manual explica c mo agregar o editar un tem de men e incluso c mo agregar un nuevo m dulo con su propio men La operatoria var a de acuerdo a la arquitectura utilizada Interfaz Windows Desktop A continuaci n se especifica el procedimiento para cualquiera de las arquitecturas Windows Desktop Agregado de un nuevo m dulo StartFrame en su plantilla de soluci n para Windows Desktop ofrece una barra tipo Outlook que permite ingresar los subm dulos del sistema y agrupar los mismos en reas o m dulos m s generales Para ello tan s lo deber agregar las caracter sticas del nuevo m dulo en el archivo MenuModulos xml respetando los tags del xml y sus atributos e Name Nombre del m dulo o subm dulo el cual figurar en el control de OutLook y en el t tulo del men una vez ejecutado e Image Etiqueta del TAG que contiene la imagen dentro del archivo de recursos App resources Deber n tratarse de conos de 48x48 en 256 colores e Descrip Descripci n de ayuda que aparecer en la ventana de display e MenuXml Nombre del archivo XML que contiene las opciones del subm dulo lt xml version 1 0 encoding UTF 8 gt lt MainMenu gt lt Menu Na
90. uso de un amplio set de extensiones Javascript que permiten dibujar la interfaz de usuario en runtime utilizando para ello una serie de controles sumamente ricos los cuales pueden descargarse gratuitamente desde http www sencha com products extjs En este caso al igual que en la interfaz desktop lo m s aconsejable es utilizar la misma plantilla base que para los abms pero sin habilitar las funciones de alta baja ni modificaci n con lo que se puede consultar la informaci n bindeada a un modelo pudiendo ordenar la misma filtrarla por cualquier dato visible y exportarla En resumen deber Crear el nuevo modelo Crear el controlador que enlaza la vista con la p gina Crear la p gina con la vista del modelo T N Deshabilitar desde el sistema de seguridad interno las opciones de alta baja modificaci n de registros 650
Download Pdf Manuals
Related Search
Related Contents
取扱説明書 Incipio PW-172 mobile device charger Communiqué de presse Une Journée mode d`Emploi pour bien Betriebsanweisung Edimax GN-621U HQM-77 シリーズ Owner`s Manual - Backyard Pool Superstore Bilan de compétences Kawasaki 840015 User's Manual Copyright © All rights reserved.
Failed to retrieve file