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

Aula 4

AxCadastro
MBrowse
Modelo2
Modelo3
Funes de
Tratamento de
Arquivos
AxCadastro,MBrowse,Modelo2,Modelo3
AxCadastro

AxPesqui()

AxVisual()

AxInclui()

AxAltera()

AxDeleta()
AxCadastro

AxInclui()

Ver 100_Cad.prw
AxCadastro

Cadastre algumas contas

No campo E-Mail, coloque: aprovador@tecnico.com.br

E no E-Mail1, coloque: aprovador1@tecnico.com.br


MBrowse
Permite uma flexibilidade maior que a AxCadastro

Precisa de duas variveis PRIVATE:

cCadastro Ttulo da janela.

aRotina array onde devem ser incluidos os botes (no mximo, 10).
Esses botes podem ser associados a qualquer funo,
inclusive AxInclui(), AxAltera(), etc.

Ver 110_TranM1.prw
Sobre variveis

Referncia
Nome := Joo a uma
varivel

atribui S Cria a
o de varivel
valor?
Varive N Nome := Joo
Atribui o S
valor l existe Cria como privada
varivel ?
Joo Var. Nome N Erro:
varivel
no existe
Existe
um N
arquivo
aberto ?
Arquivo Para no confundir variveis de memria com
S campos de arquivos, usa-se o ALIAS:
Codigo Nome
Joo M->Z1_Nome varivel de memria
Existe SZ1->Z1_Nome campo de arquivo
Grava o S campo N
valor no com
este
campo Arquivo
nome ?
Joo Campo Nome Codigo Descricao
Sobre variveis

JOSE
aprovador@tecnico.com.br

Para cada campo criada uma varivel de memria com o mesmo nome,
onde os dados digitados ficam inicialmente armazenados, antes de ser
efetivamente gravados no arquivo:
M->Z1_NOME JOSE
M->Z1_EMAIL aprovador@tecnico.com.br
M->Z1_EMAIL1
M->Z1_SALDO

Estas variveis so usadas em Validaes, Gatilhos, etc.


ExistChav(SZ1, M->Z1_NOME, 1)
Funes de tratamento de arquivos

Ver FuncMod2
Ver MarkBrow (exemplo do Baile)
Modelo 2
Enchoice

Nmero
Variveis
Nome Data de memria

Item Tipo Histrico Valor aHeader


GetDados

aCols
Modelo 2
Enchoice

Nmero
Variveis
Nome Data de memria

1 2 3 4
1 Item Tipo Histrico Valor Titulo
2 Z2_ITEM Z2_TIPO Z2_HIST Z2_VALOR Campo
3 @E 999,999,999.99 Picture
4 2 1 20 12 Tamanho
5 0 0 0 2 Decimal
6 Valid. aHeader
GetDados

7 Usado
8 C C C N Tipo
9 SZ2 SZ2 SZ2 SZ2 Arquivo
10 R R R R Contexto

1 01 D Deposito 10.000,00 .F.

2 02 S Saque 300,00 .F. aCols


3 03 S Saque 2.500,00 .F.

1 2 3 4 5
Modelo 2

Array aRotina

lRet
mBrowse()

.T.
Monta os parametros:
1. Variveis de memria
2. aHeader 3 5
Incluso nOpc Excluso
3. aCols
4. Enchoice
4

lRet := Modelo2() Alterao

Ver 120_TranM2.prw
Modelo 2

Criao do aCols para Incluso


Modelo 2 Criao do aCols para Incluso
Adiciona uma linha no aCols

1 2 3 4
1 Item Tipo Histrico Valor Titulo
2 Z2_ITEM Z2_TIPO Z2_HIST Z2_VALOR Campo
3 @E 999,999,999.99 Picture
4 2 1 20 12 Tamanho
5
6
0 0
Nr. colunas no aCols =
0 2 Decimal
Valid. aHeader
7
8 C
Nr.C colunas
C
no aHeader
N
+1 Usado
Tipo
9 SZ2 SZ2 SZ2 SZ2 Arquivo
10 R R R R Contexto
1 2 3 4 5
1 Nil Nil Array(?)
Array(5)
Nil Nil Nil

aCols

// Como cada elemento de aCols sempre contera um elemento a mais que o aHeader,
// adiciona em aCols um ARRAY com o "num.elementos de aHeader + 1", ou seja, 5 elementos.

AAdd(aCols, Array(Len(aHeader)+1))

4
Modelo 2 Criao do aCols para Incluso
Preenche o aCols de acordo com o Inicializador-Padro

1 2 3 4
1 Item Tipo Histrico Valor Titulo
2 Z2_ITEM Z2_TIPO Z2_HIST Z2_VALOR Campo
3 @E 999,999,999.99 Picture
4 2 1 20 12 Tamanho
5 0 0 0 2 Decimal
6 Valid. aHeader
7 Usado
8 C C C N Tipo
9 SZ2 SZ2 SZ2 SZ2 Arquivo
10 R R R R Contexto
1 2 3 4 5
1 Nil
Nil
D Nil Nil 0,00 Nil

aCols

// Preenche cada elemento desse array, de acordo com o Inicializador-Padrao do Dic.Dados.

For i := 1 To Len(aHeader)
Z2_ITEM
Z2_VALOR
Z2_HIST
Z2_TIPO
aCols[1][i] := CriaVar(aHeader[i][2])
2
3
4
1 2
3
4
1
Next
Modelo 2 Criao do aCols para Incluso
Inicializa a ltima coluna com .F.

1 2 3 4
1 Item Tipo Histrico Valor Titulo
2 Z2_ITEM Z2_TIPO Z2_HIST Z2_VALOR Campo
3 @E 999,999,999.99 Picture
4 2 1 20 12 Tamanho
5 0 0 0 2 Decimal
6 Valid. aHeader
7 Usado
8 C C C N Tipo
9 SZ2 SZ2 SZ2 SZ2 Arquivo
10 R R R R Contexto
1 2 3 4 5
1 Nil
Nil
D Nil Nil 0,00 .F.
Nil

aCols

// Inicializa a ultima coluna para o controle da GetDados: deletado ou nao.

// aCols[1][5] := .F.

aCols[1][Len(aHeader)+1] := .F.

4
Modelo 2 Criao do aCols para Incluso
Inicializa a coluna do ITEM com 01

1 2 3 4
1 Item Tipo Histrico Valor Titulo
2 Z2_ITEM Z2_TIPO Z2_HIST Z2_VALOR Campo
3 @E 999,999,999.99 Picture
4 2 1 20 12 Tamanho
5 0 0 0 2 Decimal
6 Valid. aHeader
7 Usado
8 C C C N Tipo
9 SZ2 SZ2 SZ2 SZ2 Arquivo
10 R R R R Contexto
1 2 3 4 5
1
01 Nil
D Nil Nil 0,00 .F.
Nil

aCols

// Inicializa a coluna do ITEM com 01.


// aCols[1][1] := "01" <-- teria problema se o usuario alterasse a posicao do
// campo Z2_ITEM no Dic. de Dados.

aCols[1][AScan(aHeader, {|x|Trim(x[2])=="Z2_ITEM"})] := "01"

1
Modelo 2

Criao do aCols para Alterao


Modelo 2 Criao do aCols para Alterao
Inicializa as variveis de memria da Enchoice

M->Z2_Nome := (cAlias)->Z2_Nome PEDRO


M->Z2_Numero := (cAlias)->Z2_Numero 0003
M->Z2_Data := (cAlias)->Z2_Data 30/03/06
Modelo 2 Criao do aCols para Alterao
Posiciona no primeiro registro com o nmero 0003

M->Z2_Nome := (cAlias)->Z2_Nome PEDRO


M->Z2_Numero := (cAlias)->Z2_Numero 0003
M->Z2_Data := (cAlias)->Z2_Data 30/03/06

dbSelectArea(cAlias)
dbSetOrder(2) // Z2_Filial + Z2_Nome + Z2_Numero + Z2_Item
dbSeek(xFilial(cAlias) + M->Z2_Nome + M->Z2_Numero)
01 PEDRO 0003

While !EOF() .And. (cAlias)->(Z2_Filial+Z2_Numero) == xFilial(cAlias) + M->Z2_Numero


... 01 + 0003 01 + 0003
dbSkip() 01 + 0004
End
Modelo 2 Criao do aCols para Alterao
Adiciona uma linha no aCols

1 2 3 4
1 Item Tipo Histrico Valor Titulo
2 Z2_ITEM Z2_TIPO Z2_HIST Z2_VALOR Campo
3 @E 999,999,999.99 Picture
4 2 1 20 12 Tamanho
5 0 0 0 2 Decimal
6 Valid. aHeader
7 Usado
8 C C C N Tipo
9 SZ2 SZ2 SZ2 SZ2 Arquivo
10 R R R R Contexto
1 2 3 4 5
1 Nil Nil Nil Nil Nil

aCols

// Como cada elemento de aCols sempre contera um elemento a mais que o aHeader,
// adiciona em aCols um ARRAY com o "num.elementos de aHeader + 1", ou seja, 5 elementos.

AAdd(aCols, Array(Len(aHeader)+1))

4
Modelo 2 Criao do aCols para Alterao
Preenche o aCols com os dados lidos do arquivo

1 2 3 4
1 Item Tipo Histrico Valor Titulo
2 Z2_ITEM Z2_TIPO Z2_HIST Z2_VALOR Campo
3 @E 999,999,999.99 Picture
4 2 1 20 12 Tamanho
5 0 0 0 2 Decimal
6 Valid. aHeader
7 Usado
8 C C C N Tipo
9 SZ2 SZ2 SZ2 SZ2 Arquivo
10 R R R R Contexto
1 2 3 4 5
1 Nil
01 Nil
D Deposito
Nil Nil 500,00 Nil

aCols

For i := 1 To Len(aHeader)

If aHeader[i][10] == "R
Z2_ITEM
Z2_VALOR
Z2_HIST
Z2_TIPO
aCols[nLin][i] := FieldGet(FieldPos(aHeader[i][2]))

Else 1
4
2
3 8
4
7
6 1
2
3
4 4 6 7 8
aCols[nLin][i] := CriaVar(aHeader[i][2], .T.) Z2_ITEM Z2_TIPO Z2_HIST Z2_VALOR
01 D Deposito 500,00
EndIf 02 D Deposito 150,00
03 S Saque 90,00
Next
Modelo 2 Criao do aCols para Alterao
Inicializa a ltima coluna com .F.

1 2 3 4
1 Item Tipo Histrico Valor Titulo
2 Z2_ITEM Z2_TIPO Z2_HIST Z2_VALOR Campo
3 @E 999,999,999.99 Picture
4 2 1 20 12 Tamanho
5 0 0 0 2 Decimal
6 Valid. aHeader
7 Usado
8 C C C N Tipo
9 SZ2 SZ2 SZ2 SZ2 Arquivo
10 R R R R Contexto
1 2 3 4 5
1 01 D Deposito 500,00 .F.
Nil

aCols

// Inicializa a ultima coluna para o controle da GetDados: deletado ou nao.

// aCols[1][5] := .F.

aCols[nLin][Len(aHeader)+1] := .F.

4
Modelo 3
Similar ao Modelo2

Diferena:

Modelo2 Cabealho e Itens so o mesmo arquivo (ex.: SC7 - Ped.


Compras)
A definio de quais campos ficaro no cabealho e quais
ficaro nos itens, feita no programa.

Modelo3 Cabealho um arquivo (ex.: SC5 Cabec. Ped. Vendas)


Itens outro arquivo (ex.: SC6 Itens do Ped. Vendas)

Ver 130_TranM3.prw

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