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.