You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
Version 1
Next »
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 |
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 | {} | | |
Sintaxe
FWTemporaryTable():Create()
Descrição
Método responsável pela criação da tabela
Sintaxe
FWTemporaryTable():Delete()
Descrição
Método responsável por efetuar a exclusão da tabela, e fechar o alias
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 | | X | |
aFields | Array | Array com os campos a serem utilizados no índice: [1] Nome | | X | |
Sintaxe
FWTemporaryTable():GetRealName() -> cRealName
Descrição
Retorna o nome com o qual a tabela foi criada no BD.
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 | |
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 |
aFieldsTo | Array | Array 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 | |
Sintaxe
FWTemporaryTable():GetAlias( ) -> cAlias
Descrição
Retorna o alias utilizado pelo arquivo.
Sintaxe
FWTemporaryTable():SetFields( <aFields> )
Descrição
Define os campos da estrutura.
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
aFields | Array | Array com estrutura de campos: [1] Nome [2] Tipo [3] Tamanho [4] Decimal | | X | |
#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