Abre uma tabela de dados na área de trabalho atual ou na primeira área de trabalho disponível.
Sintaxe
DBUSeArea( [<lNovaArea>] , [<cDriver>] , <cTabela> , <cAlias> , [<lCompartilhado>] , [<lSomenteLeitura>] )
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência | Observações |
---|---|---|---|---|---|
lNovaArea | Lógico | Caso verdadeiro, indica que a tabela deve ser aberta em uma nova workarea (Default=.F.) | N | N | Caso o parâmetro seja .F. ou não especificado (NIL), a tabela será aberta na workarea atual, Caso já exista uma tabela aberta na WorkArea atual, a mesma é fechada. |
cDriver | Caractere | Informa o Driver (RDD) a ser utilizada para a abertura da tabela. Caso não especificado (NIL), será usado o driver default de acesso a arquivos locais. | N | N | Verifique a lista de drivers disponíveis no final deste documento. |
cTabela | Caractere | Nome da tabela a ser aberta. Caso o driver utilizado acesse tabelas no sistema de arquivos, deve ser informado um path no servidor de aplicação. Não é possível abrir tabelas de dados no SmartClient. | S | N | Quando utilizada a RDD "TOPCONN", caso seja desejada a abertura de uma Query no SGDB, devemos passar como 3o parâmetro o retorno da função TcGenQry(), onde informamos a string contendo a Query como terceiro parâmetro da função TcGenQry() |
cAlias | Caractere | Nome dado ao ALIAS desta tabela, para ser referenciado no programa Advpl. | S | N | Em um mesmo processo, duas tabelas não podem ser abertas sob o mesmo ALIAS. Porém, a mesma tabela pode ser aberta mais de uma vez com um ALIAS diferente. |
lCompartilhado | Lógico | Caso verdadeiro, indica que a tabela deve ser aberta em modo compartilhado, isto é, outros processos também poderão abrir esta tabela. | N | N | Uma tabela aberta em modo exclusivo por um processo não consegue ser aberta em modo algum por nenhum outro processo, A abertura em modo compartilhado pode falhar caso exista algum processo com a tabela aberta em modo exclusivo |
lSomenteLeitura | Lógico | Caso verdadeiro, indica que este alias será usado apenas para leitura de dados. Caso contrário, estas operações serão permitidas. | N | N | Um alias aberto em modo de leitura não permite operações de inclusão, alteração ou exclusão de dados. |
Retorno
Nome | Tipo | Descrição | Observações |
---|---|---|---|
NIL | U | Esta função sempre retorna NIL | Para verificar se a abertura da tabela foi bem sucedida, após a chamada da DBUseArea(), verifique o retorno da função NetErr(). Caso ocorra uma falha de acesso física á tabela, como por exemplo tentar abrir uma tabela que não existe, o driver utilizado na abertura retornará uma ocorrência de erro para a aplicação. |
Observações
Exemplos
Exemplo
user function exemplo() Local aStru := {} aadd(aStru,{"CPOC1","C",08,0}) aadd(aStru,{"CPOC2","C",40,0}) cAqrTrab := CriaTrab(aStru,.T.) // Abre o arquivo de trabalho em uma nova Workarea, em modo exclusivo DbUseArea( .T. , NIL , cArqTrab , "TRB" , .F. , .F. ) return
No exemplo acima, podemos substituir a chamda direta da função DBUseArea() para utilizar o comando USE. Com isso o programa fica mais legível. Como o comando USE trata os parâmetros de Driver, Nome da tabela e alias como "literais", a utilização de variáveis para estes parâmetros deve ser informada ao comando entre parênteses. Vide exemplo abaixo:
USE (cArqTrab) ALIAS TRB EXCLUSIVE NEW
Veja também
DbCloseArea, DBCreate, TCGenQry