Anterior Sumário Próximo OpenBASE! o Banco de Dados inteligente. Fale conosco!

Comando DataTable

O comando DataTable da OpusWin permite consultar e modificar os arquivos de um Banco de Dados.

Definição de DataTable

O recurso DataTable utiliza matrizes para representar os registros (linhas) e os itens (colunas). Podem ser selecionados os registros (linhas) e os itens (colunas) que desejam ser exibidos. As teclas INSERT e DELETE podem ser utilizadas para INCLUIR e EXCLUIR registros.

Sintaxe

query <explog> 

DataTable  [itens(<item1>, <item2> ..., <itemn>)]

     [window(<xi>,<yi>,<xl>,<yl>)]

     [headers (<expc1>, <expc2>, ..., <expcn>)]

     [query <expc>]

     [valid ([<func>(<par1>, ..., <parn>)], ..., [<func>(<par1>, ..., <parn>)]]

                [NULL                                   ], ..., [NULL                                    ]

Onde:

query <explog>

O comando query <explog>, antes do comando DataTable, indica uma expressão lógica, sendo necessário para indicar os registros a serem exibidos. Caso se deseje exibir todos os registros, deve ser especificado query .t.

itens(<item1>, ... ,<itemn>)

A lista itens(<item1>, ... ,<itemn>) é opcional. Não sendo especificada a opção itens, serão exibidos todos os itens de cada registro, conforme foram definidos no esquema do Banco de Dados. Para arquivos de bancos OpenBASE, a lista de itens é opcional. Em se tratando de arquivos externos, a lista de itens é obrigatória.

window(<xi>,<yi>,<xl>,<yl>)

A opção window especifica, opcionalmente, as coordenadas da matriz. O padrão assumido é window(0,0,79,23).

headers (<expc1>, ..., <expcn>)

A opção headers especifica os títulos a serem exibidos como cabeçalhos nas colunas dos itens. A especificação de headers é opcional. Quando não for especificado, serão exibidos os nomes dos itens constantes no esquema do banco. Quando especificado, <expc1>, ..., <expcn> deve ser uma lista de literais, contendo um cabeçalho para cada item do registro.

query <expc>

A opção query <expc>, dentro do comando DataTable, é uma expressão relacional e serve para selecionar os registros do arquivo, utilizando a mesma sintaxe do comando SELECIONE do utilitário "GERAL", hoje mais conhecido como Query. Este comando Query foi implementado por razões de compatibilidade e facilidade de migração da OPUS e do antigo utilitário GERAL.

valid ([<func>(<par1>, ..., <parn>)], ..., [<func>(<par1>, ..., <parn>)]
[NULL ], ..., [NULL ]

A opção valid especifica as funções lógicas a serem chamadas em caso de alteração nas células da DataTable. Esta cláusula valida a entrada de dados em cada célula da matriz. Cada uma das funções se referem, respectivamente, a cada um dos itens declarados na cláusula itens. Caso não se deseje validar um determinado item, deve-se especificar a cláusula NULL, dentro da opção valid, na respectiva posição. As funções referenciadas no valid são lógicas e, caso retornem falso, não é gravado no arquivo o valor digitado dentro da célula.

O controle GRID (dentro de Caixas de Diálogo) permite efetuar funções similares ao DataTable, porém oferece maiores recursos. Veja maiores detalhes neste manual.

Exemplos de DataTable

Veja a seguir um pequeno exemplo que mostra como utilizar o recurso DataTable.

$nolib

prog

Mens=""

func fnome(l)

func fida(l)

SetWindowText("Exemplo do DataTable")

Showtext(01,00,"Cadastro de Pessoas:","Arial Black",1,"")

Showtext(01,08,"Tecle Esc para sair","Arial Black",1,"")

DataBase .\EXEMPLO 1 a 2

use PESSOA

query .t.

DataTable itens(NOME_P,IDADE) window(01,01,24,06);

          headers("Nome","Idade");

          valid(fnome(NOME_P),fida(IDADE))

return

func fnome

parameters wnome(c)

Mens='Nome="'+NOME_P + '"'

m = MessageBox(Mens,"","O","I")

return(.f.)

func fida

parameters idade(n)

Mens='Idade="'+str(IDADE) + '"'

m = MessageBox(Mens,"","O","I")

return(.f.)

Observação

O comando DataTable também pode ser utilizado com arquivos externos, como mostrado neste exemplo:

use *

abc r len(20)

cod    n3

nome u17

enduse

DataTable itens(cod,nome)

Anterior Sumário Próximo OpenBASE! o Banco de Dados inteligente. Fale conosco!