Páginas filhas
  • FWTemporaryTable

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Painel
bgColorWhite
titleFWWizardControlFWTemporaryTable

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.




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

1.0

 

Descrição

Classe para construção do Wizard
Utiliza as classes:
- FWWizardStep (contém todas as definições do Wizard)
- FWUISteps (indicador de página localizado na parte superior do Wizard. O uso deste recurso é limitado pelo espaço disponível para sua exibição.) 

 

Painel
titleNew

Sintaxe

FWWIZARDCONTROLFWTemporaryTable():New( <oOwner: >, <aDlgSize: >[<cAlias>], [<aFields>] )-> NIL Objeto FWTemporaryTable


Descrição

Metodo Método para instanciar a classe 


Parâmetros

 


Nome

Tipo

Descrição

Default

Obrigatório

Referência

oOwner:

cAlias

Objeto

Define o owner para o wizard, se não for definido será criada uma dialog com o tamanho especificado

 

 

 

aDlgSize:

Array

Tamanho do owner do wizard, esse parâmetro deverá ser um array com duas posições {HEIGHT, WIDTH}

{600,600}

 

 

 

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
titleSetSizeDelete

Sintaxe

FWWIZARDCONTROLFWTemporaryTable():SetSize(<aDlgSize: >)-> NILDelete()


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

 

Descrição

Define o tamanho do owner do wizard.

 

Parâmetros

 

Nome

Tipo

Descrição

Default

Obrigatório

Referência

aDlgSize

cIndexName

Caracter

Nome do índice com no máximo 2 caracteres



aFields

Array

Tamanho do owner do wizard, esse parâmetro deverá ser um array com duas posições {HEIGHT, WIDTH}

 

X

 

 

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
titleAddStepGetTableNameForTCFunctions

Sintaxe

FWWIZARDCONTROLFWTemporaryTable():AddStep(<cID: >, <bConstruct: >)-> FWWizardStepGetTableNameForTCFunctions() -> 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.

 

Descrição

Adiciona um novo Step ao wizard

Retorno

Esta classe retorna uma instância da classe FWWizardStep.

 

Parâmetros

 

Nome

Tipo

Descrição

Default

Obrigatório

Referência

cID
aFields

Caracteres

ID para o step

 

X

 

bConstruct

Bloco de Código

Bloco de construção da tela

 

X

 

 

Array

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


X
 

Painel
title

...

Zap

Sintaxe

...

FWTemporaryTable():

...

Zap()

...


Descrição

Faz a ativação do wizard, criando o owner (caso não definido) e instanciando
todos os UserPanels 

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


Aviso
titleImportante

Método disponível a partir da lib label 20220321

 

...

Painel
title
ActiveUISteps
SetClobMemo

Sintaxe

FWWIZARDCONTROL

FWTemporaryTable():

ActiveUISteps

SetClobMemo(

)-> NIL

 

Descrição

Define se deverá ser exibida a classe de FWUISteps 

 

lClob)


Descrição

Informa a classe como serão criados os campos memo, se informado como .T., os campos serão criados no padrão CLOB, caso contrário os campos serão criados no padrão BLOB, que é a maneira padrão que o Protheus trabalha.


Parâmetros

Nome

Tipo

Descrição

Obrigatório

lClob

Logical

Se verdadeiro, indica se a tabela vai trabalhar com campos CLOB, caso contrário, o campo será criado como BLOB



Aviso
titleImportante

Método disponível a partir da lib label 20220613

Fonte de exemplo: ExFWTemporaryTable.prw
Bloco de código
languagecpp
themeEclipse
firstline1

 

Bloco de código
themeEclipse
titleExemplo
firstlinelinenumbers1true
linenumberscollapsetrue
#include 'protheus.ch'
User functionFunction teste_stepwizExFWTemporaryTable()
Local oPanel
Local oNewPag
Local cNome   aFields := ""{}
Local cFornec := ""oTempTable
Local cCombo1 := ""
Local oStepWiz := nil
Local oDlg := nil
Local oPanelBkg
DEFINE DIALOG oDlg TITLE 'aaaaa' PIXEL 
oDlg:nWidth := 1100 
oDlg:nHeight := 800 
oPanelBkg:= tPanel():New(20,70,"",oDlg,,,,,,300,300)
oStepWiz:= FWWizardControl():New(oPanelBkg)//Instancia a classe FWWizard
oStepWiz:ActiveUISteps()

//---nI
Local cAlias := "MEUALIAS"
Local cQuery
//-------------------
//Criação Paginado 1objeto
//----------------------
oNewPagoTempTable := oStepWiz:AddStep("1")
//Altera a descrição do step
oNewPag:SetStepDescription("Primeiro passo")
//Define o bloco de construção
oNewPag:SetConstruction({|Panel|cria_pg1(Panel, @cNome, @cFornec)})
//Define o bloco ao clicar no botão Próximo
oNewPag:SetNextAction({||valida_pg1(@cNome, @cFornec)})
//Define o bloco ao clicar no botão Cancelar
oNewPag:SetCancelAction({||Alert("Cancelou na pagina 1"), .T.})

//FWTemporaryTable():New( cAlias )
//--------------------------
// Pagina 2Monta os campos da tabela
//-------------------------
oNewPag := oStepWiz:AddStep("2", {|Panel|cria_pg2(Panel, @cCombo1)})
oNewPag:SetStepDescription("Segundo passo")
oNewPag:SetNextAction({||valida_pg2(@cCombo1)})
//Define o bloco ao clicar no botão Voltar
oNewPag:SetCancelAction({||Alert("Cancelou na pagina 2"), .T.})
oNewPag:SetPrevAction({||Alert("Ops, voce não pode voltar a partir daqui"), .F.})
oNewPag:SetPrevTitle("Voltar(ou não)")

//----------------------
// Pagina 3
//----------------------
oNewPag := oStepWiz:AddStep("3", {|Panel|cria_pn3(Panel)})
oNewPag:SetStepDescription("Terceiro passo")
oNewPag:SetNextAction({||Alert("Fim"), .T.})
oNewPag:SetCancelAction({||Alert("Cancelou na pagina 3"), .T.})
oNewPag:SetCancelWhen({||.F.})
oStepWiz:Activate()
ACTIVATE DIALOG oDlg CENTER 
oStepWiz:Destroy()
Return

//-------
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"} )
//--------------------
// ConstruçãoCriação da página 1tabela
//--------------------------
Static Function cria_pg1(oPanel, cNome, cFornec)
Local oTGet1
Local oTGet2
oSay1:= TSay():New(10,10,{||'Cliente'},oPanel,,,,,,.T.,,,200,20) 
cNome := Space(30)
oTGet1 := TGet():New( 20,10,{|u| if( PCount() > 0, cNome := u, cNome ) } ,oPanel,096,009,"@!",,0,,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F.,,cNome,,,, )
oSay2:= TSay():New(40,10,{||'Fornecedor'},oPanel,,,,,,.T.,,,200,20) 
cFornec := Space(30)
oTGet2 := TGet():New( 50,10,{|u| if( PCount() > 0, cFornec := u, cFornec ) },oPanel,096,009,"@!",,0,,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F.,,cFornec,,,, )
Return
 

//----
oTempTable:Create()

//------------------------------------
//Executa Validaçãoquery dopara botãoleitura Próximo da página 1tabela
//----------------------------------------
Static Function valida_pg1(cNome, cFornec)
MsgInfo("Cliente: " + cNome + chr(13)+chr(10) + "Fornecedor: " + cFornec)
Return .T.

//--------------------------
// Construção da página 2
//--------------------------
Static Function cria_pg2(oPanel, cCombo1)
Local aItems := {'Item1','Item2','Item3'}
Local oCombo1
cCombo1:= aItems[1]    
oCombo1 := TComboBox():New(20,20,{|u|if(PCount()>0,cCombo1:=u,cCombo1)},aItems,100,20,oPanel,,{|| },,,,.T.,,,,,,,,,'cCombo1')
Return
 

//----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 Validação do botão Próximo da página 2a tabela 
//----------------------------------------
Static Function valida_pg2(cCombo1)
Local lRet := .F.
If cCombo1 == 'Item3'
	lRet := .T.
Else
	Alert("Você selecionou: " + cCombo1 + " para prossegir selecione Item3")
EndIf
Return lRet

//--------------------------
// Construção da página 3
//--------------------------
Static Function cria_pn3(oPanel)
Local oBtnPanel := TPanel():New(0,0,"",oPanel,,,,,,40,40)
oBtnPanel:Align := CONTROL_ALIGN_TOP
oTButton1 := TButton():New( 010, 010, "Botão 01",oBtnPanel,{||alert("Botão 01")}, 80,20,,,.F.,.T.,.F.,,.F.,,,.F. )
oTButton2 := TButton():New( 010, 0200, "Botão 02",oBtnPanel,{||alert("Botão 02")}, 80,20,,,.F.,.T.,.F.,,.F.,,,.F. )
Return
Painel
titleWizard gerado com o fonte de exemplo
Image Removed
oTempTable:Delete() 

return