Custom Iza Ç Ão Data Set
Custom Iza Ç Ão Data Set
Custom Iza Ç Ão Data Set
Dataset
Dezembro/2010
Copyright © 2009 TOTVS S.A. Todos os direitos reservados.
Nenhuma parte deste documento pode ser copiada, reproduzida, traduzida ou
transmitida por qualquer meio eletrônico ou mecânico, na sua totalidade ou em
parte, sem a prévia autorização escrita da TOTVS S.A., que reserva-se o
direito de efetuar alterações sem aviso prévio. A TOTVS S.A não assume
nenhuma responsabilidade pelas conseqüências de quaisquer erros ou
inexatidões que possam aparecer neste documento.
TOTVS S.A.
Av. Santos Dumont, 831, Joinville, SC, CEP 89.222-900
i
Índice
Índice................................................................................................................. i
CAPÍTULO 1 Introdução...........................................................................1
CAPÍTULO 1
Introdução
Dataset é a união dos dados físicos e lógicos em uma única estrutura com o
objetivo de prover uma representação mais próxima de uma determinada
funcionalidade / caso de uso, e também disponibilizando os chamados campos
virtuais, permitindo que o desenvolvedor consiga trafegar informações tanto
do Progress para o Flex como também permitir o contrário.
Estrutura
Objetivo
CAPÍTULO 2
Ensinar como realizar a customização dos dados que serão exibidos e também
armazenados no banco de dados através de uma camada intermediária, assim
sendo, podendo ajustar valores dos campos ou até mesmo passar valores que
não encontram-se na tabela física através dos chamados campos virtuais.
afterAllSelectedRecords
Tem por objetivo ser executada após todos os registros (apenas os registros da
página corrente) terem sido lidos para que o usuário possa realizar
customizações em registros específicos (navegar para um determinado
registro, alterar informação de um registro com base no valor de outro, etc)
O programa abaixo verifica o nome da tabela que está sendo lida para não
realizar o processo abaixo para as tabelas de referência. Também lê todos os
registros e altera a coluna “teste” com um contador que é incrementado de 9
em 9.
*******************************************************************/
DEFINE INPUT PARAMETER tableName AS HANDLE.
DEFINE INPUT-OUTPUT PARAMETER ttDataset AS HANDLE.
queryHandle:SET-BUFFERS(bufferHandle).
queryHandle:QUERY-PREPARE("for each ttDataset").
queryHandle:QUERY-OPEN().
queryHandle:GET-FIRST(NO-LOCK).
DO WHILE(bufferHandle:AVAILABLE):
contador = contador + 9
hTeste:BUFFER-VALUE = contador.
END.
queryHandle:GET-NEXT(NO-LOCK).
END.
afterPersistRecord
Tem por objetivo ser executada após ter realizado qualquer tipo de persistência
(CREATE, UPDATE e DELETE) para que possa ser realizado customizações
após a realização da persistência e/ou correções na RowErrors.
Exemplo
O programa abaixo altera o valor da coluna “name” da tabela adicionando os
valores das colunas “teste” e “teste2” que eram do Dataset para a tabela física.
*******************************************************************/
DEFINE INPUT PARAMETER pType AS CHARACTER NO-UNDO.
DEFINE INPUT-OUTPUT PARAMETER ttDataset AS HANDLE.
DEFINE INPUT-OUTPUT PARAMETER RowObject AS HANDLE.
DEFINE INPUT PARAMETER hBoHandle AS HANDLE.
DEFINE INPUT-OUTPUT PARAMETER TABLE FOR RowErrors.
afterSelectedRecord
Tem por objetivo ser executada após cada registro ter sido lido para que o
usuário possa realizar customizações no registro (gerar informação de um
campo virtual baseado nos valores do registro, validar a informação de uma
coluna da tabela, etc)
O programa abaixo verifica o nome da tabela que está sendo lida para não
realizar o processo abaixo para as tabelas de referência. E também altera o
valor da coluna “teste2” para o valor 15 e também adiciona na coluna “nome”
o prefixo “[CUSTOM]”.
*******************************************************************/
DEFINE INPUT PARAMETER tableName AS CHARACTER.
DEFINE INPUT-OUTPUT PARAMETER ttDataset AS HANDLE.
hDSTeste2 = getDatasetFieldHandle("teste2").
IF VALID-HANDLE(hDSTeste2) THEN DO:
hDSTeste2:BUFFER-VALUE = 15.
END.
Parâmetros
Objetivo
hDSNome = getDatasetFieldHandle("nome").
IF VALID-HANDLE(hDSNome) THEN DO:
hDSNome:BUFFER-VALUE = "[CUSTOM] " + hDSNome:BUFFER-VALUE.
END.
beforePersistRecord
Tem por objetivo ser executada antes de realizar qualquer tipo de persistência
(CREATE, UPDATE e DELETE) para que possa ser realizado a conversão
dos valores virtuais para colunas físicas.
Exemplo
O programa abaixo altera o valor da coluna “name” da tabela adicionando os
valores das colunas “teste” e “teste2” que eram do Dataset para a tabela física.
*******************************************************************/
DEFINE INPUT PARAMETER pType AS CHARACTER NO-UNDO.
DEFINE INPUT-OUTPUT PARAMETER ttDataset AS HANDLE.
DEFINE INPUT-OUTPUT PARAMETER RowObject AS HANDLE.
DEFINE INPUT PARAMETER hBoHandle AS HANDLE.
*******************************************************************/
queryString = queryHandle:PREPARE-STRING.
queryHandle:QUERY-PREPARE(queryString).
Exemplo
Parâmetros
Objetivo
prepareDatasetFields
Tipo PROCEDURE
Tipo PROCEDURE
getDatasetFieldHandle
Tipo FUNCTION
getRowObjFieldHandle
Tipo FUNCTION
Pontos de UPC
Por padrão, foram selecionadas algumas procedures desta fachada para terem
por padrão pontos de UPC nativamente, isso não quer dizer que o
desenvolvedor desta camada não pode criar outros pontos que venha a ser
necessário para ele e para a solução que este está desenvolvendo.
Para instruções de como criar uma UPC e como registra-la consulte a
documentação referente a UPC.