Histórico da Página
...
Compatível Países: | Todos |
Sistemas Operacionais: | Todos |
Compatível às Bases de Dados: | Todos |
Nível de Acesso: | Nível 1 (Acesso Clientes) |
Idiomas: | Português, Inglês, Espanhol |
Versão | P10 R1.4 |
Um submodelo do tipo Grid permite manipular diversos registros por
vez. Ele tem um relacionamento do tipo Nx1 ou NxM com outros submodelos.
A Pós-validação será realizada na validação do submodelo no momento da
gravação dos dados e durante a inclusão de uma nova linha.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
bLinePost | Bloco de Código | Bloco de código de pós validação da linha | X |
O bloco será invocado durante qualquer tentativa de atribuição
de valor na linha.
O Bloco deve retornar um valor lógico, caso retorne falso
a atribuição de valor não será permitida.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
bLinePre | Bloco de Código | bloco código de pré validação da linha | X |
Este método é utilizado para compatibilizar com o Browse antigo do Protheus
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
lUseCols | Lógico | Define se ira trabalhar com acolsaCols/aheaderaHeader. | .T. |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
oFormModelStruct | Objeto | Objeto com a estrutura de dados. | X |
[1] aHeader
[2] aCols
adicionar novas linhas.
O método retorna a quantidade total de linhas da grid. Se a grid já possui 2 linhas e
tudo correu bem na adição da linha, o AddLine retornara 3, se ocorreu algum problema
retornará 2, pois a nova linha não foi inserida.
Os motivos para a inserção não ser bem sucedida podem ser algum campo obrigatório não
informado, a pós-validação da linha retornou falso ou o grid atingiu a quantidade
máxima de linhas, por exemplo.
Se a linha for incluida com sucesso o grid posiciona na mesma.
Length
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
nLine | Numérico | Indica a linha a ser verificada | ::NLINE |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
lSet | Lógico | Especifica se a inserção deve esta ligada .F. ou desligada .T. | .T. |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
lSet | Lógico | Especifica se a alteração deve esta ligada .F. ou desligada .T. | .T. |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
lSet | Lógico | Especifica se a exclusão deve esta ligada .F. ou desligada .T. | .T. |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
nLine | Numérico | Indica a linha a ser verificada | ::NLINE |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
nLine | Numérico | Numero da linha | 0 |
estiver invalida
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
nLine | Numérico | Numero da linha do grid que será utilizado como DEFAULT | X |
SetLine
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cId | Caracteres |
Código/Nome do atributo da folha de dados | X | ||
xValue | Qualquer | Valor a ser |
atribuído | ::ADATAMODEL[::NLINE][MODEL_GRID_DATA][MODEL_GRIDLINE_VALUE][NIDFIELD] |
de função ( CallStack ). Diferentemente do metodo método SetValue, este método não executa a validação do campo, mas fornece
todas as indicações de que ele foi atualizado. Ele é muito utíl útil quando dentro de uma validação de campo, necessitamos
alterar valores de outros campos, sem que isto implique em validavalidá-los.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cId | Caracteres |
Código/Nome do atributo da folha de dados | X | ||
xValue | Qualquer | Valor a ser |
atribuído |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cId | Caracteres |
Código/Nome do atributo da folha de dados | X | ||
nLine | Numérico | Numero da linha | ::NLINE |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
lVldOwner | Lógico | Verifica se será validado o submodelo e seus filhos (.T.) ou se será validado apenas o contexto do submodelo (.F.) | .T. | X |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
lVldOwner | Lógico | Verifica se será validado o submodelo e seus filhos (.T.) ou se será validado apenas o contexto do submodelo (.F.) | .T. | X |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cId | Caracteres |
Código/Nome do atributo da folha de dados | X |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
aLoadFilter | Array | Estrutura de filtro [n] Array [n][1] ExpC: ID do campo do submodelo de destino [n][2] ExpC: Valor que o campo deve usar no filtro [n][3] Operador Relacional (Opcional, default é MVC_LOADFILTER_EQUAL ) MVC_LOADFILTER_EQUAL Igual a MVC_LOADFILTER_NOT_EQUAL Diferente de MVC_LOADFILTER_LESS Menor que MVC_LOADFILTER_LESS_EQUAL Menor que ou Igual a MVC_LOADFILTER_GREATER Maior que MVC_LOADFILTER_GREATER_EQUAL Maior que ou Igual a MVC_LOADFILTER_CONTAINS Contém MVC_LOADFILTER_NOT_CONTAINS Não Contém MVC_LOADFILTER_IS_CONTAINED Está Contido Em MVC_LOADFILTER_IS_NOT_CONTAINED Não Está Contido Em Para os operadores relacionais MVC_LOADFILTER_IS_CONTAINED e MVC_LOADFILTER_IS_NOT_CONTAINED o 2o elemento de cada array deverá ser uma array em formato caracter oModel:GetModel( 'ZA2DETAIL' ):SetLoadFilter( { { 'ZA2_AUTOR', "{'000500','000501','000502','000503','000504'}", MVC_LOADFILTER_IS_CONTAINED } } ) [n][4] Operador Logico (Opcional, default MVC_LOADFILTER_AND ) MVC_LOADFILTER_AND "e" MVC_LOADFILTER_OR "ou" | {} | ||
cLoadFilter | Caracteres | Expressao Expressão de filtro - Se for informado o parâmetro de expressão de filtro o 1o parâmetro será ignorado - Deve-se prever no código que a expressão tenha a sintaxe para banco de dados ou não, conforme o caso. | "" |
// Para dado igual a
oModel:GetModel( 'IDGRID' ):SetLoadFilter( { { 'ZA2_AUTOR', "'000500'" } } )
// Para dado igual a um ou outro valor
oModel:GetModel( 'IDGRID' ):SetLoadFilter( { { 'ZA2_AUTOR', "'000500'" }, { 'ZA2_AUTOR', "'000600'",, MVC_LOADFILTER_OR } } )
// Para dado diferente
oModel:GetModel( 'IDGRID' ):SetLoadFilter( { { 'ZA2_AUTOR', "'000500'", MVC_LOADFILTER_NOT_EQUAL } } )
// Para dado maior que valor
oModel:GetModel( 'IDGRID' ):SetLoadFilter( { { 'ZA2_VALOR', "0", MVC_LOADFILTER_GREATER } } )
// Para dado entre um valor e outro
oModel:GetModel( 'IDGRID' ):SetLoadFilter( { { 'ZA2_VALOR', "0", MVC_LOADFILTER_GREATER_EQUAL }, { 'ZA2_VALOR', "100", MVC_LOADFILTER_LESS_EQUAL } } )
// Para dado que contém um valor
oModel:GetModel( 'IDGRID' ):SetLoadFilter( { { 'ZA2_AUTOR', "'0005'", MVC_LOADFILTER_CONTAINS } } )
// Para dado que está contido
oModel:GetModel( 'IDGRID' ):SetLoadFilter( { { 'ZA2_AUTOR', "{'000500','000501'}", MVC_LOADFILTER_IS_CONTAINED } } )
// Usando uma expressão
oModel:GetModel( 'IDGRID' ):SetLoadFilter( , " ( ZA2_AUTOR >= '000500' .AND. ZA2_AUTOR < '000600' ) .OR. ZA2_VALOR > 0 " )
[1] cIdField do submodelo de destino
[2] cIdField ou expressão do submodelo de destino
[3] Operador
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
aUnique | Array | Array unidimensional com os IDs dos campos | X | ||
bUnique | Bloco de Código | Bloco de código de execução quando há linha duplicada. O bloco deve retornar um valor lógico. |
oModel:GetModel( 'ZA2DETAIL' ):SetUniqueLine( { "ZA2_AUTOR" , "ZA2_ITEM"} )
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
lDelAllLine | Lógico | Indica se todas as linhas podem ser apagadas | .F. |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
oGrid | Objeto | Objeto do tipo FWFormGridModel que será usado como base para a cópia. | X |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
lOnlyActive | Lógico | Se for verdadeiro retorna só a quantidade de linhas ativas (não deletadas) | .F. |
como parametroparâmetro. Se houver mais de uma linha com os valores procurados,
o método irá retornar a primeira linha que for encontrada.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
aBusca | Array | Array com os dados de busca na seguinte estrutura: [n] [n][1] ExpC: Id do campo [n][2] ExpX: ConteudoConteúdo | X | ||
lDeleted | Lógico | Indica se considera as linhas deletadas na busca | .F. | ||
lLocate | Lógico | Indica se deve posicionar na linha encontrada | .T. |
oGrid:SeekLine({{"XXH_MODULO",cModule},{"XXH_CODIGO",cCode}})
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cID | Caracteres | Codigo Código do Field | X | ||
nLine | Numérico | Numero da Linha | ::NLINE |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
nMax | Numérico | Valor máximo | X |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
nLine | Numérico | Linha a analisar | ::NLINE |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cId | Caracteres | Codigo/Nome do atributo da folha de dados | X | ||
nLine | Numérico | Indica a linha | ::NLINE | ||
lClearTrigger | Lógico | Indica se limpa os campos gatilhados | .F. |
criada pelo método addLine.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
nLine | Numérico | Indica a linha a ser verificada | ::NLINE |
Se a operação for inclusão o when dos campos passará a ser falso
e se for qualquer outra operação os campos não permitirão edição.
Além disse não permite inserção e nem exclusão de linhas.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
nLine | Numérico | Indica a linha a ser verificada | ::NLINE |
nID ID do registro
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cIdField | Caracteres | Codigo/Nome do atributo da folha de dados | X |
com o próprio objeto. Os dois objetos devem possuir a mesma estrutura, pois esse
método compara apenas os dados, supondo que a estrutura seja a mesma.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
aCompare | Array | - Array que deve ser passado por referencia, para que o metodo método salve as informações de diferencasdiferenças no formato: [n][1] - ExpC: ID do subModelo [n][2] - ExpC: Tipo (G) [n][3] - ExpA: SubArray com os campos alterados [n][3][1] - ExpN: Número da linha no submodelo do Model [n][3][2] - ExpC: Operação da linha (3 - Inclusão , 4 - Alteração ou 5 - Exclusão ) [n][3][3][1] - ExpC: ID do Campo [n][3][3][1] - ExpX: Valor do Modelo(self) [n][3][3][1] - ExpX: Valor do modelo passado no segundo parametroparâmetro | X | ||
oFWFormGridModel | Objeto | - Outro FWFormGridModel para ser feita a comparação, ele deve possuir exatamente a mesma estrutura. | X |
serão movidos para a linha destino e os dados da linha destino serão
movidos para a linha origem.
Se a linha atualmente posicionada é a origem ou o destino, o número
da linha posicionada irá ser mudado para o numero da origem ou do
destino, porque os dados são trocados porém a linha ainda precisa
ser validada.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
nLineFrom | Numérico | Numero da linha de origem | ::NLINE | ||
nLineTo | Numérico | Numero da linha de destino | ::NLINE |
oModel:GetModel("ZA2DETAIL"):LineShift(5,6)
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
nType | Numérico | Tipo da informação: MODEL_GRID_LINECHANGED_ALL Todas as linhas modificadas MODEL_GRID_LINECHANGED_INSERTED Somente as linhas inseridas MODEL_GRID_LINECHANGED_UPDATED Somente as linhas alteradas MODEL_GRID_LINECHANGED_DELETED Somente as linhas excluidas | MODEL_GRID_LINECHANGED_ALL |
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
nLine | Numérico | Numero da Linha | X |
do campo na estrutura. Use esse método somente quando possuir um
grande volume de processsamento processamento na rotina.
Para determinar a posicao posição do campo utilize o metodo método GetArrayPos da
estrutura de dados do submodelo (FWFormModelStruct).
O valor será atribuido atribuído para a linha que estiver posicionada no grid.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cId | Caracteres | CodigoCódigo/Nome do atributo da folha de dados | X | ||
xValue | Qualquer | Valor a ser atribuidoatribuído |
aPosFields := oStruZA2:GetArrayPos("ZA2_MUSICA", "ZA2_ITEM")
oModel:GetModel("ZA2DETAIL"):LdValueByPos(aPosFields[1], "00001")
oModel:GetModel("ZA2DETAIL"):LdValueByPos(aPosFields[2], "1")
GetValueByPos
GetArrayPos -> FWFormModelStruct
na estrutura, utilize ele somente quando a rotina possui um grande volume
processamento. Para saber a posicao posição do campo use o metodo método GetArrayPos
do objeto de estrutura de dados (FWFormModelStruct).
Atenção!! Esse metodo nao método não verifica se o campo existe.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
nIdPos | Numérico | Posicao Posição do campo na estrutura de dados | X | ||
nLine | Numérico | Linha do grid onde o valor será atribuidoatribuído | ::NLINE |
aPosFields := oStruZA2:GetArrayPos("ZA2_MUSICA", "ZA2_ITEM")
cMusica := oModel:GetModel("ZA2DETAIL"):GetValueByPos(aPosFields[1], 1)
cItem := oModel:GetModel("ZA2DETAIL"):GetValueByPos(aPosFields[2], 2)
GetArrayPos -> FWFormModelStruct
LdValueByPos
do submodelo.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
aFldNoCopy | Array | Array unidimensional com o IDs do campos que não serão copiados | X |
oModel:GetModel("ZA2DETAIL"):SetFldNoCopy( { 'ZA2_MUSICA', 'ZA2_ITEM' } )
Limpa (apaga da memoria) todo conteúdo do sub-formulário, e de todos os seu filhos.
ATENÇÃO:
Esse método não pode ser utilizado em Modelos que venham de Banco de Dados, no modo de operação ALTERAÇÃO, pois seria gerada inconsistência na base de dados, tendo em vista que este método NÃO APAGA os registros da base.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
lInit | Lógico | Indica se deve carregar os inicializadores padrão | X | ||
lBlankLine | Lógico | Indica se deve criar a linha em branco |
Se veio de banco não permite.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
cFieldID | Caracteres | cFieldID | X |
Painel | ||
---|---|---|
|
Sintaxe |
ClearData( |
lInit , |
lBlankLine ) → |
"SETINSERTLINE"
Limpa(apaga da memória) todo o conteúdo do sub-formulário, e de todos os seu filhos. |
Parâmetros
|
|
|
"SETINSERTLINE"
Veja também
FWObservable
|
SetForceLoad
Sintaxe
FWFORMGRIDMODEL():
SetForceLoad(
lInitlForce ) →
Descrição
Informa que o bloco de carga(load) do subformulário será executado em todas as Operações, inclusive na Inclusão, que não é o padrão.
Parâmetros
Nome | Tipo | Descrição | Obrigatório |
---|
lForce | Lógico |
Se .T. irá executar o bLoad em todos |