Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Método zap da classe FwTemporaryTable
Painel
bgColorWhite
titleFWTemporaryTable

Descrição

Classe para criação e manipulação de tabelas temporárias no BD


Nota
titlePré-requisito

TOTVS|DBAccess 4.2 Server com build igual ou superior à 20141119 (Mar 12 2015).

Aviso
titleImportante:

Devido as características do TempDB, uma tabela temporária só é visível para a thread que realizou a sua criação, não sendo possível compartilhar a mesma tabela entre vários processos.




Painel
titleNew

Sintaxe

FWTemporaryTable():New( [<cAlias>], [<aFields>] )-> Objeto FWTemporaryTable


Descrição

Método para instanciar a classe


Parâmetros


Nome

Tipo

Descrição

Default

Obrigatório

Referência

cAlias

Caracter

Alias a ser utilizado pela tabela.

GetNextAlias



aFields

Array

Array com estrutura de campos:
[1] Nome
[2] Tipo
[3] Tamanho
[4] Decimal

{}



Painel
titleCreate

Sintaxe

FWTemporaryTable():Create()


Descrição

Método responsável pela criação da tabela


Painel
titleDelete

Sintaxe

FWTemporaryTable():Delete()


Descrição

Método responsável por efetuar a exclusão da tabela, e fechar o alias


Retorno

Retorna um Logical conforme a deleção da tabela ter sido efetuada corretamente (a partir da LIB versão 20193101)

Painel
titleAddIndex

Sintaxe

FWTemporaryTable():AddIndex( <cIndexName>, <aFields> )


Descrição

Adiciona um índice na tabela. 


Parâmetros

Nome

Tipo

Descrição

Default

Obrigatório

Referência

cIndexName

Caracter

Nome do índice com no máximo 2 caracteres



aFields

Array

Array com os campos a serem utilizados no índice:
[1] Nome



Painel
titleGetRealName

Sintaxe

FWTemporaryTable():GetRealName() -> cRealName


Descrição

Retorna o nome com o qual a tabela foi criada no BD. 

Painel
titleGetTableNameForTCFunctions

Sintaxe

FWTemporaryTable():GetTableNameForTCFunctions() -> cTableName


Descrição

Retorna o nome da tabela para ser usado em funções do DBAccess, como
TCStruct, TCRefresh, FwBulk entre outras

(disponível a partir da LIB versão 20210517)

Painel
titleGetTableNameForQuery

Sintaxe

FWTemporaryTable():GetTableNameForQuery() -> cRealName


Descrição

Retorna o nome da tabela para ser usado no caso de querys, é o mesmo
método que o GetRealName, foi criado apenas para deixar mais
explicíto em seu nome qual o seu intuito

(disponível a partir da LIB versão 20210517)

Painel
titleGetAlias

Sintaxe

FWTemporaryTable():GetAlias( ) -> cAlias


Descrição

Retorna o alias utilizado pelo arquivo.

Painel
titleSetFields

Sintaxe

FWTemporaryTable():SetFields( <aFields> )


Descrição

Define os campos da estrutura.

Nome

Tipo

Descrição

Default

Obrigatório

Referência

aFieldsArray

Array com estrutura de campos:
[1] Nome
[2] Tipo
[3] Tamanho
[4] Decimal


X
Painel
titleZap

Sintaxe

FWTemporaryTable():Zap()


Descrição

Limpa todos os registros da tabela temporária. Caso seja gerado algum erro no momento do zap o sistema é abortado.

Obs: Método disponível a partir da lib label 2022021


Fonte de exemplo: ExFWTemporaryTable.prw
Bloco de código
languagecpp
themeEclipse
firstline1
titleExemplo
linenumberstrue
collapsetrue
#include 'protheus.ch'
User Function ExFWTemporaryTable()
Local aFields := {}
Local oTempTable
Local nI
Local cAlias := "MEUALIAS"
Local cQuery
//-------------------
//Criação do objeto
//-------------------
oTempTable := FWTemporaryTable():New( cAlias )
//--------------------------
//Monta os campos da tabela
//--------------------------
aadd(aFields,{"DESCR","C",30,0})
aadd(aFields,{"CONTR","N",3,1})
aadd(aFields,{"ALIAS","C",3,0})
oTemptable:SetFields( aFields )
oTempTable:AddIndex("01", {"DESCR"} )
oTempTable:AddIndex("02", {"CONTR", "ALIAS"} )
//------------------
//Criação da tabela
//------------------
oTempTable:Create()

//------------------------------------
//Executa query para leitura da tabela
//------------------------------------
cQuery := "select * from "+ oTempTable:GetRealName()
MPSysOpenQuery( cQuery, 'QRYTMP' )
DbSelectArea('QRYTMP')
while !eof()
	for nI := 1 to fcount()
		varinfo(fieldname(nI),fieldget(ni))
	next
	dbskip()
Enddo
	
//---------------------------------
//Exclui a tabela 
//---------------------------------
oTempTable:Delete() 

return