SET TABLE TITLES permite ocultar, renomear e reordenar as tabelas de seu banco quando aparecem nos editores padrão de 4D em modo Aplicação (quando os editores se chamam via os comandos da linguagem 4D). Por exemplo, este comando pode modificar a visualização de tabelas e no editor pesquisas em modo Aplicação.
A utilização deste comando, também permite renomear rapidamente as etiquetas das tabelas em seus formulários, se usar os nomes dinâmicos. Para maior informação sobre a inserção de etiquetas de tabelas e de campos dinâmicos em formulários, consulte a seção Usar referências em texto estático no manual de Desenho de 4D.
Os arrays titulosTabelas e numTabelas devem estar sincronizados. No array titulosTabelas, passe os nomes das tabelas como deseja que apareçam. Se não desejar mostrar uma tabela em particular, não inclua seu nome ou novo título no array. As tabelas aparecerão na ordem que especificou neste array. Em cada elemento do array numTabelas, passe o número da tabela que corresponde ao nome, novo ou antigo, da tabela, passado no mesmo número de elemento no array titulosTabelas.
Por exemplo, você tem um banco composto pelas tabelas A, B, e C, criadas nesta ordem. Você deseja que estas tabelas apareçam como X, Y, e Z. Além disso não deseja mostrar a tabela B. Por último, deseja mostrar Z e X, nesta ordem. Para fazer isso, passe no parâmetro titulosTabelas um array de dois elementos, Z e X, e passe no parâmetro numTabelas um array de dois elementos, 3 e 1.
O parâmetro opcional * lhe permite indicar se os nomes personalizados definidos com a ajuda deste comando podem ser utilizados ou não nas fórmulas de 4D:.
- Por padrão, quando se omite este parâmetro, as fórmulas executadas em 4D não podem utilizar issos nomes personalizados; é necessário utilizar os nomes verdadeiros das tabelas. Utilizar nomes personalizados da maior liberdade para dar nomes às tabelas já que o interpretador da linguagem não processa nomes personalizados.
- Se for passado o parâmetro *, os nomes definidos por este comando podem ser utilizados nas fórmulas executadas por 4D. Atenção neste caso, os nomes personalizados não devem conter caracteres que estejam “proibidos” pelo interpretador da linguagem de 4D, tal como -?*! Por exemplo, o nome "Rate_in_%" não pode ser usado em uma fórmula. (para maior informação, consulte a seção Convenções).
Nota: se sua aplicação de acesso ao editor de fórmulas (por exemplo pelo editor de Relatórios rápidos), é necessário passar o parâmetro * para manter consistencia na aplicação.
SET TABLE TITLES NÃO muda a estrutura atual de seu banco. Só afeta os usos posteriores dos editores padrão de 4D e formulários que utilizam nomes dinâmicos quando são chamados através de um comando da linguagem (a estrutura real do banco é mostrada quando o editor ou formulário é chamado desde um comando de menu no ambiente Desenho). O alcance do comando
SET TABLE TITLES é a sessão de trabalho. Uma vantagem em cliente/Servidor é que várias estações clientes 4D podem “ver” simultaneamente seu banco de diferentes formas. Pode chamar
SET TABLE TITLES tantas vezes quantas forem necessárias.
Utilize o comando
SET TABLE TITLES para:
- Localização dinâmica de seu banco.
- Visualização das tabelas na ordem que queira, independentemente da definição atual de seu banco.
- Visualização de tabelas que dependa da identidade ou dos privilégios de um usuário.
Notas:
- SET TABLE TITLES NÃO anula o efeito da propriedade invisível de uma tabela. Quando uma tabela estiver definida como invisível a nivel da estrutura de seu banco, mesmo que seja incluído em uma chamada a SET TABLE TITLES, não aparecerá em modo Aplicação.
- Os plug-ins sempre acessam a estrutura "virtual" como se especifica por este comando.
Imagine que está desenvolvendo uma aplicação 4D que planeja vender internacionalmente. Portanto, você deve considerar as necessidades de tradução. Para os editores padrão de 4D que aparecem em modo Aplicação e seus formulários que utilizam nomes dinâmicos, pode utilizar uma tabela [Traduçoes] e alguns métodos de projeto para criar e utilizar as traduções para cada idioma.
Em seu banco, crie a próxima tabela:
Depois, crie o método de projeto TRADUZIR_TABELAS_E_CAMPOS. Este método analisa a estrutura de seu banco na tabela [Traduçoes] e cria os registros correspondentes ao idioma passado como parâmetro.
C_TEXT($1)
C_LONGINT($vlTabela;$vlCampo)
C_TEXT($Idioma)
$Idioma:=$1
For($vlTabela;1;Get last table number)
If($vlTabela#(Table(->[Traduçoes])))
QUERY([Traduçoes];[Traduçoes]Codigo_Idioma=$Idioma;*)
QUERY([Traduçoes];&;[Traduçoes]Tabela_ID=$vlTabela;*)
QUERY([Traduçoes];&;[Traduçoes]Campo_ID=0)
If(Is table number valid($vlTabela))
If(Records in selection([Traduçoes])=0)
CREATE RECORD([Traduçoes])
[Traduçoes]Codigo_Idioma:=$Idioma
[Traduçoes]Tabela_ID:=$vlTabela
[Traduçoes]Campo_ID:=0
[Traduçoes]Tradução:=Table name($vlTabela)+" em "+$Idioma
SAVE RECORD([Traduções])
End if
For($vlCampo;1;Obter número do último campo($vlTabela))
QUERY([Traduçoes];[Traduçoes]Codigo_Idioma=$Idioma;*)
QUERY([Traduçoes];&;[Traduçoes]Tabela_ID=$vlTabela;*)
QUERY([Traduçoes];&;[Traduçoes]Campo_ID=$vlCampo)
If(Is field number valid($vlTabela;$vlCampo))
If(Records in selection([Traduçoes])=0)
CREATE RECORD([Traduçoes])
[Traduçoes]Codigo_Idioma:=$Idioma
[Traduçoes]Tabela_ID:=$vlTabela
[Traduçoes]Campo_ID:=$vlCampo
[Traduçoes]Tradução:=Field name($vlTabela;$vlCampo)+"em "+$Idioma
SAVE RECORD([Traduçoes])
End if
Else
If(Records in selection([Traduçoes])#0)
DELETE RECORD([Traduçoes])
End if
End if
End for
Else
If(Records in selection([Traduçoes])#0)
DELETE RECORD([Traduçoes])
End if
End if
End if
End for
- Neste ponto, se executar a seguinte linha, pode criar tantos registros como necessite para a tradução ao Espanhol de suas tabelas e campos.
TRANSLATE TABLES AND FIELDS("Espanhol")
- Quando essa chamada tiver sido executada, pode introduzir uma tradução no campo [Traduçoes]Nome traduzido para cada um dos novos registros.
- Por último, cada vez que queira mostrar em espanhol os editores padrão 4D ou os formulários com etiquetas dinâmicas, execute a seguinte linha:
LOCALIZED TABLES AND FIELDS("Espanhol")
com o método de projeto TABELAS_E_CAMPOS_LOCALIZADOS:
C_TEXT($1)
C_LONGINT($vlTabela;$vlCampo)
C_TEXT($Idioma)
C_LONGINT($vlNumTabela;$vlNumCampo)
$Idioma:=$1
ARRAY TEXT($asNomes;0)
ARRAY INTEGER($aiNumeros;0)
QUERY([Traduções];[Traduçoes]Codigo_Idioma=$Idioma;*)
QUERY([Traduções];&;[Traduçoes]Campo_ID=0)
SELECTION TO ARRAY([Traduçoes]Tradução;$asNomes;[Traduçoes]Tabela_ID;$aiNumeros)
SET TABLE TITLES($asNomes;$aiNumeros)
$vlNumTabela:=Get last table number
For($vlTabela;1;$vlNumTabela)
If(Is table number valid($vlTabela))
QUERY([Traduçoes];[Traduçoes]Codigo_Idioma=$Idioma;*)
QUERY([Traduçoes]; & ;[Traduçoes]Tabela_ID=$vlTabela;*)
QUERY([Traduçoes]; & ;[Traduçoes]Campo_ID#0)
SELECTION TO ARRAY([Traduçoes]Tradução;$asNomes;[Traduçoes]Campo_ID;$aiNumeros)
SET FIELD TITLES(Tabela($vlTabela)->;$asNomes;$aiNumeros)
End if
End for
- Note que as novas localizações possam ser adicionadas ao banco sem modificar o código a ser recompilado.