Вы находитесь на странице: 1из 1

Sintaxe RDMAKE para acesso ao contedo de variveis no GETDADOS (itens)

GETDADOS o nome do objeto usado pelo sistema SIGA Advanced para o cadastro de itens, como por exemplo os itens no cadastro de pedidos de venda. O objeto GETDADOS se utiliza de dois arrays para manter as informaes: aHeader e aCols. O array aHeader contem informaes sobre as colunas, tais como descrio, nome do campo, validao, etc, sendo que as rotinas que se utilizam do GETDADOS so as responsveis pela montagem deste array. No caso de gatilhos, que so executados dentro de um ambiente aonde estes arrays j foram construdos, basta referenciar-se a eles para ter-se o acesso ao contedo de todos os campos, de acordo com as definies do Configurador. A estrutura do array aHeader a seguinte: aHeader := { {Ttulo, Campo, Picture, Tamanho, Decimal, Validao,; Usado, Tipo, Alias, Contexto }, {...}, ... } Este array construdo segundo a ordem estabelecida no Configurador. Portanto, para obterse a posio (ou seja, a coluna) de determinado campo no grid de dados, pode-se utilizar a seguinte sintaxe: nPosCod := aScan(aHeader,{ |x| Upper(AllTrim(x[2])) == C6_PRODUTO }) Esta sintaxe se utiliza da funo aScan do Clipper para buscar no array aHeader a posio do campo C6_PRODUTO. Esta posio ser atribuda varivel nPosCod. Note que basta substituir a varivel e o nome do campo para obter outras variveis com colunas de todos os campos desejados. Se o campo no estiver em uso, ou no existir, o contedo retornado pela funo aScan ser 0 (zero). Por fim, aps ter-se as colunas dos campos desejados, pode-se obter ou mesmo alterar o contedo de qualquer campo no grid atravs do array aCols. Este um array do tipo Linha x Coluna, que contem todas as linhas de dados. Pode-se acessar um campo atravs da sintaxe: uConteudo := aCols[nLinha,nColuna] Pode-se acessar qualquer linha de dados ou a linha corrente, que indicada pela varivel chamada n. Por exemplo, as seguintes linhas de programa demonstram um como usar estas tcnicas em um gatilho para obter o cdigo do produto do item corrente (este exemplo referese aos itens do pedido de venda) e, aps pesquisar no SB1 (cadastro de produtos), sugerir a quantidade vendida a partir de um campo especfico: // Colunas... nPosCod := aScan(aHeader,{ |x| Upper(AllTrim(x[2])) == C6_PRODUTO }) nPosQtd := aScan(aHeader,{ |x| Upper(AllTrim(x[2])) == C6_QTDVEN }) // Obtm o cdigo do produto cCodigo := aCols[n,nPosCod] // Pesquisa dbSelectArea(SB1) dbSetOrder(1) dbSeek(xFilial(SB1)+cCod) // Altera a quantidade no grid aCols[n,nPosQtd] := SB1->B1_QTSUGER // Campo especfico com a quantidade padro __Return(SB1->B1_QTSUGER) Para uma melhor compreenso, voc pode analisar os programas chamados RDMOD2.PRX e/ou RDMOD3.PRX que acompanham o Siga. Eles se encontram no diretrio principal do sistema (geralmente \SIGAADV\) e demonstram rotinas usadas para cadastros semelhantes ao Pedido de Vendas e que trabalham com os arrrays mencionados.

Вам также может понравиться