Saltar al contenido

Consejos para Trabajar con Columnas Binarias

Por motivos de rendimiento con las aplicaciones Vinyl, solo agregue una columna binaria a un objeto comercial si va a utilizar esa columna en un control de archivo. Si está creando un objeto de negocio con una tabla que incluye columnas binarias, no seleccione el botón Todos para agregar todas las columnas a menos que ese objeto se utilice para mostrar un control de archivo en un panel. Vale la pena crear Business Objects específicamente para usarlos en paneles donde se carga/descarga un archivo. Además, considere si pudo haber agregado uno a una tabla de usuario/parámetro, y podría haberlo agregado a otros Business Objects y luego seleccionar todas las columnas.

Si tiene un panel de varias filas (MRP) con 25 registros que regresan y hay un campo binario seleccionado en el objeto comercial detrás de ese panel, recuperará los 25 archivos cada vez que se represente ese panel. Si tiene 4 archivos binarios en ese objeto de negocio, recuperará 100 archivos cada vez que se represente ese panel.

Si desea que un archivo se pueda descargar desde un MRP, considere llamar al botón de descarga en una página oculta para que no recupere el archivo como parte de la representación del panel MRP.

A continuación se muestra una consultar que puede ejecutar en su servidor y que encontrará ALGUNOS de los archivos en un objeto comercial detrás de un panel donde el archivo no se usa en un control:

SELECT        TOP (100) PERCENT Ui_Control_1.Name AS Page, dbo.Ui_Control.Name AS Panel, dbo.Db_Table.Name AS DataObjectName, dbo.Db_Column.Name AS ColumnName
FROM            dbo.Ui_Control INNER JOIN
                         dbo.Ui_Control AS Ui_Control_1 ON dbo.Ui_Control.RootControlId = Ui_Control_1.ControlId INNER JOIN
                         dbo.Db_Table ON dbo.Ui_Control.SourceTableId = dbo.Db_Table.TableId INNER JOIN
                         dbo.Db_Column ON dbo.Db_Table.TableId = dbo.Db_Column.TableId INNER JOIN
                         dbo.Db_Column AS Db_Column_1 ON dbo.Db_Column.TargetColumnId = Db_Column_1.ColumnId INNER JOIN
                         dbo.Db_StorageDataType ON Db_Column_1.StorageDataTypeId = dbo.Db_StorageDataType.StorageDataTypeId LEFT OUTER JOIN
                         dbo.Ui_Control AS Ui_Control_2 ON dbo.Ui_Control.ControlId = Ui_Control_2.PanelControlId AND dbo.Db_Column.ColumnId = Ui_Control_2.SourceColumnId
WHERE        (dbo.Ui_Control.ControlTypeId = '81d20b00-15b2-f8c3-7fe1-d889d9c7e95f') AND (dbo.Db_StorageDataType.Name = N'binary') AND (Ui_Control_2.ControlId IS NULL)
ORDER BY DataObjectName

Nota

Al recuperar los resultados del objeto de negocio detrás de un panel, solo recuperará las columnas necesarias para los controles A MENOS que esté utilizando formato condicional, en cuyo caso recupera todas las columnas para la lógica condicional.