Árvore de páginas

Cria uma view para multiplas tabelas, sendo possível, mapear somente os campos que são relevantes a regra de negócio.

Sintaxe

TCViewMulti( < cView >, < cTable >, < cStruct > )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cView

caractere

Nome da view a ser criada.

X


cTable

caractere

Nome da tabela master da view.

X


cStruct

caractere

Estrutura da view a ser criada, que consiste de uma lista de valores separados por virgula, onde é necessário informar a tabela e o campo da tabela que será mapeada na view, veja o exemplo abaixo.

X


Retorno

Nome

Tipo

Descrição

lRet

lógico

Retorna .T. se a view foi criada, caso contrário, retorna .F. e o motivo do erro pode ser verificado com a função TCSQLError.

Observações

Possíveis causas de falha:

  • Já existe uma tabela ou view no SGBD, com o nome informado em cView;
  • A tabela informada em cTable não existe no SGBD;
  • A tabela informada em cTable é uma view ou tabela temporária;
  • A tabela informada em cTable, já está relacionada como tabela auxiliar de outra view;
  • Alguma tabela informada em cStruct, já está relacionada como tabela master de outra view;
  • Alguma tabela informada em cStruct, já está relacionada como tabela auxiliar de outra view, que tem uma tabela master diferente;
  • Alguma tabela e/ou campo informado em cStruct, não existe fisicamente no SGBD;
  • Foram especificados um ou mais campos repetidos em cStruct.

Exemplos

STATIC FUNCTION CreateTable()
  TCDelFile("VIEW1")
  TCDelFile("VIEW2")
  TCDelFile("T1")
  TCDelFile("T2")
  
  DBCreate("T1", {{"FIELD_NAME", "C", 10, 0}, ;
                  {"FIELD_TYPE", "C", 10, 0}}, "TOPCONN")

  DBCreate("T2", {{"FIELD_NAME", "C", 10, 0}, ;
                  {"FIELD_TYPE", "C", 10, 0}, ;
                  {"FIELD_ID"  , "N", 3, 0}}, "TOPCONN")
RETURN

FUNCTION u_TCViewMulti()
  TCLink()
  
  CreateTable()
  
  IIF(TCViewMulti("VIEW1", "T1", "T1,FIELD_NAME,T2,FIELD_TYPE,T2,FIELD_ID"), CONOUT('TRUE'), CONOUT('FALSE')) // retorna .T., ou seja, criou a view VIEW1
  IIF(TCViewMulti("VIEW1", "T1", "T1,FIELD_NAME,T2,FIELD_TYPE,T2,FIELD_ID"), CONOUT('TRUE'), CONOUT('FALSE')) // retorna .F., pois, VIEW1 já foi criada acima
  IIF(TCViewMulti("VIEW2", "VIEW1", "T1,FIELD_NAME,T2,FIELD_ID"), CONOUT('TRUE'), CONOUT('FALSE'))            // retorna .F., pois, não é possível criar uma view a partir de outra view
  IIF(TCViewMulti("VIEW2", "T2", "T1,FIELD_NAME,T2,FIELD_TYPE,T2,FIELD_ID"), CONOUT('TRUE'), CONOUT('FALSE')) // retorna .F., pois, T2 é uma tabela auxiliar da VIEW1
  IIF(TCViewMulti("VIEW2", "T1", "T1,FIELD_NAME,T2,FIELD_VALUE"), CONOUT('TRUE'), CONOUT('FALSE'))            // retorna .F., pois, o campo FIELD_VALUE não existe na tabela T2
  IIF(TCViewMulti("VIEW2", "T3", "T1,FIELD_NAME,T2,FIELD_TYPE,T2,FIELD_ID"), CONOUT('TRUE'), CONOUT('FALSE')) // retorna .F., pois, a tabela T3 não existe no SGBD
  IIF(TCViewMulti("VIEW2", "T1", "T1,FIELD_NAME,T2,FIELD_NAME"), CONOUT('TRUE'), CONOUT('FALSE'))             // retorna .F., pois, o campo FIELD_NAME está duplicado
  
  TCUnlink()
RETURN

Abrangência

Esta função está disponível no Application Server - build 7.00.131227A, com data de geração superior a 09/08/2016 e depende de um DBAccess com build superior a 20160402.

Veja também

  • Sem rótulos