Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Aviso
titleEm construção

Atenção: Página em construção!!

 

 

 

Painel
bgColorWhite
titleFWTemporaryTable

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

Nota
titlePré-requisito

DbAccess com build igual ou superior à 20141119.

 



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

 

 

 

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

 

 

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
titleInsertSelect

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.

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

 
Painel
titleInsertIntoSelect

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.

Tipo

Descrição

Default

Obrigatório

Referência

aFieldsToArrayArray contendo o nome dos campos da tabela que deverão ser preenchidosX 

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

 
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.

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:
Bloco de código
themeEclipse
languagedelphicpp
titleExemplo
firstline1
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("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