Ir para o conteúdo

Dicas para Trabalhar com Colunas Binárias

Por uma questão de desempenho com App Builder apps, adicione uma coluna binária a um Business Object somente se você for usar essa coluna em um controle de arquivo. Se você estiver criando um Business Object com uma tabela que inclui colunas binárias, não selecione o botão All para adicionar todas as colunas, a menos que esse objeto seja usado para exibir um controle de arquivo em um painel. Vale a pena criar Business Objects especificamente para usar em painéis onde um arquivo é carregado/baixado. Além disso, considere se você pode ter adicionado um a uma tabela de usuário/parâmetro e poderia tê-lo adicionado a outros Business Objects e então selecionado todas as colunas.

Se você tiver um Multi-row Panel (MRP) com 25 registros retornando e houver um campo binário selecionado no Business Object atrás desse painel, ele recuperará todos os 25 arquivos toda vez que esse painel for renderizado. Se você tiver 4 arquivos binários nesse Business Object, ele recuperará 100 arquivos toda vez que esse painel for renderizado.

Se você quiser que um arquivo possa ser baixado de um MRP, considere chamar o botão de download em uma página oculta para que ele não recupere o arquivo como parte da renderização do painel MRP.

Abaixo está uma consultar que você pode executar no seu servidor e que encontrará ALGUNS arquivos em um Objeto de Negócio atrás de um painel onde o arquivo não é usado em um controle:

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

Ao recuperar os resultados do Business Object atrás de um painel, ele recuperará apenas as colunas necessárias para os controles, A MENOS que você esteja usando formatação condicional, nesse caso, ele recupera todas as colunas para a lógica condicional.