
O comando DataTable da OpusWin permite consultar e modificar os arquivos de um Banco de Dados.
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.
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)
