SET TABLE TITLES

4D - Documentation   Français   English   German   Español   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente

versión 11 (Modificado)


SET TABLE TITLES (titulosTablas; numTablas{; *})

ParámetroTipoDescripción
titulosTablasArray alfaNombres de las tablas tal como deben aparecer
numTablasArray numNúmeros de las tablas
*Utilizar los nombres personalizados en el editor de
fórmulas

Descripción

SET TABLE TITLES permite ocultar, renombrar y reordenar las tablas de su base cuando aparecen en los editores estándar de 4D, como el editor de búsquedas, en modo Aplicación (más específicamente, cuando los editores se llaman vía los comandos del lenguaje 4D).

La utilización de este comando, también permite renombrar rápidamente las etiquetas de las tablas en sus formularios, si usted utilizó nombres dinámicos. Para mayor información sobre la inserción de etiquetas de tablas y de campos dinámicos en formularios, consulte el Manual de Diseño 4D.

Los arrays titulosTablas y numTablas deben estar sincronizados. En el array titulosTablas, pase los nombres de las tablas como quiere que aparezcan. Si no quiere mostrar una tabla en particular, no incluya su nombre o nuevo título en el array. Las tablas aparecerán en el orden que especificó en este array. En cada elemento del array numTablas, pase el número de la tabla que corresponde al nombre, nuevo o antiguo, de la tabla, pasado en el mismo número de elemento en el array titulosTablas.

Por ejemplo, usted tiene una base compuesta por las tablas A, B, y C, creadas en este orden. Usted quiere que estas tablas aparezcan como X, Y, y Z. Además no quiere mostrar la tabla B. Por último, quiere mostrar Z y X, en este orden. Para hacer esto, pase en el parámetro titulosTablas un array de dos elementos, Z y X, y pase en el parámetro numTablas un array de dos elementos, 3 y 1.

El parámetro opcional * le permite indicar si los nombres personalizados definidos con la ayuda de este comando puede ser utilizados o no en las fórmulas de 4D.

Por defecto, cuando se omite este parámetro, las fórmulas ejecutadas en 4D no pueden utilizar estos nombres personalizados; es necesario utilizar los nombres verdaderos de las tablas.

Si se pasa el parámetro *, los nombres definidos por este comando pueden utilizarse en las fórmulas ejecutadas por 4D. Atención en este caso, los nombres personalizados no deben contener caracteres que estén "prohibidos" por el interprete del lenguaje de 4D, tal como -?*! (para mayor información, consulte la sección "Convenciones").

Nota: Al nivel del editor de fórmulas, la ejecución de este comando sin el parámetro * no modifica los eventuales parámetros efectuados previamente con el parámetro *. En otras palabras, el editor de fórmulas siempre muestra el nombre personalizado definido vía la última llamada del comando con el parámetro *.

SET TABLE TITLES NO cambia la estructura actual de su base. Sólo afecta los usos posteriores de los editores estándar de 4D y formularios que utilizan nombres dinámicos cuando se llaman vía un comando del lenguaje (la estructura real de la base se muestra cuando el editor o formulario se llama desde un comando de menú en el entorno Diseño). El alcance del comando SET TABLE TITLES es la sesión de trabajo. La ventaja, en cliente/Servidor es que varios puestos clientes 4D pueden "ver" simultáneamente su base de diferentes formas. Puede llamar SET TABLE TITLES tantas veces como lo considere necesario.

Utilice el comando SET TABLE TITLES para:

Traducción dinámica de su base.

Visualización de las tablas en el orden que quiera, independientemente del la definición actual de su base.

Visualización de tablas que dependa de la identidad o de los privilegios de un usuario.

Notas:

SET TABLE TITLES NO anula el efecto de la propiedad invisible de una tabla. Cuando una tabla está definida como invisible a nivel de la estructura de su base, aunque se incluya en una llamada a SET TABLE TITLES, no aparecerá en modo Aplicación.

Los plug-ins siempre acceden a la estructura "virtual" como se especifica por este comando.

Ejemplo

Usted desarrolla una aplicación 4D que piensa vender internacionalmente. Por lo tanto, usted debe tener en cuenta las necesidades de traducción. Para los editores estándar de 4D que aparecen en modo Aplicación y sus formularios que utilizan nombres dinámicos, puede utilizar una tabla [Traducciones] y algunos métodos de proyecto para crear y utilizar las traducciones para cada idioma.

En su base, cree la siguiente tabla:

Luego, cree el método de proyecto TRADUCIR_TABLAS_Y_CAMPOS. Este método analiza la estructura de su base en la tabla [Traducciones] y crea los registros correspondientes al idioma pasado como parámetro.

     ` Método de proyecto TRADUCIR_TABLAS_Y_CAMPOS
     ` TRADUCIR_TABLAS_Y_CAMPOS (Text)
     ` TRADUCIR_TABLAS_Y_CAMPOS (LanguageCode)

   C_TEXT($1) `código del idioma
   C_LONGINT($vlTabla;$vlCampo)
   C_TEXT($Idioma)
   $Idioma:=$1

   For($vlTabla;1;Get last table number)  ` Pasar por cada tabla
      If($vlTabla#(Table(->[Traducciones])))  `No traducir la tabla de traducciones
            ` Verificar si existe una traducción de nombre de la tabla para el idioma especificado
         QUERY([Traducciones];[Traducciones]Codigo_Idioma=$Idioma;*)  `idioma deseado
         QUERY([Traducciones]; & ;[Traducciones]Tabla_ID=$vlTabla;*)  `Número de tabla
         QUERY([Traducciones]; & ;[Traducciones]Campo_ID=0)  `número de campo = 0 significa que es un nombre de tabla
         If(Is table number valid($vlTabla))  `verificar que la tabla aún existe
            If(Records in selection([Traducciones])=0)
                  ` De lo contrario, crear el registro
               CREATE RECORD([Traducciones])
               [Traducciones]Codigo_Idioma:=$Idioma
               [Traducciones]Tabla_ID:=$vlTabla
               [Traducciones]Campo_ID:=0
                  ` El nombre de la tabla traducida deberá introducirse
               [Traducciones]Traduccion:=Table name($vlTabla)+" en "+$Idioma
               SAVE RECORD([Traducciones])
            End if 

            For($vlCampo;1;Get last field number($vlTabla))
                  ` Check if there is a translation of the field name for the specified language
               QUERY([Traducciones];[Traducciones]Codigo_Idioma=$Idioma;*)  `desired language
               QUERY([Traducciones]; & ;[Traducciones]Tabla_ID=$vlTabla;*)  `table number
               QUERY([Traducciones]; & ;[Traducciones]Campo_ID=$vlCampo)  `field number
               If(Is field number valid($vlTabla;$vlCampo))
                  If(Records in selection([Traducciones])=0)
                        ` Otherwise, create the record
                     CREATE RECORD([Traducciones])
                     [Traducciones]Codigo_Idioma:=$Idioma
                     [Traducciones]Tabla_ID:=$vlTabla
                     [Traducciones]Campo_ID:=$vlCampo
                        ` The name of the translated field will need to be entered
                     [Traducciones]Traduccion:=Field name($vlTabla;$vlCampo)+"en "+$Idioma
                     SAVE RECORD([Traducciones])
                  End if 
               Else
                  If(Records in selection([Traducciones])#0)
                        ` Si el campo no existe, eliminar la traducción
                     DELETE RECORD([Traducciones])
                  End if 
               End if 
            End for 
         Else
            If(Records in selection([Traducciones])#0)
                  ` Si la tabla no existe, eliminar la traducción
               DELETE RECORD([Traducciones])
            End if 
         End if  
      End if  
   End for 

En este punto, si ejecuta la siguiente línea, puede crear tantos registros como necesite para la traducción al Español de sus tablas y campos.

   TRANSLATE TABLES AND FIELDS ("Español")

Una vez ejecutada esta llamada, puede introducir una traducción en el campo [Traducciones]Nombre traducido para cada uno de los nuevos registros.

Por último, cada vez que quiera mostrar en español los editores estándar 4D o los formularios con etiquetas dinámicas, ejecute la siguiente línea:

   LOCALIZED TABLES AND FIELDS ("Español")

con el método de proyecto TABLAS_Y_CAMPOS_LOCALIZADOS:

      ` 
TABLAS_Y_CAMPOS_LOCALIZADOS
 global method
      ` 
TABLAS_Y_CAMPOS_LOCALIZADOS
 (Text)
      ` 
TABLAS_Y_CAMPOS_LOCALIZADOS
 (LanguageCode)

   C_TEXT($1)  `Código del idioma 
   C_LONGINT($vlTabla;$vlCampo)
   C_TEXT($Idioma)
   C_LONGINT($vlNumTabla;$vlNumCampo)
   $Idioma:=$1

      `Actualización de los nombres de tablas
   ARRAY TEXT($asNombres;0)  ` Initialize arrays for SET TABLE TITLES and SET FIELD TITLES
   ARRAY INTEGER($aiNumeros;0)
   QUERY([Traducciones];[Traducciones]Codigo_Idioma=$Idioma;*)
   QUERY([Traducciones]; & ;[Traducciones]Campo_ID=0)  `nombres de tablas
   SELECTION TO ARRAY([Traducciones]Traduccion;$asNombres;[Traducciones]Tabla_ID;$aiNumeros)
   SET TABLE TITLES($asNombres;$aiNumeros)

      `Actualización de los nombres de campos
   $vlNumTabla:=Get last table number  ` Obtener el número de tablas en la base
   For($vlTabla;1;$vlNumTabla)  ` Pasar por cada tabla
      If(Is table number valid($vlTabla))
         QUERY([Traducciones];[Traducciones]Codigo_Idioma=$Idioma;*)
         QUERY([Traducciones]; & ;[Traducciones]Tabla_ID=$vlTabla;*)
         QUERY([Traducciones]; & ;[Traducciones]Campo_ID#0)  `evite que el cero sea nombre de tabla
         SELECTION TO ARRAY([Traducciones]Traduccion;$asNombres;[Traducciones]Campo_ID;$aiNumeros)
         SET FIELD TITLES(Tabla($vlTabla)->;$asNombres;$aiNumeros)
      End if
   End for 

Note que las nuevas localizaciones pueden añadirse a la base sin modificar el código o recompilarlo.

Ver también

Get last table number, SET FIELD TITLES, Table name.


4D - Documentation   Français   English   German   Español   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente