4D Doc Center : 4D v14 R5

Anuncio
4D v14 R5 - Actualización
Bienvenido a 4D v14 R5, la última versión del programa de integración continua de 4D. Este manual describe todas las nuevas
funcionalidades e implementaciones que se encuentran en esta versión.
Lenguaje
Modo Diseño
4D Server
Web Server
4D Internet Commands
4D SVG
4D Pack
4D Write Pro (preversión técnica)
Optimizaciones
Lenguaje
Get database measures
Get database parameter y SET DATABASE PARAMETER
OBJECT GET COORDINATES
Ventanas formularios barras de herramientas
Clickcount
LISTBOX GET CELL COORDINATES
Get database measures
Get database measures {( options )} -> Resultado
Descripción
A partir de 4D v14 R5, el comando Get database measures puede devolver nueva información sobre el uso de los índices, las
búsquedas y las ordenaciones.
Bajo ciertas condiciones (que se describe a continuación), nuevos atributos estarán disponibles en los objetos "tablas" e "índices":
nuevos atributos para "tablas": "campos" y "búsquedas"
nuevos atributos para "índices": "queryCount", "sortCount", "insertKeyCount", "deleteKeyCount"
Estos elementos de información le permiten analizar y optimizar la configuración interna de su base de datos. Por ejemplo,
para un índice, un alto número de elementos "insertKeyCount" y un bajo número de elementos "queryCount" y "sortCount"
pueden indicar que el índice es innecesario.
Además, el parámetro options ahora acepta un array texto como propiedad "ruta".
Nuevos atributos para el objeto tablas
El objeto "tables.table" ahora puede contener hasta dos nuevas propiedades, dependiendo de las búsquedas y ordenaciones
reales realizadas en la tabla:
"fields"
"queries"
fields
"fields" es un objeto que contendrá tantos atributos de nombre de campo (que también son sub-objetos) como el número de
campos que se utilizan para búsquedas y ordenaciones.
Cada objeto nombre de campo contiene:
un objeto "queryCount" (con o sin historia, en función del parámetro options) si una búsqueda se ha realizado utilizando este
campo
y/o un objeto "sortCount" ( en función del parámetro options) si una ordenación se ha realizado utilizando este campo.
Este atributo no se basa en el uso de índices; Todos los tipos de búsquedas y ordenaciones se tienen en cuenta.
Ejemplo:
Desde el lanzamiento de la base, varias búsquedas y ordenaciones se han efectuado utilizando los campos CompID, Name y
FirstName. El objeto devuelto contiene el sub-objeto "fields" (options con ruta y sin historial):
{
"DB": {
"CompID": {
}
"tables": {
},
"value": 1
"value": 3
"sortCount": {
} (...)
"Employees": {
"queryCount": {
"Name": {
},
}
},
"value": 2
"fields": {
"value": 3
"queryCount": {
"sortCount": {
"FirstName": {
}
Nota: el atributo "fields" sólo se crea si una búsqueda u ordenación se ha realizado sobre la tabla; de lo contrario este atributo no
estará presente.
queries
"queries"" es un array de objetos que ofrece una descripción de cada búsqueda realizada en la tabla. Cada elemento del array
contendrá tres atributos:
"queryStatement" (cadena): cadena de consulta que contiene los nombres de campos, pero no los valores búscados. Por
ejemplo: "(Companies.PK_ID != ?)"
"queryCount" (objeto):
"value" (número): número de veces que la sentencia de búsqueda se ha ejecutado, sin importar los valores buscados
"history" (array de objetos) (si se solicita en options): propiedades del historial estándar "value" y "time"
"duration" (objeto) (si "value" es > 0)
"value" (number): número de milisegundos
"history" (array de objetos) (si se solicita en options): propiedades del historial estándar "value" y "time"
Nota: el atributo "queries" se crea cuando al menos una búsqueda se ha realizado en la tabla.
Ejemplo:
Desde el lanzamiento de la base, una sola búsqueda se ha realizado en la tabla empleados (options con ruta y con historial):
{
"DB": {
"duration": {
{
2022
}, (...)
"tables": {
"Employees": {
"queries": [
{
"queryStatement": "(Employees.Name == ?)",
"queryCount": {
"value": 1,
"history": [
{
"value": 1,
"time": -2022
}
]
},
"value": 2,
"history": [
"value": 2,
"time": }
]
}
Nuevos atributos para el objeto indexado
El objeto "indexes.table.field" ahora puede contener hasta cuatro nuevos sub-objetos en función del uso del índice de la base
desde su lanzamiento:
"insertKeyCount": se actualiza cuando se inserta una nueva llave de índice
"deleteKeyCount": se actualiza cuando se elimina una llave de índice
"queryCount": se actualiza cuando se utiliza un índice para una búsqueda
"sortCount": se actualiza cuando se utiliza un índice para una ordenación
Sólo existen estas llaves si sus operaciones correspondientes se han realizado en algún momento desde el lanzamiento de la
base..
Ejemplo:
Desde el lanzamiento de la base, 2 registros se han creado y 16 registros se han eliminado en la tabla [Companies]. Esta tabla
tiene un campo "name" que está indexado. La tabla también se ha consultado y ordenado utilizando este campo. El objeto
resultante contendrá:
{
"DB": {
"indexes": {
"queryCount": {
"sortCount": {
"value": 2
"value": 16
"Companies": {
"value": 41
"value": 3
},
}
(...)
"Name":
(...)
},
},
"insertKeyCount": {
"deleteKeyCount": {
Array de path en el parámetro options
Ahora puede pasar un array de cadenas como una propiedad "path" del objeto options. Esta propiedad contiene un array de
rutas de acceso completas de las propiedades específicas que desea obtener, por ejemplo,
["DB.tables.Employee.records.diskWriteBytes",
"DB.tables.Employee.records.diskReadCount","DB.dataSegment1.diskReadBytes"]. Sólo los valores correspondientes son
devueltos en el objeto "DB".
Get database parameter y SET DATABASE PARAMETER
Get database parameter ( {aTable ;} selector {; stringValue} ) -> Resultado
SET DATABASE PARAMETER ( {aTable ;} selector ; value )
Descripción
Un nuevo parámetro selector está disponible para los comandos Get database parameter y SET DATABASE PARAMETER:
Constante
Tipo
Use legacy network layer Entero largo
Valor
87
Alcance: 4D en modo local y 4D Server.
Se conserva entre dos sesiones: sí
Descripción: define u obtiene el estado actual de la capa de red legacy para las conexiones cliente/servidor. La capa de
red legacy está en desuso a partir de 4D v14 R5 y debe ser reemplazada progresivamente en sus aplicaciones con la capa
de red ServerNet. ServerNet será necesario en las próximas versiones de 4D para beneficiarse de las futuras evoluciones
de la red. Por razones de compatibilidad, la capa de red legacy aún se soporta para permitir una transición sin problemas
para las aplicaciones existentes; (se usa por defecto en aplicaciones convertidas de una versión anterior a v14 R5). Pase 1
en este parámetro para utilizar la capa de red legacy (y desactivar ServerNet) para las conexiones cliente/servidor, y pase 0
para deshabilitar la red legacy (y utilizar ServerNet).
Esta propiedad también se puede definir mediante la opción "Usar capa de red legacy" que se encuentra en la página
"Compatibilidad" de las Propiedades de la base (ver Nueva capa red ServerNet). En esta sección, también puede
encontrar una discusión acerca de la estrategia de migración. Le recomendamos que active ServerNet tan pronto como sea
posible.
Tendrá que reiniciar la aplicación para que este parámetro sea tenido en cuenta. No está disponible en versión 4D Server
v14 R5 de 64 bits para OS X, que sólo soporta ServetNet; (siempre devuelve 0).
Posibles valores: 0 ó 1 (0 = no utilizan capa legacy, 1 = utilizan capa legacy)
Valor por defecto: 0 en bases de datos creadas con 4D v14 R5 o superior, 1 en bases de datos convertidas desde 4D v14
R4 o anterior.
OBJECT GET COORDINATES
OBJECT GET COORDINATES ( {* ;} objeto ; izq; arriba ; derecha ; abajo )
Descripción
Tema: Objetos (Formularios)
El comando OBJECT GET COORDINATES ahora puede devolver las coordenadas de partes específicas del listbox, es decir,
columnas, encabezados, pies de página, y no sólo los del objeto listbox padre.
En versiones anteriores, este comando siempre devolvía las coordenadas del listbox padre, independientemente de la parte del
listbox a la que se aplique. A partir de 4D v14 R5, cuando el parámetro object referencia un encabezado, una columna o un pie de
página del listbox, las coordenadas devueltas son las del sub-objeto listbox designado.
Puede utilizar esta nueva funcionalidad, por ejemplo, para mostrar un pequeño icono en la celda de encabezado de un listbox
cuando se pasa el cursor sobre ella, indicando al usuario que puede hacer clic para mostrar un menú contextual.
Nota de compatibilidad: si utiliza este comando con un encabezado, una columna o un pie de list box en sus aplicaciones
existentes, las coordenadas devueltas serán diferentes después de la conversión en 4D v14 R5 o superior. Si desea obtener las
coordenadas de todo el list box, es necesario cambiar el código para que el comando se llame en el propio objeto listbox en lugar
de un sub-objeto.
Por razones de coherencia, el marco de referencia utilizado es el mismo cuando el objeto es un listbox o un sub-objeto de list box:
el origen es la esquina superior izquierda del formulario que contiene el objeto. Para los sub-objetos listbox, las coordenadas
devueltas son teóricas; tienen en cuenta el desplazamiento aplicado al list box antes de que ocurra un posible clipping. Como
resultado, el sub-objeto puede que no sea visible (o sólo parcialmente) en sus coordenadas, y estas coordenadas pueden estar
fuera de los límites del formulario (o incluso ser negativas). Para averiguar si el sub-objeto es visible (y que parte es visible) es
necesario comparar las coordenadas devueltas con las coordenadas listbox, mientras considera las siguientes reglas:
Los límites de los sub-objetos dependen de las coordenadas de su listbox padre (devuelto por OBJECT GET
COORDINATES en el listbox).
Los sub-objetos encabezado y pie de página se muestran sobre el contenido de la columna: cuando las coordenadas de
una columna cruzan las coordenadas de las líneas de encabezado o pie de página, a continuación, la columna no se
muestra en esta intersección.
Los elementos de las columnas bloqueadas se muestran por encima de los elementos de las columnas desplazables:
cuando las coordenadas de un elemento en una columna desplazable se cruzan las coordenadas de un elemento en una
columna bloqueada, luego no se muestra en esta intersección.
Por ejemplo, considere el siguiente gráfico, donde las coordenadas de la columna Capital son simbolizadas por un rectángulo
rojo:
Como puede ver en la primera imagen, la columna es más grande que el listbox, por lo que sus coordenadas van más allá del
límite inferior del listbox, incluyendo el pie de página. En la segunda imagen, el listbox se ha desplazado, por lo que la columna
también se ha movido "bajos" las áreas de la columna Lenguaje y de encabezado. En cualquier caso, para calcular la parte visible
real (zona verde), es necesario restar las áreas rojas.
Ejemplo
Para las necesidades de su interfaz, usted desea rodear el área en la que el usuario hizo clic con un rectángulo rojo:
En el método objeto del listbox, puede escribir:
OBJECT SET VISIBLE(*;"rectangleInfo";False) //inicializar un rectángulo rojo
$ptr:=OBJECT Get pointer(Object current)
OBJECT GET COORDINATES($ptr->;$x1;$y1;$x2;$y2)
OBJECT SET VISIBLE(*;"RedRect";True)
OBJECT SET COORDINATES(*;"RedRect";$x1;$y1;$x2;$y2)
OBJECT GET COORDINATES(*;"LB1";$lbx1;$lby1;$lbx2;$lby2)
If($lby1>$y1)|($lby2<$y2)  // si el área en la que se hace clic está fuera del listbox
OBJECT SET VISIBLE(*;"Alert";True)  // mostrar un alerta
Else
OBJECT SET VISIBLE(*;"Alert";False)
End if
El método devuelve las coordenadas teóricas. Si el listbox es redimensionado, puede necesitar calcular el recorte para saber qué
parte es visible:
Ventanas formularios barras de herramientas
4D v14 R5 incluye una serie de implementaciones destinadas a ayudar a los desarrolladores a diseñar y administrar barras de
herramientas personalizadas. Las barras de herramientas son ventanas con propiedades específicas en cuanto a su posición y
tamaño.
Los siguientes comandos soportan la creación y la gestión de barras de herramientas:
Open form window: acepta el nuevo tipo Toolbar form window
Tool bar height: devuelve la altura de la barra de herramientas personalizada
HIDE TOOL BAR y SHOW TOOL BAR: anteriormente obsoletos, estos comandos se han reactivado para la gestión de
barras de herramientas personalizadas.
Open form window
Tema: Ventanas
Open form window ( {aTable ;} formName {; type {; hPos {; vPos {; *}}}} ) -> Resultado
El comando Open form window ahora puede crear ventanas formulario de tipo Barra de herramientas.
Una nueva constante ha sido añadido al tema "Crear ventana formulario" y utilizable en el parámetro type:
Constante
Tipo
Valor
Toolbar form window Entero largo 35
Cuando se pasa la constante Toolbar form window, la ventana se crea con la ubicación, el tamaño y las propiedades gráficas de
una barra de herramientas, es decir:
La ventana se mostrará siempre justo debajo de la barra de menús
El tamaño horizontal de la ventana se ajustará automáticamente para llenar todo el espacio disponible horizontal en el
escritorio (en OS X) o dentro de la ventana principal de 4D (en Windows). El tamaño vertical de la ventana se basa en las
propiedades del formulario, como todos los otros tipos de ventanas formulario.
La ventana no tiene bordes, no se puede mover y no se puede redimensionar manualmente, y HPOS, los parámetros posH,
PosV y * se ignoran si se pasan.
No es posible crear al mismo tiempo dos ventanas de barra de herramientas diferentes. Si Crear ventana formulario se llama
con el tipo Formulario ventana barra de herramientas mientras ya existe una ventana de barra de herramientas, se genera un error
-10613 ("No se puede crear dos ventanas formularios de tipo barra de herramientas").
Nota sobre las ventana formulario barra de herramientas y modo pantalla completa OS X: si su aplicación muestra a la vez
una ventana barra de herramientas y una ventana estándar que soporta el modo pantalla completa (opción Con modo pantalla
completa Mac), las reglas de interfaz requieren que se oculte la barra de herramientas cuando una ventana estándar entra en
modo pantalla completa. Para saber si una ventana ha cambiado al modo de pantalla completa, simplemente pruebe si su tamaño
vertical es exactamente el mismo que la altura de la pantalla (ver abajo).
Altura barra de herramientas
Tema: Windows (comando desplazado desde el tema "Interfaz de usuario")
Tool bar height -> Resultado
Parámetro Tipo
Entero
Resultado
largo
Descripción
<- Altura (expresada en píxeles) de la barra de herramientas o 0 si la barra de herramientas
está oculta
A partir de 4D v14 R5, este comando también funciona con las barras de herramientas personalizadas creadas por el comando
Open form window utilizando el tipo Toolbar form window.
Este comando devuelve la altura de la barra de herramientas visible actual, expresada en píxeles. Puede ser la barra de
herramientas del modo Diseño de 4D, o una barra de herramientas creada por Open form window, dependiendo del contexto (la
barra de herramientas del modo Diseño se oculta automáticamente si se muestra una barra de herramientas personalizada
creada por Open form window).
Si la barra de herramientas está oculta, el comando devuelve 0.
HIDE TOOL BAR y SHOW TOOL BAR
Tema: Ventanas (comandos desplazados desde el tema "User interface")
SHOW TOOL BAR
No requiere ningún parámetro
HIDE TOOL BAR
No requiere ningún parámetro
Estos comandos ya no son obsoletos en 4D partir de la versión 14 R5: ahora se pueden usar para manejar las ventanas formulario
de barras de herramientas personalizadas creadas con el comando Open form window para el proceso actual.
SHOW TOOL BAR: si se ha abierto una ventana barra de herramientas (llamando Open form window con la opción
Toolbar form window), el comando hace que esta ventana sea visible. Si la ventana barra de herramientas ya era visible o no
existe, este comando no hace nada.
HIDE TOOL BAR: si se ha abierto una ventana de la barra de herramientas (llamando Open form window con la opción
Toolbar form window), el comando oculta esta ventana. Si la ventana barra de herramientas ya estaba oculta o no existe,
este comando no hace nada.
Ejemplo
En OS X, que se ha definido una barra de herramientas personalizada y una ventana estándar con la opción Has full screen mode
Mac. Cuando una ventana estándar es maximizada por un usuario mientras se muestra la ventana de barra de herramientas, usted
no desea que la ventana maximizada sea solapada por la barra de herramientas.
Para evitar esto, en el evento "On Resize" del formulario de la ventana estándar, es necesario detectar cuando la ventana está en
modo de pantalla completa y luego llamar a HIDE TOOL BAR:
Case of
:(Form event=On Resize)
GET WINDOW RECT($left;$top;$right;$bottom)
If(Screen height=($bottom-$top))
HIDE TOOL BAR
Else
SHOW TOOL BAR
End if
End case
Has toobar button Mac constant deprecated
La constante Has toolbar button Mac es obsoleta, la opción correspondiente ha sido desaprobada por Apple desde OS X 10.6.
La constante estaba disponible en los temas "Crear ventana", "Crear ventana formulario". Se ha cambiado el nombre _O_Has
toolbar button Mac a partir de 4D v14 R5.
Clickcount
Clickcount -> Resultado
Parámetro
Resultado
Tipo
Entero largo
Descripción
Número de clics consecutivos
Descripción
Tema: Eventos formulario
El nuevo comando Clickcount devuelve, en el contexto de un evento clic, el número de veces que el usuario ha hecho clic de
manera repetida con el mismo botón del ratón. Normalmente, este comando devuelve 2 para un doble clic.
Este comando le permite detectar doble clics en los encabezados o pies de página del listbox, y también para manejar las
secuencias de triples clics o más.
Cada clic genera un evento clic separado. Por ejemplo, si un usuario hace doble clic, un evento es generado por el primer clic en
el cual Clickcount devuelve 1; luego otro evento es generado por el segundo clic, en el cual Clickcount devuelve 2.
Este comando sólo debe ser utilizado en el contexto de los eventos de formulario On Clicked, On Header Click u On Footer Click.
Por tanto, es necesario verificar en modo Diseño que el evento apropiado ha sido seleccionado correctamente en las
propiedades del formulario y/o para el objeto específico.
Cuando ambos eventos formulario On Clicked y On Double Clicked están activos, la siguiente secuencia será devuelta por
Clickcount:
1 en el evento On Clicked
2 en el evento On Double Clicked
2+n en el evento On Clicked
Ejemplo 1
La estructura de código siguiente se puede colocar en un encabezado de listbox para manejar clics simples y dobles:
Case of
:(Form event=On Header Click)
Case of
:(Clickcount=1)
... //single-click action
:(Clickcount=2)
... //double-click action
End case
End case
Ejemplo 2
Las etiquetas no son editables pero lo son después de un triple-clic. Si desea permitir a los usuarios editar las etiquetas, puede
escribir el método objeto siguiente:
If(Form event=On Clicked)
Case of
:(Clickcount=3)
OBJECT SET ENTERABLE(*;"Label";True)
EDIT ITEM(*;"Label")
End case
End if
LISTBOX GET CELL COORDINATES
LISTBOX GET CELL COORDINATES ( {* ;} objeto ; columna ; linea ; izq ; arriba ; der ; inf )
Parámetro
*
objeto
columna
linea
izq
arriba
der
inf
Tipo
Operador
Objeto de formulario
Entero largo
Entero largo
Entero largo
Entero largo
Entero largo
Entero largo
Descripción
Si se especifica = objeto es un nombre de objeto (cadena) Si se omite, objeto es una variable
Nombre de objeto (si se especifica *) o variable (si se omite *)
Número de columna
Número de línea
Coordenada izquierda del objeto
Coordenada superior del objeto
Coordenada derecha del objeto
Coordenada inferior del objeto
Descripción
El comando LISTBOX GET CELL COORDINATES devuelve en las variables o campos izq, arriba, der y inf las coordenadas (en
puntos) de la celda designada por los parámetros columna y linea, en el list box definido por * y objeto.
Si pasa el parámetro opcional *, indica que el parámetro objeto es un nombre de objeto (una cadena). Si no pasa el parámetro
opcional *, indica que el objeto es un campo o una variable. En este caso, se pasa una referencia de campo o variable (campo o
variable de tipo de objeto únicamente) en lugar de una cadena.
Por coherencia con el comando OBJECT GET COORDINATES, el origen es la esquina superior izquierda del formulario que
contiene la celda. Además, las coordenadas devueltas son teóricas; que tienen en cuenta el estado de desplazamiento del list box
antes de que ocurra cualquier recorte. Como resultado, la celda puede ser no visible (o sólo parcialmente) en sus coordenadas, y
estas coordenadas puede estar fuera de los límites del formulario (o incluso negativas). Para saber si la celda es visible (y que
parte de ella es visible) es necesario comparar las coordenadas devueltas con las coordenadas del listbox, teniendo en cuenta las
siguientes reglas:
Todas las celdas se cortan con las coordenadas de su list box padre (como los devueltos por OBJECT GET
COORDINATES en el list box).
Los Sub-objetos encabezado y pie de página se muestran sobre el contenido de la columna: cuando las coordenadas de
una celda se cruzan las coordenadas de las líneas de encabezado o pie de página, la celda no se muestra en esta
intersección.
Los elementos de las columnas bloqueadas se muestran sobre los elementos de las columnas desplazables: cuando las
coordenadas de un elemento en una columna desplazable cruzan las coordenadas de una columna bloqueada, entonces
que no se muestra en esta intersección.
Para más información, consulte la descripción del comando OBJECT GET COORDINATES.
Ejemplo
Usted quiere dibujar un rectángulo rojo alrededor de la celda seleccionada de un listbox:
OBJECT SET VISIBLE(*;"RedRect";False) //inicializar un rectángulo rojo
//el rectángulo ya está definido en alguna parte del formulario
LISTBOX GET CELL POSITION(*;"LB1";$col;$raw)
LISTBOX GET CELL COORDINATES(*;"LB1";$col;$raw;$x1;$y1;$x2;$y2)
OBJECT SET VISIBLE(*;"RedRect";True)
OBJECT SET COORDINATES(*;"RedRect";$x1;$y1;$x2;$y2)
Modo Diseño
Aumento de la longitud de los nombres de objetos de formularios
Aumento de la longitud de los nombres de objetos de formularios
Los nombres de objetos de formulario ahora pueden contener hasta 255 bytes. En versiones anteriores, estos nombres se
limitaron a 31 bytes.
El uso de nombres más largos para los objetos de formularios ofrece una mayor facilidad en la definición y aplicación de las
normas de denominación específicas, como "xxxx_Button" o "xxx_Mac".
4D Server
Nueva capa red ServerNet
4D Server, versión 64 bits para OS X (final)
Nueva capa red ServerNet
A partir de 4D v14 R5, las aplicaciones 4D contienen una nueva capa red, llamada ServerNet, para manejar las comunicaciones
entre 4D Server y las máquinas 4D remotas (clientes). ServerNet se basa en una API moderna y robusta. Es fácil de mantener y
facilita la implementación de las últimas tecnologías red al tiempo que ofrece un alto nivel de rendimiento.
La capa de red "legacy" ahora es obsoleta, pero aún se soporta por compatibilidad. ServerNet se utiliza automáticamente en las
nuevas bases.
Las nuevas opciones le permiten activar/desactivar ServerNet. Para asegurarse de que sus aplicaciones se beneficiarán de las
futuras evoluciones de red, le recomendamos que active ServerNet tan pronto como sea posible en todas sus bases.
Activar o desactivar la capa red anterior
Una nueva opción de compatibilidad le permite activar o desactivar la capa red legacy en su 4D Server en cualquier momento.
Puede utilizar:
la opción Utilizar la capa de red legacy en la caja de diálogo Propiedades de la base (ver más abajo), o
la constante Use legacy network layer en SET DATABASE PARAMETER (este punto se trata en la sección Get database
parameter y SET DATABASE PARAMETER)
La nueva opción de compatibilidad se encuentra en la página Compatibilidad:
Nota: esta opción se ignora en 4D Server v14 R5 versión 64 bits para OS X; sólo ServerNet se puede utilizar en esta plataforma.
Por defecto, esta opción está:
deseleccionada para las nuevas bases creadas con 4D v14 R5 y posteriores (que utilizan la nueva capa ServerNet),
seleccionada para las bases de datos existentes convertidas (utilizan la capa de red legacy).
Puede activar o desactivar la opción de ser necesario, por ejemplo, durante la fase de migración de las aplicaciones clientes (ver
más abajo).
Tenga en cuenta que en caso de una modificación, es necesario reiniciar la aplicación para que el cambio se tenga en cuenta.
Todas las aplicaciones cliente que se han conectado también se deben reiniciar para poder conectar con la nueva capa (la
versión mínima del cliente para el uso de la capa ServerNet es 4D v14 R4, ver más abajo).
Migración de los clientes 4D fusionados
Cuando activa la capa ServerNet en su aplicación servidor, sólo las aplicaciones clientes 4D compatibles podrán conectarse:
Los clientes en versión 4D v14 R4 y superior pueden conectarse sin modificación.
Los clientes en versiones anteriores (v14.x y otros releases v14 'R') primero deben actualizarse para poder conectarse al
servidor.
Si su aplicación trabaja con clientes fusionados en versiones anteriores a v14 R4, y desea utilizar el mecanismo automático de 4D
Server para distribuir sus aplicaciones clientes actualizadas través de la red, es necesario establecer una estrategia de migración.
Esta estrategia debe basarse en los siguientes principios:
Los clientes no compatibles sólo pueden conectarse a un 4D Server que utilice la capa red legacy.
Los clientes actualizados pueden adaptar su protocolo de forma dinámica para que puedan conectarse a 4D Server v14 R5
y siguientes, independientemente de la capa red que el servidor esté utilizando.
Su estrategia de migración debe seguir estos pasos:
1. Crear aplicaciones cliente actualizadas con 4D v14 R5 o superior.
2. Ejecute 4D Server v14 R5 con el parámetro "Utilizar capa red legacy" activo.
Esta configuración permite que todos los clientes se conecten.
Nota: tenga en cuenta que 4D Server v14 R5 versión de 64 bits para OS X no admite esta opción.
3. Espere un período de tiempo determinado hasta que cada cliente haya conectado y descargado la nueva versión.
Esto puede durar un día, una semana o incluso más tiempo. Durante este período de transición, tanto los clientes antiguos y
los nuevos pueden conectarse al servidor de red legacy.
4. Una vez que todos los clientes se han actualizado, puede desactivar la capa red legacy y finalmente cambiar a ServerNet en
4D Server.
Esta estrategia se representa en el siguiente diagrama:
Registrar las peticiones de los clientes
Durante el proceso de migración, le recomendamos activar el archivo de diagnóstico de 4D. Cuando se activa, 4D Server registra
cada solicitud de actualización de clientes en este archivo, lo que le permite controlar el proceso. Este registro no se activa por
defecto: necesita llamar al comando SET DATABASE PARAMETER con la constante Diagnostic log recording y el valor 1.
Para cada solicitud de actualización, se registra la siguiente información:
IP del cliente
versión del cliente
evento "Update client"
Controlar el archivo de diagnóstico también es útil después de que haya cambiado el servidor a la capa red ServerNet, para
asegurarse de que todos los clientes se actualicen correctamente. Si un cliente no compatible intenta conectarse, el servidor
registra la entrada siguiente:
IP del cliente
versión del cliente
evento "Fail to connect"
En este caso, puede decidir, por ejemplo, actualizar al cliente de forma manual.
4D Server, versión 64 bits para OS X (final)
Desde 4D v14 R3, 4D ofrece una preversión operacional de 4D Server 64 bits para OS X. Esta versión se describe en el manual
4D v14 R3 - Actualización (PDF).
El desarrollo de esta versión se realiza de manera continua, paso a paso, y las funciones que antes no estaban disponibles ya
están activadas en la versión preliminar R5 de 4D Server 64 bits para OS X.
Feature status
Esta tabla ofrece el estado actual de las funcionalidades que aún no estaban disponibles en la versión preliminar inicial (v14 R3)
de la versión de 64 bits de 4D Server para OS X.
Funcionalidad/Tecnología
Estado actual
Comunicación del puerto serial
Cajas de diálogo Import/Export
Editor de etiquetas
Los gráficos generados en el servidor
Cliente HTTP (Gestión de certificados de cliente)
4D Internet Commands (plug-in)
4D Pack (plug-in)
4D ODBC Pro (plug-in)
4D For OCI (plug-in)
No disponible
No disponible
No disponible
Disponible desde la versión R4
Disponible desde la versión R4
Disponible desde la versión R4
Disponible en versión R5 (ver 4D Pack, versión 64 bits para OS X)
No disponible
No disponible
Web Server
Caché web de 4D activada por defecto
Caché web de 4D activada por defecto
A partir de 4D v14 R5, la caché Web de 4D para los recursos estáticos está activa por defecto en las nuevas bases. En la caja de
diálogo Propiedades de la base, la opción Utilizar la caché Web de 4D ahora se selecciona automáticamente para las nuevas
bases de datos:
Para bases de datos convertidas de versiones anteriores, el valor de esta opción se deja intacto.
4D Internet Commands
SMTP_QuickSend
SMTP_QuickSend
SMTP_QuickSend ( nomServidor; msgDe ; msgA ; asunto ; mensaje {; paramSesion}{; puerto}{; nomUsuario ; contrasena} ) > Resultado
Parámetro
nomServidor
msgDe
msgA
asunto
mensaje
Tipo
Cadena
Texto
Texto
Texto
Texto
Entero
paramSesion largo
puerto
nomUsuario
contrasena
Function
result
->
->
->
->
->
->
Descripción
Nombre o dirección IP del servidor
Correo electrónico o lista de correos
Correo electrónico o lista de correos
Asunto del mensaje (UTF-8 por defecto)
Mensaje (UTF-8 por defecto)
0 o si se omite = No utilizar SSL sino switchover permitido, 1 = Utilizar SSL, 2 = Nunca utilizar
SSL (switchover no permitido), 4 = Enviar texto HTML sin SSL, 5 = Enviar texto HTML con SSL,
8 = Enviar Mime HTML sin SSL/TLS, 9 = Enviar Mime HTML con SSL/TLS
Entero
largo
Texto
Texto
-> Número de puerto a utilizar
Entero
<- Código del error
-> Nombre de usuario para la autenticación
-> Contraseña para la autenticación
Descripción
El comando SMTP_QuickSend ahora le permite enviar mensajes con el formato HTML MIME, con o sin el protocolo SSL/TLS.
Mime HTML (.mht o extensión de archivo .mhtml) es un formato de archivo de la página Web que puede fusionar el código HTML,
así como también los recursos externos, tales como imágenes en un único documento. Es soportado por varios navegadores, así
como también por MS Word, por ejemplo. Dado que este formato es soportado por las áreas 4D Write Pro, usted podrá guardar y
enviar áreas 4D Write Pro por correo incluyendo todos sus recursos.
Pase 8 en paramSesion para formatear el mensaje en Mime HTML y enviarlo en modo estándar.
Pase 9 en paramSesion para formatear el mensaje en Mime HTML y enviarlo en modo SSL/TLS.
Estos valores corresponden a las combinaciones habituales, sin embargo el parámetro paramSesion es una realidad un campo
de bits y permite cualquier combinación personalizada si utiliza operadores en los bits:
Número
de bit
0
Formato utilizado si el bit es 1
Utilizar SSL o el comportamiento predeterminado, conexión en claro, y actualización a SSL si es posible.
Nunca actualizar, permanecer en modo no cifrado, incluso si la actualización es posible. Bit se ignora si SSL (bit
0) se ha seleccionado.
El cuerpo del mensaje es HTML, definir el encabezado correspondiente.
Mensaje MHTML, el bit 2 (HTML) se ignora. El usuario es responsable de definir todos los encabezados, excepto
"A", "De", "Fecha" y "Asunto"
1
2
3
Nota: este comando no soporta bases de datos convertidas corriendo en modo "Non-Unicode".
Ejemplo
Usted guardó un documento .mht de su disco y desea enviarlo por correo electrónico. Para ello, puede escribir:
$Message:=Document to text("c:\\documents\\invitation.mht")
$Host:="smtp.gmail.com"
$ToAddress:="[email protected]"
$FromAddress:="[email protected]"
$Subject:="Let's party"
$Param:=9 //MHTML with SSL
$Port:=465 //SSL port of gmail
$User:="[email protected]"
$Password:="xyz&@!&@"
$Error:=SMTP_QuickSend($Host;$FromAddress;$ToAddress;$Subject;$Message;$Param;$Port;$User;$Password)
4D SVG
Filtros con Direct2D activado en Windows
Filtros con Direct2D activado en Windows
Los comandos SVG_Filter_Blend, SVG_Filter_Blur y SVG_Filter_Offset ahora son soportados en Windows con Direct2D
habilitado en contexto de software gráfico (contexto por defecto en 4D v14, ver la opción Direct2D Software en el comando SET
DATABASE PARAMETER.
En las versiones anteriores de 4D, estos comandos requieren que Direct2D esté desactivado en Windows.
4D Pack
4D Pack, versión 64 bits para OS X
Comandos obsoletos renombrados
4D Pack, versión 64 bits para OS X
Con la versión v14 R5, 4D ofrece una versión de 64 bits de 4D Pack para OS X. Esta versión le permitirá utilizar el plug-in 4D
Pack con la versión de 64 bits de 4D Server para OS X, que fue lanzado con 4D v14 R3.
La instalación y uso de la versión de 64 bits del plug-in 4D Pack para OS X es similar a las versiones existentes, a excepción de
ciertas limitaciones que se enumeran a continuación.
Comando no soportado
Todos los comandos 4D Pack que estaban disponibles en Mac OS son soportados con la versión de 64 bits para OS X, a
excepción de:
_o_AP Save BMP 8 bits_o_AP Save BMP 8 bits
Este comando se basa en una tecnología obsoleta y ya era obsoleta en lanzamientos anteriores 4D Pack. No se soporta en
la versión de 64 bits de 4D Pack para OS X.
Comandos obsoletos renombrados
Varios comandos 4D Pack han quedado en desuso desde hace mucho tiempo y le recomendamos que no los utilice en nuevos
proyectos. Para una identificación más clara, estos comandos tiene el prefijo "_o_" a partir de 4D Pack v14 R5:
Tema
Nombre anterior
Nuevo nombre
Estado
4D_Pack: ANSI
streams
AP FCLOSE
_o_AP FCLOSE
Obsoleto
AP fopen
AP FPRINT
AP fread
AP Save BMP 8
bits
AP Add table and
fields
AP Create relation
AP Get file MD5
digest
_o_AP fopen
_o_AP FPRINT
_o_AP fread
_o_AP Save BMP 8
bits
Obsoleto
Obsoleto
Obsoleto
AP ShellExecute
_o_AP ShellExecute
4D Pack: Picture
files
4D Pack: Utilities
_o_AP Add table and
fields
_o_AP Create relation
_o_AP Get file MD5
digest
Obsoleto, no soportado en OS X 64-bit
Obsoleto, no documentado
Obsoleto, no documentado
Obsoleto, remplazado por Generate digest
Obsoleto, remplazado por LAUNCH EXTERNAL
PROCESS
4D Write Pro (preversión técnica)
4D Write Pro es el sucesor del plug-in 4D Write.
4D Write Pro representa un desarrollo importante para 4D, por lo que se está aprovechando el programa de versiones R para
entregarlo progresivamente. 4D v14 R5 incluye el primer paso con 4D Write Pro como una preversión técnica. Esta etapa inicial
se centra en la compatibilidad de los documentos existentes y de los correos electrónicos con formato HTML. Para cada paso
posterior, el conjunto de las funcionalidades y de los comandos del lenguaje se extenderán.
Tenga en cuenta que:
4D Write Pro está utilizando la misma licencia que 4D Write,
4D Write Pro ya no es un plug-in está completamente integrado en 4D, por lo que es fácil de gestionar e implementar.
Acerca de la documentación de 4D Write Pro
Las funcionalidades de 4D Write, incluyendo los nuevos comandos del lenguaje, están totalmente documentadas en el nuevo
manual Referencia 4D Write Pro.
Sobre esta preversión técnica
Esta preversión técnica de 4D Write Pro se publica para mostrarles el nivel de progreso con miras a la implementación del
producto; también queremos que lo prueben y nos den retroalimentación. Por supuesto, algunas características no están aún
plenamente desarrolladas y pueden experimentar cierta inestabilidad.
La siguiente tabla muestra el estado actual de las principales funcionalidades:
Funcionalidad
Crear un área 4D Write Pro en un formulario
Crear un nuevo documento 4D Write Pro vacío
Importar un documento 4D Write en un objeto 4D
Write Pro
Exportar un objeto 4D Write Pro a un documento
o variable
Editar un documento con la ayuda de un menú
emergente contextual
Insertar expresiones (campos de base, resultados
del método 4Ds
Editar el contenido de un documento por
programación
Imprimir un documento 4D Write Pro
Manejo de la paginación
Acceder a las propiedades del documento por
programación
Almacenar un documento 4D Write Pro en un
campo de la base
Interfaz 4D Write Pro
Estado de los comandos 4D Write Pro
Importar documentos 4D Write
Estado actual (Preversión
técnica R5)
Comentario
Disponible
Disponible
WP New
Disponible
WP Import document o WP New
Disponible
WP EXPORT DOCUMENT y WP
EXPORT VARIABLE
Disponible
Disponible
Parcialmente disponible
No disponible
No disponible
No disponible
No disponible
Uso del comando ST INSERT
EXPRESSION
Uso de los comandos 4D "ST" y
"OBJECT"
Interfaz 4D Write Pro
Si la propiedad Menú contextual está seleccionada por un área 4D Write Pro (ver Crear un área 4D Write Pro), un menú
contextual completo estará disponible para los usuarios en el modo Aplicación:
Este menú ofrece acceso a todas las funcionalidades 4D Write Pro disponibles actualmente (en la versión final, todas las
funcionalidades y propiedades también estarán disponibles por programación).
Dado que ni la organización del menú contextual ni su contenido son definitivos en este momento, no vamos a describir las
funcionalidades individuales en esta documentación. Lo invitamos a navegar a través de los diferentes sub-menús para tener una
idea de lo que 4D Write Pro es capaz de hacer.
Nota: en esta vista previa técnica, los documentos 4D Write Pro se muestra por defecto en modo vista página Web. En este
modo, el texto se ajusta automáticamente y la barra de desplazamiento horizontal (si está definida) está desactivada. Si desea
utilizar una barra de desplazamiento horizontal y tener texto con un ancho fijo (definido en la propiedad "Tamaño de página"), es
necesario cambiar al modo de visualización de página Normal.
Estado de los comandos 4D Write Pro
En 4D Write Pro v14 R5, hay varios comandos nuevos en el tema "4D Write Pro" para manejar áreas 4D Write Pro. Estos
comandos están documentados en el capítulo Lenguaje 4D Write Pro del manual de referencia de 4D Write Pro.
La siguiente tabla muestra el estado de implementación de los comandos 4D Write Pro en la vista previa técnica de 4D v14 R5:
Nombre del
comando
WP EXPORT
VARIABLE
WP EXPORT
DOCUMENT
WP Import
document
WP New
Estado actual (vista previa técnica R5)
Sólo dos formatos de exportación están disponibles actualmente
Si no pasa el parámetro formato, debe utilizar la extensión del archivo ".htm" o ".html"; sólo un formato de
exportación está disponible actualmente
Para obtener una lista detallada de las funcionalidades 4D Write que actualmente son soportadas en objetos
4D Write Pro, consulte la sección Importar documentos 4D Write.
Para obtener una lista detallada de las funcionalidades 4D Write que actualmente están soportadas en
objetos 4D Write Pro, consulte la sección Importar documentos 4D Write.
Nota: tenga en cuenta que sólo los comandos de los temas "Objectos (formularios)" y "Texto con estilo" pueden utilizarse con
áreas 4D Write Pro (ver las secciones Utilizar los comandos del tema Objeto (Formularios) y Utilizar los comandos del
tema Texto con estilo).
Importar documentos 4D Write
Una de las principales funcionalidades del nuevo 4D Write Pro es la capacidad de importar y convertir documentos 4D Write Pro
existentes. Esto le permitirá migrar las aplicaciones que se basan en el plug-in 4D Write.
Nota de compatibilidad: sólo los documentos 4D Write de la última generación ("4D Write v7") son soportados.
Cómo importar un documento 4D Write
En esta vista previa técnica, los objetos 4D Write Pro ofrecen dos maneras de importar documentos 4D Write:
Para los archivos 4D Write Pro almacenados en el disco, se utiliza el comando WP Import document,
Para las áreas 4D Write almacenadas en campos BLOB, se utiliza el comando WP New.
Para más información, consulte la descripción de estos comandos.
¿Qué propiedades se conservan de 4D Write?
Para facilitar la migración desde el plug-in 4D Write a 4D Write Pro, queremos soportar tantas funcionalidades 4D Write como
sea posible en objetos 4D Write Pro.
Este párrafo muestra las propiedades del plug-in 4D Write que se recuperan en un área 4D Write Pro después de una importación
con los comandos WP Import document o WP New.
Tenga en cuenta sin embargo, que hay algunas diferencias, que no se consideran como bugs. Esto se debe, por ejemplo, a la
fuente predeterminada utilizada en 4D Write Pro para viñetas, o pequeñas conversiones en el tipo Subrayado.
Información del documento
Plug-in 4D Write
4D Write Pro
Creación fecha y hora
Modificación fecha y hora
Bloqueado
Título
Tema
Autor
Empresa
Notas
Disponible en v14 R5
Disponible en v14 R5
No disponible (utilizar la propiedad objeto sólo lectura)
Disponible en v14 R5
Disponible en v14 R5 (sólo texto plano)
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Parámetros de visualización del documento
Plug-in 4D Write
4D Write Pro
Vista modo página
Vista reglas
Vista marcos
Vista encabezado
Vista pie
Vista encabezado de primera página
Vista pie de primera página
Vista imágenes
Vista HScrollbar
Vista VScrollbar
Vista invisible characters
Vista referencias
Vista separadores de columna
Vista H Splitter
Vista V Splitter
Vista Wysiwyg
Vista zoom
No importado (utilizar el modo de vista Documento/Página en el menú contextual)
No disponible
No disponible
No disponible
No disponible
No disponible
No disponible
No disponible
No importado (utilice la propiedad de objeto desplazable hor.)
No importado (utilice la propiedad de objeto desplazable vert.)
No disponible
No importado (utilice ST SET OPTIONS)
No disponible
No disponible
No disponible
No disponible
No importado (utilice Document/Zoom en el menú contextual)
Parámetros del documento
Plug-in 4D Write
4D Write Pro
Unidad
Lenguaje
Conteo de columnas
Espacio entre columnas
Viudas y huérfanos
Pestaña por defecto
Pestaña Líder
Color URL
Color visitado URL
No disponible
No disponible
No disponible
No disponible
No disponible
Disponible en v14 R5
No disponible
No disponible
No disponible
Parámetros de paginación de documentos
Plug-in 4D Write
4D Write Pro
Ancho de página
Alto página
Número primera página
Primera página encabezado pies diferentes
Página encabezado Izquierda y derecha y pie de página diferentes
Encuadernación
Páginas opuestas
Márgenes página
Encabezado margen superior
Encabezado margen inferior
Pie de página margen superior
Pie de página margen inferior
Primera página margen superior
Primera página margen inferior
Encabezado primera página margen superior
Encabezado primera página margen inferior
Pie de página primera página margen superior
Pie de página primera página margen inferior
Primera página es correcta
No disponible
No disponible
No disponible
No disponible
No disponible
No disponible
No disponible
Disponible en v14 R5 (implementación temporal)
No disponible
No disponible
No disponible
No disponible
No disponible
No disponible
No disponible
No disponible
No disponible
No disponible
No disponible
Parámetros de impresión de documentos
Plug-in 4D Write
4D Write Pro
Clase de papel
Paisaje
Ancho
Alto
Márgenes de usuario
Escala
Resolución X
Resolución Y
No disponible
No disponible
No disponible
No disponible
No disponible
No disponible
No disponible
No disponible
Imágenes
Nota: 4D Write Pro aun no soporta posicionamiento absoluto para las imágenes en las páginas. Sólo las imágenes en línea son
compatibles y se importan para esta vista previa técnica.
Plug-in 4D Write
4D Write Pro
X (izquierda)
Y (arriba)
Ancho
Alto
Número de página
Detrás
No en primera página
Modo de visualización (escala a ajustar, etc.)
Es una expresión
Conservar el tamaño
(para imágenes en página unicamente)
(para imágenes en página unicamente)
Disponible en v14 R5
Disponible en v14 R5
No disponible
No disponible
No disponible
Disponible en v14 R5
No disponible
No disponible
Propiedades de caracteres
Plug-in 4D Write
4D Write Pro (span)
Italica
Negrita
Tachado
Subrayado
Sombra
Exponente (superscript o subscript)
Mayúsculas o pequeñas mayúsculas
Familia de fuente
Tamaño de fuente
Color texto
Color fondo de texto
Color subrayado
Color tachado
Color sombra
Propiedad usuario
Corrección ortográfica (sintaxis y
gramática)
Apariencia
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
No disponible
No disponible
No disponible
No importado (los estilos son importados pero las hojas de estilo no están
disponibles)
Hoja de estilo
Propiedades párrafos
Plug-in 4D Write
4D Write Pro
Justificación
Interlinea
Viñetas
Margen izquierdo
Margen derecho
Indentar texto
Estilo borde linea
Color borde linea
Color fondo borde
Borde izquierdo
Borde derecho
Borde superior y borde interior arriba
Borde inferior y borde interior inferior
Espacio de borde
Hoja de estilo
Tabulaciones
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Disponible en v14 R5
Hyperlinks
Plug-in 4D Write
4D Write Pro
Enlace URL
Enlace método 4D
Enlace documento abierto
Disponible en v14 R5
No disponible
No disponible
Expresiones 4D
Plug-in 4D Write 4D Write Pro
Expresión 4D
Fecha y hora
Expresión HTML
Expresión RTF
Disponible en v14 R5
Disponible en v14 R5
No disponible
No disponible
Datos de texto
Plug-in 4D Write
4D Write Pro
Datos de texto principales
Datos de texto encabezado
Datos de texto Pie
Disponible en v14 R5
No disponible
No disponible
Optimizaciones
SQL Select Group by y Order by statements
Seguridad de red
SQL Select Group by y Order by statements
A partir de 4D v14 R5, las sentencias SQL SELECT con cláusulas GROUP BY y ORDER BY han sido optimizadas en diferentes
configuraciones:
SELECT FROM GROUP BY o SELECT FROM ORDER BY aplicado a una sola tabla,
SELECT FROM GROUP BY o SELECT FROM ORDER BY aplicado a varias tablas y el uso de combinaciones internas.
Las optimizaciones conciernen únicamente a las referencias de columnas simples (no expresiones).
Típicamente, en 4D v14 R5 y versiones posteriores, los siguientes casos se ejecutarán más rápido:
Ejemplos Order by
Begin SQL
DROP TABLE IF EXISTS T1;
DROP TABLE IF EXISTS T2;
CREATE TABLE T1 (C1 INT);
CREATE TABLE T2 (C2 INT);
INSERT INTO T1(C1) VALUES
INSERT INTO T1(C1) VALUES
INSERT INTO T1(C1) VALUES
INSERT INTO T2(C2) VALUES
INSERT INTO T2(C2) VALUES
End SQL
(1);
(2);
(3);
(2);
(3);
ARRAY LONGINT($result;0)
ARRAY LONGINT($result1;0)
ARRAY LONGINT($result2;0)
// Un ejemplo simple ORDER BY con T1 y T2.
// $result contendrá [2, 3].
Begin SQL
SELECT C1
FROM T1, T2
WHERE C1=C2
ORDER BY C1
INTO :$result
End SQL
// ORDER BY también funciona si se utilizan varias columnas.
// $result1 y $result2 contendrán cada uno [2, 3].
Begin SQL
SELECT C1, C2
FROM T1, T2
WHERE C1=C2
ORDER BY C1, C2
INTO :$result1, :$result2
End SQL
// Sólo las referencias de columnas simples se optimizan. Si una expresión
// como se muestra a continuación (C1 + 1) si se utiliza para la selección, luego la ejecución
no
// será más rápida. $result contiene [3, 4].
Begin SQL
SELECT C1 + 1
FROM T1, T2
WHERE C1=C2
ORDER BY C1
INTO :$result
End SQL
// Puede utilizar un índice de referencia en la selección.
// Como se estableció antes, la selección sólo contiene referencias de columnas simples para
una ejecución más rápida.
// $result contendrá [ 2, 3 ].
Begin SQL
SELECT C1
FROM T1, T2
WHERE C1=C2
ORDER BY 1
INTO :$result
End SQL
Ejemplo Group by
Begin SQL
DROP TABLE IF EXISTS T1;
DROP TABLE IF EXISTS T2;
CREATE TABLE T1 (C1 INT, C3 INT);
CREATE TABLE T2 (C2 INT);
INSERT INTO T1(C1, C3) VALUES (3,
INSERT INTO T1(C1, C3) VALUES (1,
INSERT INTO T1(C1, C3) VALUES (2,
INSERT INTO T1(C1, C3) VALUES (3,
INSERT INTO T1(C1, C3) VALUES (2,
INSERT INTO T1(C1, C3) VALUES (3,
INSERT INTO T2(C2) VALUES (2);
INSERT INTO T2(C2) VALUES (3);
End SQL
1);
1);
1);
1);
1);
1);
ARRAY LONGINT($result;0)
ARRAY LONGINT($result1;0)
ARRAY LONGINT($result2;0)
//Ejemplo simple de GROUP BY con T1 y T2 juntos.
//$result contendrá [2, 3]. Note que no hay garantía de que los grupos se devuelvan..
//en orden ascendente, es decir, $result puede ser [3, 2].
Begin SQL
SELECT C1
FROM T1, T2
WHERE C1=C2
GROUP BY C1
INTO :$result
End SQL
// Este es un ejemplo simple de una petición agregada.
// Como C3 siempre es 1, para cada grupo (valor único de C1),
// SUM(C3) es el número de repeticiones.
// $result1 contendrá [2, 3].
// $result2 también contendrá [2, 3].
Begin SQL
SELECT C1, SUM(C3)
FROM T1, T2
WHERE C1=C2
GROUP BY C1
INTO :$result1, :$result2
End SQL
Seguridad de red
Las funciones de seguridad de red se han optimizado en 4D v14 R5 para que pueda reforzar la protección de sus aplicaciones
4D:
La lista de cifrado débil se ha eliminado,
La longitud de la llave de certificado 4D por defecto se ha aumentado a 2048 bits,
Ahora puede utilizar sus propias llaves de cifrado para las comunicaciones seguras.
Estas modificaciones se refieren a las siguientes conexiones seguras:
Cliente/servidor
Servidor SQL
Cliente HTTP
Descargar