You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

FWTemporaryTable

Descrição

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

 

Compatível Países:

Todos

Sistemas Operacionais:

Todos

Compatível às Bases de Dados:

Todos

Nível de Acesso:

Nível 1 (Acesso Clientes)

Idiomas:

Português, Inglês, Espanhol

Versão/Release

12.1.5

Pré-requisito

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

New

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

{}

 

 

Create

Sintaxe

FWTemporaryTable():Create()

 

Descrição

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

 

Delete

Sintaxe

FWTemporaryTable():Delete()

 

Descrição

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

 

AddIndex

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

 

 

aFields

Array

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

 

 

GetRealName

Sintaxe

FWTemporaryTable():GetRealName() -> cRealName

 

Descrição

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

InsertSelect

Sintaxe

FWTemporaryTable():InsertSelect( <cTableFrom> , <aFieldsFrom> )

 

Descrição

Efetua carga de todos os campos baseada em um select de outra tabela, utilizando o padrão INSERT INTO SELECT.
Este método deve ser utilizado quando todos os campos da estrutura da tabela serão preenchidos.

Nome

Tipo

Descrição

Default

Obrigatório

Referência

cTableFrom

Caracter

Tabela da qual os valores serão carregados.

 

X

 

 

aFieldsFrom

Array

Array contendo o nome dos campos da tabela indicada, que deverão ser trazidos para carga

 

X

 
InsertIntoSelect

Sintaxe

FWTemporaryTable():InsertIntoSelect( <aFieldsTo>, <cTableFrom> , <aFieldsFrom> )

 

Descrição

Efetua carga de todos os campos baseada em um select de outra tabela, utilizando o padrão INSERT INTO SELECT.
Este método deve ser utilizado quando somente alguns campos da estrutura da tabela serão preenchidos.

Nome

Tipo

Descrição

Default

Obrigatório

Referência

aFieldsToArrayArray contendo o nome dos campos da tabela que deverão ser preenchidos X 
cTableFrom

Caracter

Tabela da qual os valores serão carregados.

 

X

 

aFieldsFrom

Array

Array contendo o nome dos campos da tabela indicada, que deverão ser trazidos para carga

 

X

 
GetAlias

Sintaxe

FWTemporaryTable():GetAlias( ) -> cAlias

 

Descrição

Retorna o alias utilizado pelo arquivo.

SetFields

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 

 

Fonte de exemplo: ExFWTemporaryTable.prw
Exemplo
#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("indice1", {"DESCR"} )
oTempTable:AddIndex("indice2", {"CONTR", "ALIAS"} )
//------------------
//Criação da tabela
//------------------
oTempTable:Create()

conout("Executando a cópia dos registros da tabela: " + RetSqlName("CT0") )
//--------------------------------------------------------------------------
//Caso o INSERT INTO SELECT preencha todos os campos, este será um método facilitador
//Caso contrário deverá ser chamado o InsertIntoSelect():
 // oTempTable:InsertIntoSelect( {"DESCR", "CONTR" } , RetSqlName("CT0") , { "CT0_DESC", "CT0_CONTR" } )
//--------------------------------------------------------------------------
oTempTable:InsertSelect( RetSqlName("CT0") , { "CT0_DESC", "CT0_CONTR", "CT0_ALIAS" } )

//------------------------------------
//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

 

 

  • No labels