Skip to content

Instantly share code, notes, and snippets.

@fdzuluaga2020
Last active February 3, 2023 07:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save fdzuluaga2020/2df7e96dcaea0d082f720de906caf311 to your computer and use it in GitHub Desktop.
Save fdzuluaga2020/2df7e96dcaea0d082f720de906caf311 to your computer and use it in GitHub Desktop.
SCRIPTCASE
LOGIN :
Por default el User y el Password son los mismos : Admin
-----------------------------------------------------------------------------------------------------------------------------------------
CONFIGURACION INICIAL :
Icono del Proyecto :
 
- Puedo subir iconos personales con extension png de 100 x 100 pxls
 
Idiomas :
 
- Siempre escoger para los idiomas codificacion UTF8
-----------------------------------------------------------------------------------------------------------------------------------------
DATABASE CONNECTION :
ServerHostName or IP :
- Para Desarrollo Local : se usa la direccion Ip del Xampp, en este caso seria 192.168.64.2
- Port : 3306
- Username : Se debe crear un nuevo usuario que no sea root con su propia clave, aparentemente existe un conflicto entre el servidor Linux y el servidor Apache y el MySql si se trata de usar el usuario root sin clave. PARA DESARROLLO LOCAL EL USERNAME ES (COBO)
- Password : Se define el password para el nuevo usuario creado, este usuario debe tener todos los privilegios para poder trabajar en la base de datos. PARA DESARROLLO LOCAL EL PASSWORD ES (COBO)
- Client Encoding : Utf8
- Driver : MySQLi
- Persisten Connection : No
- Use the schema before the table name : Yes
-----------------------------------------------------------------------------------------------------------------------------------------
PROPERTIES :
Desde esta opcion puedo cambiar cualquier elemento definido en la configuracion inicial tales como idiomas, descripciones, conexiones, etc
El proyecto de Scriptcase tambien tiene Favicon, muy importante para actualizarlo, en principio deberia ser el favicon de Core Data Concepts
-----------------------------------------------------------------------------------------------------------------------------------------
VALORES PREDETERMINADOS :
Cada vez que se crea una aplicacion en Scriptcase, esta se crea con base en unos valores predeterminados.
Seria una muy buena practica primero que todo definir los valores predeterminados para la creacion de aplicaciones y asi incrementar la productividad.
Esta opcion se puede modificar desde la Opcion del Menu de Proyecto en Valores Predeterminados
-----------------------------------------------------------------------------------------------------------------------------------------
DICCIONARIO DE DATOS :
Se encuentra disponible en el Menu de Herramientas
Es muy importante para acelerar el desarrollo de aplicaciones ya que nos permite definir :
- Etiquetas para los campos
- Tipos de Campos
- Valores Predeterminados de los Campos
DE ESTA MANERA DEFINO LAS ETIQUETAS PARA TODA LA BASE DE DATOS DE UNA SOLA VEZ
Luego se va a la Opcion de Locales para proceder a traducir las etiquetas a los diferentes idiomas escogidos
-----------------------------------------------------------------------------------------------------------------------------------------
SHORCUTS :
CTRL + BARRA ESPACIADORA : me muestra las opciones de acuerdo a lo que se este haciendo en las aplicaciones de codigo
Seleccion de Multiples puntos de Insercion : muy util cuando tengo que insertar el mismo texto en varias lineas de programacion :
- Se marca el primer punto de insercion en la primera linea
- Luego hago COMMAND + click en las siguientes lineas en donde deseo se aplique el punto de insercion
Procedo a insertar el texto y este es inserta automaticamente en todos los puntos de insercion
-----------------------------------------------------------------------------------------------------------------------------------------
CRUD :
- Create
- Read
- Update
- Delete
-----------------------------------------------------------------------------------------------------------------------------------------
TEMPLATES :
Si voy a desarrollar la aplicacion en base a alguna de las aplicaciones de muestra que trae el Scriptcase :
Al momento de crear la conexion a la base de datos, darte CREATE DATABASE, esto con el fin de que el sistema me genere las tablas de la base de datos que se requiere para este proyecto pero con base en el nombre asignado para la base de datos y asi evitar conflictos
-----------------------------------------------------------------------------------------------------------------------------------------
FIELDS :
Todos los campos en scriptcase se referencian entre llaves ({}) y si se usan en sentencias sql son entre comillas simples
('{}')
En la opcion de Fields del constructor siempre existe la posibilidad de crear campos dinamicos, estos son campos que se crean en tiempo de ejecucion y no se graban en la base de datos, se crean usando el icono (+), estos campos se pueden distinguir ya que tienen al frente un icono de basura para poderlos borrar en cualquier momento.
Los campos dinamicos son muy utiles para realizar calculos on the fly que no necesariamente se desean tener en la base de datos o campos que correspondan a criterios de actualizacion cambiantes como por ejemplo el inventario y el precio unitario del mismo, valores que son muy cambiantes y simplemente lo que deseo es tener un campo que me refleje el inventario valorizado en algun momento del tiempo. Para ello no vale la pena o incluso es un complique el tener el inventario valorizado en la base de datos, lo mejor entonces es tener un campo dinamico que me lo visualice y listo
En la opcion de Fields del constructor puedo seleccionar el campo que desee, en cada campo existe la posibilidad de configurar el lookup setting que me permite definir la manera como se va a presentar el campo, asi por ejemplo si se tiene un campo como id cuya descripcion se encuentra en otra tabla simplemente se hace el lookup a la descripcion del campo en esa tabla
-----------------------------------------------------------------------------------------------------------------------------------------
SETTINGS :
En la opcion de Settings del Menu Options puedo configurar :
- System Settings : duracion de la sesion, configuracion del servidor de correo para poder enviar emails
- Default Values : la parametrizacion con la que se crearan incialmente todas las aplicaciones
- System Folders : visualiza las carpetas en donde se almacena la informacion del sistema
- Services / Backup : permite realizar copia de todos los proyectos de scriptcase, ademas hecer download del backup
- Services / Restore : permite hacer el restore de cualquier backup
Personalizacion de la Barra de Herramientas : Menu Options / MyToolbar
Personalizacion de Shorcuts : Menu Options / MyHotkeys
- Crear El proyecto
- Definir en la conexion a la base de datos En la seccion de FILTER las entidades que quiero accesar en la base de datos :
Tables, Views, System Tables & Procedures
- Definir los DEFAULT VALUES para la creacion de aplicaciones en el proyecto con su opcion que se encuentra dentro del menu de Project, ahi puedo establecer los valores por default para la creacion de todas y cada una de las aplicaciones
- Crear el DATA DICTIONARY para definir para todo el proyecto las etiquetas de los campos y el tipo de campos asi como sus valores predeterminados, si es un campo requerido o no, definir mascaras para la presentacion de los campos. En el diccionario tambien se le agregan etiquetas a las tablas de la base de datos
- Personalizar las etiquetas de todos los elementos que trae Scriptcase, para ello uso la opcion de APPLICATION LANGUAGE en el Menu de Locales, de hecho si tuviera una aplicacion que estuviera en varios idiomas, ahi es donde se realizaria tambien la traduccion de esas etiquetas a los diferentes idiomas disponibles
- Organizar el proyecto por Carpetas, de acuerdo a funcionalidades, usuarios, areas y demas. Tambien se pueden crear subcarpetas con el fin de tner mucho mas organizado todo
HOME :
En la parte inferior del Home tengo opciones que me permiten mover las aplicaciones entre carpetas o copiarlas a otros proyectos. Tambien se pueden exportar para ser importadas en otro proyecto o por otro desarrollador. Esta podria ser una buena forma de hacer Backup.
Desde el Home tambien puedo modificar las URL amigables de las aplicaciones, asi como sus respectivas descripciones e incluso renombrar las aplicaciones.
EXPRESS EDIT :
La opcion de Express Edit me permite gnerar una edicion en Batch de ciertas opciones para varias aplicaciones simultanemente, por ejemplo idioma, tema, seguridad
PROJECT SEARCH :
En el Menu de Project esta la opcion de Project Search que tiene un buscador muy potente en la parte inferior para buscar cualquier cosa y me muestra todas las instancias en todas las aplicaciones en donde se encuentra ese termino
-----------------------------------------------------------------------------------------------------------------------------------------
BATCH APPLICATIONS :
Dentro del menu de Application esta la opcion de Batch Application que permite generar el codigo de todas las aplicaciones seleccionadas de manera simultanea, incluso le puedo decir que me las abra tambien para edicion
SOURCE CODE :
Me permite visualizar el codigo fuente gnerado para una aplicacion en particular
INCREMENT VERSION :
Me permite versionar el proyecto, es decir generr un nueva version, esto lo que hace es que me genera una copia total y nueva del proyecto en donde pueda comenzar a hacer los cambios dejando intacta la version anterior que puedo volver a llamar en cualquier momento o incluso copiar aplicaciones de la version anterior a la nueva version.
VERSION HISTORY :
Me permite administrar las versiones del proyecto, puedo editarlas, borrarlas o asegurarlas para que no puedan ser editadas ni borradas. Adicionalmente puedo recuperar aplicaciones especificas de versiones anteriores
La codificacion de las Versiones son tres giditos separados por puntos : A.B.C.
A : Version Mayor - B : Release - C : SubRelease
A : Major Version - B : Minor Version - C : SubMinor Version or Point of Release
A : Mayor - B : Minor - C : Patch
Tutorial :
Scriptcase Experto 22.6 - Versiones.mp4
-----------------------------------------------------------------------------------------------------------------------------------
GRIDS :
Clave comprender que las Grids tienen la posibilidad de ser construidas con base en datos de multiples tablas de la base de datos simultaneamente, asi que NO HAY QUE CONSTRUIR LAS MASTER TABLES sino para la prueba, en la vida real sustituiremos la construccion de las Master Tables por la seleccion de los datos de Multiples Tablas y sus Respectivos JOINS.
De hecho basta con tener la secuencia SQL, ni siquiera hay que escoger tablas y campos. Ademas cuando creal el FORM lo vincula automaticamente al GRID
Todos los FORMS deberan construirse a partir de GRIDS usando la opcion que nos da la creacion de GRIDS de (Create also a Form to Edit de Grid), de esta manera el flujo de trabajo sera muchisimo mas eficiente.
-------------------------------------------------------------------------------------------------------------------------------------
THEME DESIGN :
Multy - X :
Font : (Helvetica Neue UltraLight)
Size :
Header & Footer : 24 px
Label : 15 px
Para diseñar los temas son super utiles :
- FontScape : brutal para digitar un texto sobre el cual guiarme para escojer el font que deseo para la aplicacion
- Color Preview : brutal para escoger las paletas de colores para la aplicacion
Desde la opcion de DatabaseBuilder ubicada en el menu de DataBase puedo acceder a la base de datos para realizar modificaciones en ella :
- Selecciono la Base de Datos con la que quiero trabajar
- Puedo importar o exportar datos, crear tablas y ejecutar comando de SQL
- Tambien puedo editar las tablas con opciones tales como :
Modificar los Indices
Adicionar Foreign Keys
Adicionar Triggers
- Adicionalmente me permite acceder al Select Constructor en donde puedo construir el Select sin digitar codigo, el me produce la sentencia Select, misma que puedo ejecutar para revisar o copiar para introducir dentro el codigo
- De igual manera puedo editar los campos de la tabla, agregando o eliminando campos
Cuando se hacen modificaciones en las tablas con las que se esta trabajando en las aplicaciones debe irse a la seccion de Application donde se esta cosntruyendo la aplicacion y seleccionar Synchronize Table con el fin de que el Constructor de aplicaciones reconozca los cambios realizados
En el menu de Database se encuentra el SQL Builder que como su nombre lo indica me permite construir las sentencias SQL que desee practicamente sin escribir codigo alguno y ademas obtener el codigo mismo que despues puedo emplear en los eventos de scriptcase, en los eventos ajax o para la defincion de los metodos de php y javascript
Existen disponibles en funcion del tipo de aplicacion que se esta construyendo (Form, Grid, etc.)
Estos eventos corresponden por lo general al flujo de la aplicacion y su interaccion con la base de datos, ejemplos son el inicio de la aplicacion, antes o despues de actualizar un campo, antes o despues de insertar un campo, etc.
Se usan para poder ejecutar scripts de codigo en la ocurrencia de estos eventos
Cuando se selecciona un evento se abre el inspector de codigo en donde puedo insertar el codigo php, en este inspector no hay necesidad de usar las etiquetas de comienzo y fin de php
Es muy comun en el codigo usar macros de scriptcase :
- Las macros siempre comienzan con (sc_)
Estos eventos se configuran desde la opcion de Events del constructor
Tambien existen otros eventos que son los Eventos AJAX que son eventos que se crean ya no en base al flujo mismo de la aplicacion sino al comportamiento de lo que le sucede a uno de los campos de la aplicacion, estos eventos son :
- Onchange
- OnClick
- Onblur
- OnFocus
Al usar lookups puedo emplear la opcion de Ajax Processing, esta opcion me permite cargar campos en funcion del resultado o la eleccion de campos tipo select, double select, ratio o checkbox .
El Caso tipico puede ser el de paises y ciudades en el primer select se muestran los diferentes paises y por medio de Ajax puedo mostrar solo las ciudades que corresponden al pais previamente escogido.
Es decir que ajax me permite recargar solo determinana informacion sin necesidad de recargar toda la pagina
En el caso del primer campo, en este ejemplo seria el de pais cuando se active la opcion de AJAX debemos indicarle que el campo que queremos que se recargue sea el de ciudad
Para completar el proceso debe agregarse una sentencia WHERE al select de Ciudad en donde se especifique el campo de {pais}
-----------------------------------------------------------------------------------------------------------------------------------------------------
Los eventos Ajax se disparan a partir de los cambios de los campos de los formularios a diferencia de los eventos tradicionales que se producen a partir de cambios en la aplicacion completa
En estos casos se pueden disparar mensajes con la macro sc_ajax_message
sc_ajax_message("Message", "Title", "Parameters", "Parameters_Redir", "String_toast");
Tutorial :
Scriptcase 9.4 - Como configurar Sweet Alerts y toast.mp4
This macro allows the application to show customizable messages. Its use is restricted to AJAX events of Form/Control applications.
This macro is only available in applications with AJAX support.
------------------------------------------------------------------------------------------------------------------------------------
Parameters Description
Message The message to be shown. This parameter is required.
Title Messagebox title, if this parameter is empty, the title will not be shown.
Message Parameters String Message format parameters.
Ex.: modal=Y&button=Y&button_label=Ok&redir=form_employees.php&redir_target=_blank
For more details about this parameter, see Table2.
------------------------------------------------------------------------------------------------------------------------------------
Redirecting Parameters String
In this section is possible to define values for the redirecting target application. This parameter works only if a "redir" property was informed. The properties for this parameter must be informed in this format: parameter=value;parameter=value.
Ex.: customer_id=ALFKI;customer_name=ALBERT FRANCINET
------------------------------------------------------------------------------------------------------------------------------------
Toast parameter string
Message formatting parameter using Toast.
- toast: Y ou N
- toast_pos: 'top', 'top-start', 'top-end', 'center', 'center-start', 'center-end', 'bottom', 'bottom-start', 'bottom-end'
- type: 'warning', 'error', 'success', 'info', 'question'
Table2: Message Parameters String
Property Description Values Example
modal Flag to define if the message will be shown in modal Y or N modal=Y
timeout
Time in seconds to hide the message. If this property is not informed, the message will be shown indefinitely. This property works only if "button" property is not enabled.
Seconds timeout=5
button Shows a button inside the message. This button default function is to close the message. If there is redirecting enabled, the application will be redirected after closing the message.
Y or N button=Y
button_label Button label. This option works only if the "button" property is enabled. String button=Y&button_label=OK
top Message positioning value in pixels from top margin. Pixels Number top=300
left Message positioning value in pixels from left margin. Pixels Number left=200
width Messagebox width value in pixels Pixels Number width=320
height Messagebox height value in pixels Pixels Number height=30
redir URL or application name for redirecting. This macro works only if the "button" property is enabled.
String
button=Y&redir=form_employees.php
redir_target Target for redirecting. This property works only when the "redir" property is enabled.
String
redir=form_employees.php&redir_target=_blank
show_close Flag for exhibition of the "close" button on the messagebox title bar. When activated, this parameter forces a title bar to be shown, even if there is no title defined. Y or N show_close=Y
body_icon Flag for exhibiting a icon on the message body. The icon exhibition depends on the applications theme configuration (exhibition schemes). Y or N body_icon=N
Example 01
sc_ajax_message ("Message", "Title", "timeout=0");
Example 02: Using Toast
sc_ajax_message ("Client", "Title", "toast=Y&toasto_pos=center-start&type=success");
FORM :
Existen 4 tipos de botones
- Javascript : permite ejecutar codigo javascript
- PHP : permite ejecutar codigo php
- Link : me permite cofigurar la posibilidad de navegar a otras aplicaciones dentro del proyecto e incluso pasar parametros
- Ajax : es muy util para ejecutar acciones que no demanden que se recargue toda la aplicacion sino la fraccion correspondiente al codigo designado
------------------------------------------------------------------------------------------------------------------------------------
GRID :
Existen 4 tipos de botones
- Javascript : permite ejecutar codigo javascript
- PHP : permite ejecutar codigo php
- Link : me permite cofigurar la posibilidad de navegar a otras aplicaciones dentro del proyecto e incluso pasar parametros
- Run : es un boton que al activarlo en el grid genera al frente de cada registro la posibilidad de seleccionarlo y via codigo asignar funciones a ejecutar sobre los registros seleccionados
------------------------------------------------------------------------------------------------------------------------------------
Tutorial Run :
Scriptcase Experto 9.1 - Grid solicitud de servicios.mp4
------------------------------------------------------------------------------------------------------------------------------------
Tutorial :
Scriptcase Experto 14.2 - Grid agenda cita programación botones.mp4
------------------------------------------------------------------------------------------------------------------------------------
Tambien aplica para campos :
Scriptcase Experto 14.4 - Form agenda cita (Parte 2).mp4
------------------------------------------------------------------------------------------------------------------------------------
FONT AWESOME :
Tutorial :
Scriptcase 9.4 - Aplicando Font Awesome dentro del menu.mp4
Scriptcase 9.4 - Que es y como usar Font Awesome.mp4
Scriptcase - Trabajando con imagenes dentro de Scriptcase (Parte1).mp4
Scriptcase - Trabajando con imagenes dentro de Scriptcase ( Parte 2).mp4
-------------------------------------------------------------------------------------------------------------------------------------
Tutorial :
Scriptcase 9.4 - Como lucen los nuevos botones y como aplicarlos.mp4
Corresponde a las estructuras de datos One to Many, por ejemplo vinculando la tabla de Facturas y detalle de las facturas :
- Master : Tabla de Facturas
- Detail : Tabla de detalles de facturacion
Por lo general se crean dos aplicaciones una para el Master y otra para el Detail
Para activarlo se usa la opcion Master / Detail en donde creamos un nuevo detalle y le indicamos a que aplicacion queremos vincular el detalle
La aplicacion de detalle se visualiza en la misma pantalla del Master, por eso existen ls opciones para definir el tamaño de la aplicacion de detalle
Tutorial :
2.5 - Aplicación Formulário_ Maestro detalle y macro sc_master_value.mp4
------------------------------------------------------------------------------------------------------------------------------------
Para actualizar datos en la aplicacion master usamos la macro :
sc_master_value('Object', Value)
Update a data in the master application, in real time, according to changes made in a given field of the detail application.
Parameter Description
Object Object name to be updated in master Application. It's not necessary the {} in a field name.
Value Object value. The value can be a field or a variable.
Ex. 1:
sc_lookup(result,"SELECT SUM(Total) FROM adm_order_itens WHERE OrderID = '{OrderID}'");
//Using sc_format_num() to format the value that will be updated in the master application
$value = sc_format_num({result[0][0]}, ',', '.', 2, 'S', 1, '');
sc_master_value('OrderPrice', $value);
------------------------------------------------------------------------------------------------------------------------------------
Tutorial :
Scriptcase Experto 14.6 - Form agenda detalles.mp4
En la seccion de programacion del constructor existen dos opciones para crear funciones
- PHP Methods
- JavaScript Methods
En ambos puedo definir funciones en sus respectivos lenguajes, dichas funciones las puedo llamar desde cualquiera de los eventos que desee usar asi como desde eventos Ajax
Los metodos se pueden invocar desde cualquiera de los eventos o desde los botones creados en el constructor
Tutorial :
1_2 - Ejemplos con eventos, Metodos PHP, JavaScript, botones AJAX.mp4
2_2 - Ejemplos con eventos, Metodos PHP, JavaScript, botones AJAX.mp4
En el constructor existe la seccion de SQL en donde puedo añadir codigo sql :
- Forms :
Puedo incluir sentencias WHERE y Order By
------------------------------------------------------------------------------------------------------------------------------------
- Grids :
Puedo editar la sentencia completa del SELECT
Aca se pueden incluir parametros recibidos como variables globales :
WHERE :
factura_id = [par_factura_id]
LOGS :
En la opcion de Modules Logs puedo crear el modulo de logs para las aplicaciones que dejara un registro de las interacciones hechas por los usuarios con las aplicaciones, en el log se pueden registrar todas las actividades relacionadas con :
- Acceso a la aplicacion
- Insercion de Registros
- Actualizacion de Registros
- Borrado de Registros
Cuando creo el modulo escojo a que aplicaciones se les hara el seguimiento, a que campos de las tablas y las acciones que quiero vigilar
Para que las aplicaciones tomen el log deben ser recompiladas en tu totalidad
Para revisar el log debo entrar a la base de datos para revisar la tabla (sc_log)
------------------------------------------------------------------------------------------------------------------------------------
SECURITY :
El modulo crea automaticamente las aplicaciones de login y reestablecimiento de contraseñas, asi como el listado de usuarios.
La seguridad se puede definir :
- Por Usuario : en donde a los usuarios con clave se les permite acceder a todo el sistema
- Por Aplicacion : en donde se define que usuarios con clave accesan a que aplicaciones
- Por Grupos : en donde se definen grupos de usuarios y a esos grupos se les define el acceso a que aplicaciones
- LDAP : se usarian el sistema de autenticacion del servidor
Una vez activada la seguridad, lo mejor es desactivarla en el entorno de desarrollo, para ellos usamos la opcion en Options y MyScriptcase, deshabilitando el uso de seguridad y el uso del password
------------------------------------------------------------------------------------------------------------------------------------
Actualizacion de la tabla de usuarios con sus passwords desde el formulario de creacion de clientes
Tutorial :
Scriptcase Experto 21.2 - Mod form clientes.mp4
------------------------------------------------------------------------------------------------------------------------------------
DEPLOYMENT :
Para subir el proyecto al servidor usamos la opcion de Proyect Deploy Applications
Se puede hacer deployment de todas las aplicaciones o solo de algunas de ellas
Aunque existen varias opciones lo mejor es generar un (.zip) con todas las aplicaciones que se desean subir
Luego se sube el archivo a la carpeta del servidor y se descomprime, esto genera una estructura de carpetas que corresponden a las aplicaciones creadas en el proyecto
En el caso de servidores Linux hay que tomar la carpeta (_lib) y otorgarle todos los permisos
Ahora se accede a la URL donde esta la aplicacion
Una vez se accede se solicita que se cree la conexion a la base de datos
Alli se nos pide una contraseña que por defecto es (scriptcase)
Esta contraseña nos permite entrar al Entorno de Prodcuccion
Alli se nos pide una nueva contraseña que sera la que se usara hacia adelante para poder emplear el Entorno de Produccion
Estando en este entorno procedemos a configurar la conexion a la Base de Datos y a sus respectivas tablas
Si el proyecto tiene varias conexiones, en este entorno es donde se pueden crear las distintas conexiones requeridas
Se configura la zona de PHP y se hace logout
Se lllama nuevamente la URL de la aplicacion y listo
En caso de requerir volver a accesar el entorno de produccion usamos la URL/_lib/prod
Tutorial :
Seguridad, Log y Despliegue_ Desplegando aplicaciones.mp4
Scriptcase Experto 22.7 - Despliegue.mp4
---------------------------------------------------------------------------------------------------------------------------------------------------
DICTIONARY :
Si quiero tener aplicaciones multilanguage lo primero que tengo que hacer es crear el diccionario (Data Dictionary) de la aplicacion, este paso lo que hace es que crea y define las etiquetas para todos los campos.
Una vez creado el diccionario procedo a realizar las diferentes traducciones en la opcion de Application Language
Desde el punto de vista de la interfaz de usuario, lo que se hace es agregar a la barra de hermanientas de las aplicaciones el Boton de Seleccion de Idiomas
Todo el Scriptcase ya viene traducido a los diferentes idiomas, al menos en cuanto a sus opciones, botones y demas, en realidad lo que abria que traducir son los nombres de los campos empleados, por ello es que hay que crear el diccionario de datos para que se creen las benditas etiquedas y de esta manera poder organizar las traducciones
El proceso de creacion de etiquetas se hace por tablas de la base de datos, motivo por el cual podemos ir agregando etiquetas simplemente agregando tablas al Data Dictionary
Tutorial :
Scriptcase Experto 8.4 - Form técnicos maestro detalle con horarios.mp4
Se usa Javascript dentro del Form, se selecciona el objeto (campo) sobre el que se va a interacturar con un evento y se usa la funcion : nm_recarga_form() ;
Tutorial : Minuto 7:21
Scriptcase Experto 9.2 - Form agenda fecha.mp4
Las variables de sesion son aquellas que pueden ser empleadas por cualquiera de las aplicaciones del sistema y equivalen a las definciones de Variables Globales hechas en PHP
Las variables globales se parametrizan dentro de la opcion Global Variables dentro de la Seccion Programming del contructor
GLOBAL VARIABLES
This screen shows all global variables used in the application
The global variable is an external parameter required for running the application. The application can include global variables in the WHERE clause, field definitions and names, event programming, and so on.
You can define global variables by using square brackets ([variable]). You can pass the parameters to the application through one of the methods: Session, Post, and Get
if you need to use Database Identifiers in or tables, we recommend using the double quotation marks( “ ) instead of the brackets( [ ] ) because of the conflict with the Global Variables syntax of Scriptcase. Using the brackets as database identifiers may lead to problems in the Scriptcase applications.
EXAMPLE:
Select CustomerID, CustomerName from Customers WHERE CustomerID = '[v_customerid]'
We do not recommend using session variables (global variables) with the same name as the table fields.
ATTRIBUTE
It shows the variable’s name in the application.
VALUE
Defines the behavior of the variables, divided into three blocks, they are:
SCOPE
Defines how the application receives the variable. A variable defined as the POST method in the app does not receive value if it comes with the GET method. Those are the methods available:
- Session: Defines that the variable must be created as a PHP session variable by another application.
- GET: Defines that the variable must be passed by the URL, that is, visible by the browser.
- POST: Defines that the variable must be passed through the POST method of an HTML form.
SETTINGS
Optional: Check it to don’t validate the variable at runtime.
Type (In / Out)
Defines whether the variable comes from another application (In), or it is starting in the current app (Out).
DESCRIPTION
Indicates where the application is using the variable.
TUTORIAL
Scriptcase Experto 8.3 - Form horarios técnicos.mp4
Las sentencias WHERE siempre que usen parametros, deben tenerlos entre []
Ejemplo :
WHERE
cliente_id = [glo_cliente_id]
Siendo por ejemplo [glo_cliente_id] una variable global que se toma de la aplicacion Login
Esta funcionalidad me trae todas las tablas de la Base de Datos, puedo seleccionar las tablas que desee y a cada seleccion determinarle las aplicaciones (Form o Grid) que les quiero construir.
Es decir que volvemos a la teoria de la construccion de las aplicaciones totalmente basadas en la Base de Datos :
- Tener las Master Tables : es decir las tablas clave de donde se extractara la informacion
- Tener el Diccionario de Datos : con las etiquetas listas sin importar el tema de si seran traducidas o no, pero de manera tal que se puedan verificar de una vez por todas como se mostraran las etiquetas de todos los campos. Por supuesto de todos modos es una base muy valiosa para realizar a posteriori la traduccion
- Definir de una ves los Default Values de las aplicaciones : Project / Default Values es otra gran ganancia de tiempo pues de una vez defino Toolbars, Headers, Footers y demas customizaciones para todas las aplicaciones
Despues de completar estos pasos proceder a la construccion en Batch : Application / Batch Applications
En el Toolbar tengo la opcion de utilizar Group of Buttons, lo que hace es que coge los botones que se hubieran agrupado, los visualiza bjo un mismo nombre y me los presente en forma de menu.
Bastante util para tener una interfaz limpia
Tutorial :
Scriptcase Experto 10.4 - Grid agenda búsqueda dinámica.mp4
Para el caso de los campos de colores se usa la representacion del campo como color HTML, a su vez en la seccion de Values Format del constructor del campo puedo presentarle al usuario el color de dos maneras:
- HTML Color : me aparece el selector de color super completo con todo el universo Hexadecimal
- Color Palette : me permite presentarle al usuario una paleta de colores definida
Son repositorios de Metodos y Funciones, se encuentran disponibles en el Menu de Tools.
Se crean bajo el concepto de (function) de php
Utilidad de las Librerias :
- Encapsular Codigo : se pueden llamar las funciones desde cualquier aplicacion
- Reutilizacion de Codigo : en vez de repetir el codigo en cada necesidad de uso, se llama la libreria
- Utilizacion de Librerias Existentes por Terceros
- Ampliacion de Funcionalidades
------------------------------------------------------------------------------------------------------------------------------------
- Librerias Internas :
Para emplearlas en los constructores hay que ir a la seccion de programacion y en el apartado de librerias activar la libreria que se desea emplear.
Todas las librerias internas deben ser desarrolladas exclusivamente en PHP
En la definicion de las librerias internas de pueden emplear las macros de scriptcase
Las librerias internas se pueden activar desde la opcion de Project / Default Values / Libraries , de esta manera las librerias que se activen desde aca quedaran inmediatamente disponibles para todas las aplicaciones del proyecto
Tutorial :
Que son y para que sirven las librerías internas y externas en Scriptcase.mp4
Ejemplo con librerías internas en Scriptcase.mp4
Una vez creadas las librerias externas deben ser activadas en la opcion Use Library que colocara en verde la libreria que se vaya a emplear.
En las librerias externas no se pueden usar los macros de scriptcase
En una liberia externa se pude colocar cualquier tipo de codigo, incluso almacenar imagenes.
En cada libreria se puede organizar una estructura de directorios para almacenar todos sus contenidos.
--------------------------------------------------------------------------------------------------------------------------------------
Para el uso de las librerias se usa la macro:
SC_URL_LIBRARY : para traer la ruta completa del contenido de la libreria que se desea emplear
sc_url_library("Target", "Library Name", "File")
This macro will return the file path, inside a library, to be used on the scriptcase applications. It is necessary to have a library created on Scriptcase to use this Macro. To create a library, go in the "Tools > Library" Menu.
--------------------------------------------------------------------------------------------------------------------------------------
Parameter Description
Target
Tells you what the scope of the library. Can be "sys" for libraries of Public scope or "prj" for libraries of Project scope.
Library Name Given name to the library at the time of creation.
File Absolute path within the library.
--------------------------------------------------------------------------------------------------------------------------------------
Ex. 1 - Importing CSS files from a library:
<*link rel="stylesheet" type="text/css" href="<*?php echo sc_url_library('prj', 'bootstrap-3.3.2-dist', 'css/style1.css'); ?>" />
Ex. 2 - Importing a JS file from a library:
<*script type="text/javascript" src="<*?php echo sc_url_library('prj', 'bootstrap-3.3.2-dist', 'js/bootstrap,js'); ?>">
--------------------------------------------------------------------------------------------------------------------------------------
Para el uso de las librerias tambien se usa la macro:
SC_INCLUDE_LIBRARY : para traer la ruta completa del contenido de la libreria que se desea emplear
sc_include_library("Target", "Library Name", "File", "include_once", "Require")
This macro includes a PHP file from a library in the application. You must have a library created in Scriptcase to make use of this macro. To create a library, go to "Tools -> Libraries".
-------------------------------------------------------------------------------------------------------------------------------------
Parameter Description
Target
Tells you what the scope of the library. Can be "sys" for libraries of Public scope or "prj" for libraries of Project scope.
Library Name Name given to the library at the time of creation.
File Absolute path within the library.
include_once (optional)
Make sure that the file will only be included once. If not informed, this value is set as "true".
Require (optional)
If the file or library does not exist, the application to be executed and returns an error. If not informed, the value is set as "true".
------------------------------------------------------------------------------------------------------------------------------------
Ex: Including a file from a library:
sc_include_library("prj", "phpqrcode", "qrlib.php", true, true);
------------------------------------------------------------------------------------------------------------------------------------
Tutorial :
1_2 - Ejemplos con librerías externas.mp4
2_2 - Ejemplos con librerías externas.mp4
BLOG :
https://www.scriptcaseblog.net/scriptcase-es/external-libraries-to-improve-your-projects/
-------------------------------------------------------------------------------------------------------------------------------------
PHP :
https://github.com/ziadoz/awesome-php
https://gist.github.com/llbbl/7607016
https://www.cloudways.com/blog/php-libraries/
-------------------------------------------------------------------------------------------------------------------------------------
CSS :
https://www.webdesignerdepot.com/2019/10/15-best-css-libraries-for-2019/
https://cssdb.co/
-------------------------------------------------------------------------------------------------------------------------------------
BOOSTRAP_TOUR : Scriptcase - Bootstrap Tour.mp4
-------------------------------------------------------------------------------------------------------------------------------------
JAVASCRIPT :
https://getflywheel.com/layout/best-javascript-libraries-frameworks-2020/
https://hackr.io/blog/top-javascript-libraries
Para que funcione bien la API :
- Pais Iso
- Direccion
- Codigo Postal
Llave de API de Google Maps, se consigue con un gmail
Tutorial :
Scriptcase Experto 13.2 - Grid clientes direcciones.mp4
Email :
Si tomamos los campos de email y los visualizamos en forma de email tenemos la facilidad de convertirlos en links que al ser presionados nos permitiran abrir el administrador de correo para enviar mensajes de correo.
Masks :
Importantes sobre todo para el caso de campos monetarios, numericos y telefonicos para efectos de presentacion
{dia_de_semana} = date ('w',strtotime({fecha_inicial})) + 1;
Funcion strtotime y funcion date
Puedo hacer graficas de lineas con base en campos numericos para eso escojo el icono y las demas opciones de configuracion en Line Charts dentro del constructor en el mismo campo
Muy util para viualizar estrellas de calificacion y ese tipo de campos
Scriptcase Hotkeys :
Hotkeys Actions
F1 Opens the documentation of the tool
CTRL+H or ⌘+H or F4 Displays the project homepage
CTRL+S or ⌘+S or F7 Saves the changes made in the application
CTRL+B or ⌘+B or F8 Generates the source code of the current application
CTRL+E or ⌘+E or F9 Runs the current application
F2 Opens the application creation screen
CTRL+I or ⌘+I or F6 Access to the SQL Builder
Alt+1~9 Accesses the selected tabs 1~9
Alt+Q Closes the current tab
Alt+PgDown Navigates back to the previous tab
Alt+PgUp Navigates to the next tab
Events Editor Hotkeys - PHP
Hotkeys Actions
Tab Indents the line or selection
Shift+Tab Removes line indentation or selection
Ctrl+Shift+K Deletes the current line
Ctrl+Left Moves the cursor to the next word
Ctrl+Right Moves the cursor to the previous word
Ctrl+L Selects the entire current line
Ctrl+Shift+L Adds the cursor to all selected lines
Ctrl+</span> Cancels multiple cursors and moves the cursor to the first instance
Ctrl+Enter Inserts a line after the current one
Ctrl+Shift+Enter Inserts a line before the current one
Ctrl+Shift+D Selects the next occurrence of selected text with the cursor
Ctrl+Shift+Space Selects the current scope (within parentheses, braces, brackets …)
Ctrl+Shift+M Selects the broader context (keys, brackets, parentheses, page)
Ctrl+M Moves the cursor to the closing or opening of the current context. (braces, brackets, parentheses, tags)
Ctrl+/ Comments or Uncomments line
Ctrl+J Groups the line or selection
Ctrl+D Duplicates line or selection
Ctrl+F9 Sorts the lines alphabetically, ignoring upper cases
Backspace Intelligent Backspace (Removes indentation with line)
Ctrl+K Ctrl+K Deletes text to the right
Ctrl+K Ctrl+U Capital letters in the selection or cursor
Ctrl+K Ctrl+L Lowercase letters in the selection or cursor
Ctrl+K Ctrl+C Scrolls the line to the center of view
Ctrl+K Ctrl+Backspace Deletes text to the left
Ctrl+Shift+Up Adds the cursor to the previous line
Ctrl+Shift+Down Adds the cursor to the next line
Ctrl+F3 Finds the next occurrence of the selection or cursor
Ctrl+Shift+F3 Finds the next occurrence of the selection or cursor
Ctrl+Shift+[ Shows indented tag
Ctrl+Shift+] Shows Inline tag
Ctrl+Shift+F Activates search and replaces
Ctrl+F Activates search
F3 Finds the next occurrence of the search
Shift+F3 Finds the previous occurrence of the search
Ctrl+Alt+I Auto indentation of the selected code
Events Editor Hotkeys - HTML/CSS
Hotkeys Actions
Tab Enables EMMET abbreviations Ex. ul>li.item${item $}*3
Ctrl+Shift+A or ⌘+Shift+A Envelopes the selected text in an EMMET abbreviation. Select the text you want to envelop, then use the keys, and enter the tag.
Ctrl+Alt+Right or ⌘+Alt+Right Edit / selects the next node. Junction between tags, CSS blocks.
Ctrl+Alt+Left or ⌘+Alt+Left Edit / selects the previous node. Junction between tags, CSS blocks.
Ctrl+Shift+Y or ⌘+Shift+Y Validates and solves math expressions. Example: 2*8+4.
Ctrl+Up or ⌘+Up Increments numeric value +1
Ctrl+Down or ⌘+Down Decrements numerical value –1
Ctrl+Shift+. or ⌘+Shift+. Edit / selects the next item. Attribute, tag name
Ctrl+Shift+, or ⌘+Shift+, Edit / selects the previous item. Attribute, tag name
Enter Inserts indented line break.
CODE EDITOR :
Hotkeys Actions
Ctrl + Space Me trae la lista de Campos y Comandos tipo AutoComplete
-------------------------------------------------------------------------------------------------------------------------------------
SCRIPTCASE HOTKEYS :
Hotkeys Actions
⌘+I Access to the SQL Builder
--------------------------------------------------------------------------------------------------------------------------------------
EVENTS EDITOR HOTKEYS - PHP :
Hotkeys Actions
Tab Indents the line or selection
Shift+Tab Removes line indentation or selection
Ctrl+L Selects the entire current line
Ctrl+Shift+L Adds the cursor to all selected lines
Ctrl+Enter Inserts a line after the current one
Ctrl+Shift+Enter Inserts a line before the current one
Ctrl+Shift+D Selects the next occurrence of selected text with the cursor
Ctrl+Shift+Space Selects the current scope (within parentheses, braces, brackets …)
Ctrl+Shift+M Selects the broader context (keys, brackets, parentheses, page)
Ctrl+/ Comments or Uncomments line
Ctrl+J Groups the line or selection
Ctrl+D Duplicates line or selection
Ctrl+K Ctrl+U Capital letters in the selection or cursor
Ctrl+K Ctrl+L Lowercase letters in the selection or cursor
Ctrl+Shift+F Activates search and replaces
Ctrl+F Activates search
F3 Finds the next occurrence of the search
Para constituir una variable en Global usamos la macro :
sc_set_global($variable_name);
Al definir una variable como Global esta se encuentra disponible ya para todas las aplicaciones del sistema
---------------------------------------------------------------------------------------------------------------------------------------
sc_set_global($variable_01) or ({My_Field})
This macro its used to register global variables. Create a session variable with the same name and content of the local variable.
NOTE: This macro will be discontinued soon. You should use the method of creating global variables ​​using brackets. Ex: [var_glo_user] = "test";
Ex. 1: Registering a users variable.
$my_var = "mary";
sc_set_global($my_var);
Creates a session variable with the name "my_var" with the "mary" content.
Ex. 2: For register a field value as a session variable.
sc_set_global({fieldname});
Note: This macro doesn't attribute values. Only register the session variables from PHP.
--------------------------------------------------------------------------------------------------------------------------------------
Tutorial :
Scriptcase Experto 21.3 - Variables globales en login.mp4
--------------------------------------------------------------------------------------------------------------------------------------
SC_RESET_GLOBAL :
sc_reset_global([Global_Variable1], [Global_Variable2] ...)
This macro has the objective to delete global variables, stored in the PHP session.
Ex. 1:
sc_reset_global ([Login], [Pass]);
Esta instruccion se usa por ejemplo OnApplicationInit en el login con el fin de purgar todas las variables globales definidas en la aplicacion y asi evitar valores remanentes
-----------------------------------------------------------------------------------------------------------------------------------
En la seccion de Variables Globales del constructor se pueden definir las variables como de entrada o de salida.
Entrada : cuando la variable o el parametro es suministrado por la aplicacion que hace la llamada a la aplicacion en donde se esta haciendo la definicion de las variables globales
Salida : cuando la variable o el parametro ya se tiene disponible porque fue declarada en alguna otra parte de la aplicacion como una variable global, caso en el cual se declara la variable como de salida en el constructor con el fin de que no la siga solicitando
------------------------------------------------------------------------------------------------------------------------------------
Buena Idea tener una aplicacion alterna que permita loggear al administrador como cualquier usuario para poder probar funcionalidades y errores o problemas reportados por el usuario.
Tutorial :
Scriptcase Experto 21.6 - Aplicacion login para administrador.mp4
SWEET ALERTS :
Son los mensajes de confirmacion que se producen cuando se va a borrar un registro o se va a ejecutar cualquier accion que requiera de una confirmacion del usuario.
Se habilitan / deshabilitan y configuran desde la Seccion de Application / Settings del constructor
Para usarlas desde el codigo se usa la macro sc_alert
Types :
- Success
- Error
- Warning
- Info
- Question
sc_alert("Message", $array)
This macro sends a message in the alert style of Javascript (Sweetalert) or Sweetalert2.
Ps To display the message using Sweetalert2, this option must be enabled in the application interface.
-------------------------------------------------------------------------------------------------------------------------------------
Ex. 1: Mensagem utilizando o Sweetalert
sc_alert("This is an alert message!!");
-------------------------------------------------------------------------------------------------------------------------------------
Ex. 2: Mensagem utilizando o Sweetalert2
$params = array(
'title' => 'Title',
'type' => 'success',
'timer' => '2000',
'showConfirmButton' => false,
'position' => 'bottom-end',
'toast' => true
);
sc_alert("Inserted successfully!", $params);
------------------------------------------------------------------------------------------------------------------------------------
Tutorial :
Scriptcase 9.4 - Como configurar Sweet Alerts y toast.mp4
------------------------------------------------------------------------------------------------------------------------------------
TOAST :
Es el tipo de mensaje que aparece cuando se ejecuta una tarea, por ejemplo la insercion de un registro, la actualizacion del mismo, la grabacion, etc.
Se le puede parametrizar el color, la ubicacion en pantalla
--------------------------------------------------------------------------------------------------------------------------------------
Desde el codigo tambien se pueden disparar alertas tipo Toast :
Tutorial :
Scriptcase 9.4 - Como configurar Sweet Alerts y toast.mp4
VAR_DUMP :
var_dump([var1],[var2],.....[var n]);
Me visualiza el contenido de las variables usadas como argumentos de esta funcion
Tutorial :
Scriptcase - Trabajando con archivos XML.mp4
Existe la opcion en el Menu de Tools de usar el To Do Lists en donde se pueden crear las tareas, incluso definirlar o hacer referencia a la aplicacion a la que estan destinadas
Tutorial :
Scriptcase 9.4 - Que es y como usar Google Fonts.mp4
SC_EXEC_SQL :
sc_exec_sql("SQL Command", "Connection")
This macro allows to condition the circumstances thats the SQL commands are executed.
The "Connection" parameter is optional. Required only, if the command is executed in a data base different from the application.
Ex. 1:
if (sc_after_delete) {
sc_exec_sql("delete from mytable where key = {key_ant}");
}
-------------------------------------------------------------------------------------------------------------------------------------
SC_LOOKUP :
sc_lookup(Dataset, "SQL Command", "Connection")
This macro allows the user to execute SQL commands and returns the result to the "dataset" variable. The "dataset" structure is an array (line/column).
The "connection" parameter is optional. Use when the command is executed in a database different from that specified for the application.
Note: The connection parameter does not accept variable. You must enter the name of the connection that the SQL command will execute.
-------------------------------------------------------------------------------------------------------------------------------------
Ex. 1:
sc_lookup(dataset, "select customer_id, customer_name, credit_limit from customers" );
To have access to the first line (Dataset), use :
{customer_id} = {dataset[0][0]};
{customer_name} = {dataset[0][1]};
{credit_limit } = {dataset[0][2]};
To have access to the second line (Dataset), use:
{customer_id} = {dataset[1][0]};
{customer_name} = {dataset[1][1]};
{credit_limit} = {dataset[1][2]};
If occurs error in the execution of the SQL command, the variable attributed to the dataset will return as "false" and the error message will be available in the "dataset_erro" variable. It is also important to verify the select returned data, to prevent access to inexistent variables, once the output array only will be created if the select command returns data.
------------------------------------------------------------------------------------------------------------------------------------
Ex. 2:
sc_lookup(my_data, "select customer_id, customer_name, credit_limit from customers");
if ({my_data} === false)
{
echo "Access error. Message=". {my_data_erro} ;
}
elseif (empty({my_data}))
{
echo "Select command didn't return data";
}
else
{
{customer_id} = {my_data[0][0]};
{customer_name} = {my_data[0][1]};
{credit_limit} = {my_data[0][2]};
}
--------------------------------------------------------------------------------------------------------------------------------------
Ex. 3: The SQL command also can be composed of application fields (local variables) or of global variables:
sc_lookup(dataset, "select order_value from orders where clienteid = '{customer_id} ' and salesman_id = [var_glo_salesman]");
Note: The command must always finished with semicolon ";".
Note2: For a big result returned in the dataset we recomend the use of the macro sc_selec instead of this one.
SC_SELECT :
sc_select(dataset, "SQL Command", "Connection")
This macro executes the SQL commands passed as parameter and access the "dataset" in the command.
Different from sc_lookup macro, this macro doesn't manipulate the dataset (the user is responsible for all the manipulation).
If an error occurs in the sql command execution, the variable attributed to the database returns as "false" and the error message is available in the "dataset_error" variable.
The connection parameter is optional, use only if the command is executed in a data base different from the specified in the application.
Ex. 1:
sc_select(my_data, "select clientId, clientName, limitecred from costumers");
if ({my_data} === false)
{
echo "Access error. Message =". {my_data_erro};
}
else
{
while (!{my_data}->EOF)
{
{clientName} = {my_data}->fields[1];
{my_data}->MoveNext();
}
{my_data}->Close();
}
SC_SELECT_FIELD :
sc_select_field({Field})
This macro modify dynamically the SELECT:
Is possible to modify dynamically the grid fields through the dynamic modification of the original select.
-------------------------------------------------------------------------------------------------------------------------------------
Ex. 1:
A table with the columns year and the months from January to December is used to create a grid using a parameter, displays the years and only a specific month. Passing the parameter as a global variable named "show_month", in the application is found the following structure:
Select Clause: select year, pair_month from table
sc_select_field(pair_month) = [show_month];
sc_label(pair_month) = [show_month];
Modify the select, and the grid column label.
It is possible, during the grid execution time, modify the grid ORDER BY clause.
At least one ORDER BY is required in the original grid SQL command to allow the substitution execution during the grid time.
-------------------------------------------------------------------------------------------------------------------------------------
Ex. 2: Select Clause: select code, name, value from table order by code. To change the order, from code to name, use: sc_select_order("code") = "name";
Note: This command must be in the context of the event "onInit";
-------------------------------------------------------------------------------------------------------------------------------------
SC_WHERE_CURRENT :
sc_where_current
Variable to reference the application where clause plus the filter selections(if any). Reflects the where clause currently used.
Ex. 1:
$save_current_where = {sc_where_current};
-----------------------------------------------------------------------------------------------------------------------------------
SC_WHERE_FILTER :
sc_where_filter
This macro is used to retrieve the content generated by the "filter", according with its selections. These are the data which will be added to the application original where clause after filter submition.
Ex. 1:
$save_current_filter = {sc_where_filter};
Database Variables
Global variables containing database access values used by main connection.
Variables Description
sc_glo_server Server name.
sc_glo_db Database name.
sc_glo_db_type Database type (mssql, oracle, mysql, etc).
sc_glo_user Connected user name.
sc_glo_pass Database password access.
sc_glo_cript_pass Encrypted password (S/N).
sc_glo_decimal_db Used decimal separator (point or comma).
------------------------------------------------------------------------------------------------------------------------------------
Ex. 1:
$my_database = [sc_glo_db];
These variables only reference the values without updating it (it is not possible to attribute/modify the values). To define user and the password to connect to the database, use the following variables:
Variables Description
sc_db_master_usr User login to be used.
sc_db_master_pass Password to be used.
sc_db_master_cript Encrypted password (S/N) (see sc_encode macro).
Important: These variables only take effect during next application execution remaining valid during all the session (unless modified).
------------------------------------------------------------------------------------------------------------------------------------
Ex. 2: An application type "control" with a form created with information "login" and encrypted "password". These data must be used to connect to the database, during the system applications execution.
$temp_pass = sc_encode({password});
[sc_db_master_usr] = {login};
[sc_db_master_pass] = $temp_pass;
[sc_db_master_cript] = "S";
En el constructor existen opciones de Sorting que me permiten no solo personalizar sino eliminar la opcion de sorting que tienen los campos (Son los triangulos que aparecen al lado del nombre del campo)
Cualquier variable con el sufijo (_erro) captura el mensaje de error que se produjo con respecto a cualquier operacion relacionada con esa variable.
Por ejemplo :
Variable : $hk
Error : $hk_erro
Con seguridad aplica para el caso de las variables que representan un dataset en las macro de SQL
Variable : dataset
Error : dataset_erro
Es una tecnologia que utiliza un conjunto de protocolos para intercambiar datos entre aplicaciones sin importar el lenguaje o la plataforma en que fueron desarrollados
Protocolos :
- SOAP : XML : Simple Object Access Protocol, estandard W3C
- REST : JSON : Representational State Tranfer
Tutorial :
Scriptcase Macro (sc_webservice) - Entiende como trabajan los webservices.mp4
https://chat-api.com/en/
Scriptcase (chat api) - Integración con WhatsApp.mp4
Utilizadas para la edicion de datos
Application Form esta atada y fundamentada en la tabla de la base de datos, asi que practicamente la definicion de la Application Form se hace desde el diseño de la tabla misma
------------------------------------------------------------------------------------------------------------------------------------------
Lo primero es establecer la comunicacion con la base de datos para escoger la tabla sobre la que trabajara la aplicacion Form
- Normalmente se trabaja con la base de datos definida al inicio del proyecto.
- Se pueden crear nuevas conexiones a nuevas bases de datos ya que Scriptcase es capaz de manejar varias conexiones simultaneas a diferentes bases de datos sin problema
------------------------------------------------------------------------------------------------------------------------------------------
Scriptcase automaticamente genera el nombre de Form Application:
- Le pone el prefijo form_ + el nombre de la tabla de la base de datos sobre la que se esta trabajando la Application Form
- De todos modos siempre existe la posibilidad de colocar el nombre que se desee para la Application Form
Muy importante colocar nombres que me permitan comprender facilmente que es lo que hace cada aplicacion
------------------------------------------------------------------------------------------------------------------------------------------
Theme :
- Defino el tema de visualizacion que se le aplicara a la Application Form, las opciones que me muestra corresponden a los temas que hubiera seleccionado al momento de crear el proyecto.
- En caso de querer modificar los temas escogidos al crear el poryecto, debo acudir a la opcion de preferences del proyecto.
Cuando se construye la Application Form, esta se puede construir de varias maneras :
- Single Row : me va a mostrar registro x registro de la tabla permitiendome el CRUD x registro
- Multiple Rows : me va a mostrar multiples registros de la tabla, permitiendome el CRUD para los registros que hubiere seleccionado en la casilla de Check ubicada al inicio de cada registro. Des esta manera puedo hacer modificaciones a varios registros, seleccionarlos y en una sola accion actualizarlos o borrarlos
- Editable Grid : me muestra multiples registros de la tabla, permitiendome hacer el CRUD, solo que la opcion de modificar o borrar se encuentra al frente de cada regitro, de esta manera las modificaciones o borrado de registros los realizo en realidad 1 x 1
- Editable Grid View : es exactmente igual que Editable Grid, solo que me aparecen de entrada todos los registros listos para ser editados, por supuesto individualmente
------------------------------------------------------------------------------------------------------------------------------------------
Opciones Adicionales :
- Pagination : define como se van a presentar los registros en la forma
Total : presenta de una vez todos los registros (Scroll)
Partial : presenta un numero determinado de resgistros por batch
- Lines Per Page : en caso de haber seleccionado el modo Partial de paginacion, permite definir el numero de registros x batch
- Record for Insert : numero de registros disponibles cuando estoy creando nuevos registros
- Fixed Label : hace el efecto de sticky label para los encabezados de las columnas y poder hacer un scroll mas fluido
------------------------------------------------------------------------------------------------------------------------------------------
CREATE APPLICATION :
Create and Return : me da la opcion de crear la aplicacion y continuar creando aplicaciones adicionales
Create : me da la opcion de crear la aplicacion y comenzar a configurarla y usarla
FIELDS : me muestra los campos de la tabla y me permite definir :
- Si el campo sera visible cuando se este creando un nuevo registro
- Si el campo sera visible cuando se quiera actualizar el registro
- Si el campo es de solo lectura
- Si el campo es requerido o no
----------------------------------------------------------------------------------------------------------------------------------------
LABELS: me muestra las etiquetas que se van a usar para esos campos :
- En principio son los mismos que los nombres registrados en fields
- Estos nombres pueden ser modificados para definir la manera en que apareceran en la Application Form
- DataType : el tipo de datos de cada uno de los campos
- New : indica si se puede incluir informacion para un campo determinado al crear un nuevo registro
- Update : indica si el campo puede ser modificado por la Application Form
- Read Only : indica si el campo es de solo lectura
- Required : indica si el campo es obligatorio
La presentacion de los formularios se puede organizar definiendo bloques
- Luego se define la posicion de cada bloque
- Los campos que van dentro de cada bloque
Los bloques se definen en la seccion del Layout del constructor
En la definicion de los bloques puedo establecer el numero de columnas que deseo para un bloque en particual, lo cual me permite por ejemplo aprovechar mejor el espacio, cada columna equivale a un campo, asi que en 8 columnas en un mismo renglon podria visualizar 8 campos
Tambien puedo definir el ancho de los bloques de manera que tenga por ejemplo dos o tres bloques contiguos de acuerdo a la distribucion porcentual del espacio que defina para cada bloque
A los bloques se les puede definir mucho mas el detalle de presentacion usando el icono del lapiz al lado del bloque, lo cual me permite modificar practicamente todos los detalle de presentacion del bloque tales como colores, dimensiones, fonts, etc.
Los bloques tienen la propiedad de Folding, es decir que los puedo comprimir o expandir facilitando la experiencia de visualizacion del usuario, este atributo de Folding lo puedo hacer de manera discresional, es decir que si deseo tambien puedo anular esa posibilidad para que no se pueda comprimir y siempre esten visibles los campos
La asignacion y la organizacion de los campos en los bloques la puedo hacer :
- Con la opcion de Field Positioning en donde simplemente con flechas organizo los campos y su ubicacion en los bloques
- Con la opcion de Edit Fields en donde arrastrando los campos obtengo la organizacion que deseo. En esta opcion es donde tengo la posibilidad de arrastrar los campos que no deseo que se muestren hacia la zona de Page : Fields not Shown
Tambien se pueden definir Paginas para la presentacion de informacion en el caso de formularios que tengan muchos campos. Cuando se adicionan paginas cada pagina representa una pestaña nueva en pantalla
En la congifuracion del Layout existe la posibilidad de escoger los tipos de plantillas para el encabezado y el pie de pagina, que varian en cuanto a la cantidad y el tipo de informacion visualizada
Tengo opciones disponibles para la viusalizacion o no tanto del encabezado como del pie de paigna y de la informacion a ser visualizada en modo de edicion o modo de insercion
Para los campos puedo establecer validaciones tales como :
- Campo obligatorio
- Valores Minimos y Maximos
- Caracteres Validos : Letras, Numeros, Excepciones (+/-) de caracteres
- Unique Key : permite definir un campo o una combinacion de campos que no pueda repetirse
- Dependencies :
Impide por ejemplo que se eliminen prodcutos o categorias padre con hijos existentes
Tambien existe la posibilidad de que se haga una eliminacion en cascada cuando existen registro hijos
- Validacion por codigo a traves del uso de los eventos
Esta opcion aparece dentro de las opciones de edicion de un campo cuando se define que sea de tipo Select, Double Select, CheckBox, Ratio
Se usa para realizar selecciones de opciones para un campo en particular, estas opciones se toman de otra tabla en la base de datos, asi por ejemplo en la tabla de productos se desea tener un campo que permita alimentarle el proveedor, caso en el cual se debe tener otra tabla alimentada con proveedores y el select de la tabla de productos en el campo de proveedores hacer un lookup a la tabla de proveedores y asi poder escoger el proveedor de la tabla de proveedores
En este caso se haria el select del (id, proveedor), siendo (id) es valor que guardaria en la base y el valor de (proveedor) el que visualizaria en el select. Tambien se le puede poner nombre al select como (Seleccionar una opcion)
Esta opcion tambien aplica para campos autocomplete, de manera que cuando vamos escribiendo el nombre del proveedor el nos va completando el nombre. Esta opcion aplica cuando las posibilidades de eleccion del select son demasiado numerosas, ya que simplemente escribiendo unas pocas letras se llega al nombre deseado
La opcion automatica del lookup es la que acabamos de describir, tambien existe una opcion manual:
En esta opcion los valores para el select o el checkbox o el Ratio no se toman de una tabla de la base de datos como tal, sino que se definen de manera manual, lo que si debe crearse es el campo en donde se almacenaran los valores que se le definan a estos valores manuales del select
Esta opcion manual es interesante cuando no se quiere llenarse de tablas pequeñas en la base de datos para identificar opciones, tales como Masculino, Femenino o Activo, Inactivo, etc.
Al usar lookups puedo emplear la opcion de Ajax Processing, esta opcion me permite cargar campos en funcion del resultado o la eleccion de campos tipo select, double select, ratio o checkbox . El Caso tipico puede ser el de paises y ciudades en el primer select se muestran los diferentes paises y por medio de Ajax puedo mostrar solo las ciudades que corresponden al pais previamente escogido. Es decir que ajax me permite recargar solo determinana informacion sin necesidad de recargar toda la pagina
En el lookup se pide el Key Field que es el campo al cual lo vamos a reemplazar por la descripcion y se pide field that will be shown que es el campo que se visualizara en lugar del Key Field
Para el caso de los campos enum de la base de datos, la base guarda una refencia numerica al orden de las posibilidades descritas en el campo, en este caso se debe hacer un lookup manual para que se grabe en el campo el dato que haria referencia al elemento en el campo enum (Asia, Europa, Amerca, etc)
Cuando se hacen lookups en cascada (Pais, Departamento, Ciudad) hay que habilitar la opcion de Ajax Proccesin abajo del lookup indicando el campo que se debe recargar que corresponde al siguiente campo en la cascada, es decir que si se habilita en Pais, en el Ajax Proccesing debe habilitarse Departamento
Utilizadas para visualizar y analizar informacion
En el caso de los Grid se pueden seleccionar varias tablas a diferencia de los Form en donde solo se puede seleccionar una tabla x aplicacion.
Desde la creacion misma del grid puedo definir cuales son los campos de la o las tablas que voy a emplear en la construccion del grid.
El Grid es sumamente potente pues me permite visualizar datos provenienentes de multiples tablas, ademas me permite editar las relaciones entre estas tablas, es algo asi como de Tabla A a Tabla B y de Tabla B a Tabla C
Simplemente brutal, esta es una funcionalidad que no existia antes
BARRA SUPERIOR : de izquierda a derecha por default encontramos
- Search : S.E.
- Columns : me permite decidir en tiempo de ejecucion cuales son las columnas que deseo visualizar y el orden de visualizacion de las mismas, tambien tengo la opcion de reorganizar las columnas para efectos de visualizacion
- Sort : me permite definir multiples criterios simultaneos de sort con las diferentes columnas
- Export :me permite exportar en diferentes formatos el contenido del Grid, adicionalmente me permite visualizarlo en pantalla o bajarlo de la red para tenerlo en una copia local o imprimir
- Advanced Serar (Alias Filter) : me permite tener condiciones tales como mayor que, igual a , menor que, para el caso de las variables numericas, contiene, no contiene y demas para el caso de las variables de texto. Cuando se usan estas opciones todas vienen con autocomplete
- A la derecha de cada registro esta la opcion (...) que corresponde al detalle del registro, si se selecciona abre otra ventana mostrando todo el detalle de ese registro en particular
- Desde cada campo siempre tengo la opcion via las flechas de los lados del campo de visualizar automaticamente de manera ascendento o descendente
------------------------------------------------------------------------------------------------------------------------------------
En las opciones de busqueda es muy importante para aumentar su efectividad modificar la opcion de SQL del constructor y desactivar la opcion de Distinguish uppercase / lowercase
Las agrupaciones se definen en la seccio de Group By del constructor, ahi se pueden definir dos tipos de agrupaciones :
ESTATICAS :
Defino los campos que me determinan los criterios de agrupacion, luego defino los campos sobre los que se hara la totalizacion en el grid, adicionalmente en caso de querer tener varias estadisticas de agrupacion para el mismo campo simplemente coloco varias veces el campo y hago las seleccion de acuerdo a las estadisticas de totalizacion que necesite.
Adicionalmente se definen los campos sobre los cuales se desea el gran total
Esto me genera una vista en donde aparecen niveles de ruptura de acuerdo a las variables definidas en el Group By, esta visualizacion aparece en pestañas verticales....
Adicionalmente puedo crear los Group By que desee, cuando este es el caso y tengo varias agrupaciones me aparece en le aplicacion en ejecucion la opcion de agrupar por, es decir me permite escoger cual criterio de agrupacion quiero visualizar en un momento dado
En Group By por defecto se asume que la dimension del campo usado en el Grid Total corresponde al Eje Y sin poderse modificar por estar usando un solo criterio, no obstante cuando se incluye otra variable en el Grid Total puedo seleccionar la variable en el Eje X
Por ejemplo :
Defino como primer criterio un campo de Fecha y como segundo criterio un campo de id (Cliente, Proveedor), en principio ambos campos corresponden al Eje Y, no obstante puedo cambiar el campo de Fecha para que represente el Eje X
De esta manera configuramos un Summary tipo Hoja de Calculo (Bidimensional)
Los Group By tienen dos posibilidades de configuracion :
- Una general
- Una especifica por agrupacion
Adicionalmente me permite generar graficos a partir de los campos del Summary, en los graficos hay posibilidad de representar la grafica como Barras, Lineas, Pie, Areas. Todas las Graficas son dinamicas, asi que se puede interactuar con ellas con el cursor
Tutorial :
3.3 - Aplicación Grid_ Agrupación de datos.mp4
Scriptcase Experto 11.1 - Agrupación estática.mp4
Brutal !!!!
Cuando se usan campos de fecha es posible seleccionar :
Year
Semester
Four Months
Quarter
Two Months
Months
Week
Day
Week Day
Year - Semester
Year - Four Month
Year - Quarter
Year - Two Months
Year - Month
Year - Week
Full Date
Date - Time
Date - Hour Minute
Date - Hour Only
Time
Hour - Minutes
Time Only
DINAMICAS :
En el concepto de Agrupacion Dinamica lo que sucede es que defino desde el constructor en la opcion de Dynamic Group By los campos que deseo tener disponibles.
El usuario en tiempo de ejecucion entra a la opcion de Group By y le aparecen ya no solo las opcones de agrupacion o agrupaciones estaticas sino que tambien le aparecen las opciones de agrupacion dinamica en donde puede seleccionar criterios de agrupacion a su gusto de acuerdo a los campos disponibles
Tutorial :
3.3 - Aplicación Grid_ Agrupación de datos.mp4
Scriptcase Experto 11.2 - Agrupación dinámica.mp4
Adicionalmente en el constructor del Grid tengo la opcion de Definir los campos sobre los cuales el Grid presentara Totales, importante no confundir con las opciones de agrupacion, pues estos Totales se hacen sin dicriminar ninguna opcion de agrupacion o algo asi, es decir son totales ... totales ...
Tienen por objetivo la representacion de mas de una tabla en la misma aplicacion
Genera un efecto similar al de Master Detail, solo que este me parece mucho mas interesante
WORKFLOW :
- GRID ANIDADA O DE DETALLE :
Primero debemos construir la aplicacion que funcionara como Detail Grid o Nested Grid
En el proceso procedo a editar la sentencia completa del SELECT a traves de la opcion SQL del constructor
Aca se pueden incluir parametros recibidos como variables globales :
WHERE :
factura_id = [par_factura_id]
Este parametro es el que se usara para poder enlazar el Grid Padre con el Grid Hijo
- GRID PRINCIPAL O PADRE :
Se construye la Grid principal desde la cual se ha de llamar o invocar la Grid de Detalle o Anidada
En esta Grid debe usarse la opcion del constructor de Nested Grid y Links : aca es donde debemos crear un nuevo enlace que nos permita encadenar el Nested Grid o el Grid de Detalle
- Aca escogemos que aplicacion sera el Nested Grid y al cual queremos encadenar el Grid padre
- En este proceso se nos pide el parametro que definimos en el Nested Grid ([par_factura_id])
- Este parametro lo podemos pasar como un campo, un valor fio o un valor vacio
- En esa misma opcion se habilita la vista de Arbol en Settings
Tutorial :
3.4 - Aplicación Grid_ Grid anidadas.mp4
Scriptcase Experto 12.1 - Grid agenda detalle.mp4
Tradicional :
La operacion del constructor de menus en si es bastante sencilla, importante tener en cuenta :
Configuracion en el constructor para ver las opciones de que las aplicaciones se vayan abriendo en pestañas o no, la verdad prefiero que se abran en pantalla completa y no manejar pestañas
Cuando se configura la opcion de Exit, se selecciona en la opcion de Target (Leave)
Tambien se puede definir cual sera la aplicacion inicial, una buena idea es definir que sea una aplicacion tipo Blank que permita simplemente visualizar un fondo con diseño
Dentro de las opciones del constructor de Menu esta la de la creacion del ToolBar que permite crear botones que pueden ser empleados como links adicionales a las funcionalidades mas comunes del sisema que se este desarrollando
El header y el footer se configuran dentro del constructor igual que en cualquier otro constructor de aplicaciones
Los menus tradicionales la verdad me parecen bastante feos, pero con el header y con el footer mejoran muchisimo
Para que un texto por ejemplo en el footer se convierta en un link operativo : www.coredataconcepts.com se debe introducir en scriptcase con una etiqueta de html :
<a href = 'http://www.coredataconcepts.com'>coredataconcepts></a>
En la configuracion tambien existe la posiblidad de definir dentro de Menu Structure unos bloques que operan como layers para agregar informacion adicional al menu, es algo asi como un tipo de header complementario al menu mismo
--------------------------------------------------------------------------------------------------------------------------------------
Es una aplicacion similar a un formulario pero que en realidad no esta vinculada a ninguna tabla en la base de datos, por lo cual nos permite crear todos los campos que deseemos
Por ejemplo el Login se construye como una aplicacion de control
Tiene la opcion de usar plantillas HTML que trae la aplicacion, regulares....pero bueno
Esto es parecido como al concepto de campos dinamicos pero en una aplicacion en si misma, es decir es como para que el usuario seleccione ciertos parametros y se realicen consultas sobre la base, con estas consultas algunos calculos y se puedan visualizar
Tutorial :
5 - Aplicación Control_ Presentación general.mp4
Permite crear cosigo HTML y PHP para visualizarlos en pantalla, en ellas se pueden usar los macros de scriptcase, ademas se integra de manera nativa con los modulos de seguridad y logs
Tutorial :
6 - Aplicación Blank_ Presentación general.mp4
En realidad son containers, es decir se usan para contener otras aplicaciones
Por efectos de estetica pareciera ser mucho mas interesante usar TABS que menus, de hecho en TABS se ven brutales !!!
Primero que todo se definen las pestañas en la seccion de Folder del constructor
Luego defino en Application Settings las aplicaciones que iran en cada pestaña asi como sus respectivos parametros en caso de tenerlos
Es un tipo de aplicacion container al iguao que TABS
Trabaja bajo el concepto de widgets, para este caso un widget equivale a una aplicacion de las que se va a incluir en el dashboard, principalmente las aplicaciones del dashboard corresponden a Grids y a Graficas.
Puedo configurar si se pueden mover, ampliar, extraer, abrir y cerrar, etc.
Los Eidgets pueden ser :
- Link Widgets : simplemente escojo la aplicacion que deseo visualizar en el widget
- Index Widgets : me permite crear indices (KPI) basados en informacion sacada de las tablas de la base de datos que adems se pueden agregar via determinadas funciones
Tutorial :
8 - Aplicación Dashboard_ Presentación general.mp4
Mal necesario...pero en la medida de lo posible evitar a toda costa.
Da opciones para que sea solo visualizado o para descargarlo
Truco Brutal : para generar los pdf con diseño, simplemente construyo primero el diseño en alguna otra aplicacion mucho mas amigable para estos temas y luego la uso como si fuera un proforma o un talonario pre impreso, es decir que uso las funcionalidades del constructor para organizar la informacion encima o adentro de la imagen de diseño
Tutoriales :
9.1 - Aplicación PDF Report_ Reportes en PDF.mp4
Ejemplo de creacion de Factura Brutal !!!!
9.2 - Aplicación PDF Report_ Facturas en PDF.mp4
Me permite administrar eventos en el tiempo
Una agenda....pero como de utilidad para las aplicaciones.....muy poco
Muy interesante el modulo grafico, funciona bajo los mismos principios del GRID, lo unico que realmente necesito es el SQL definido y por supuesto puedo tomar datos de multiples tablas
Trabaja por Dimensions & Metrics, que viene siendo la misma logica de Dimensions & Facts
Tutorial :
Scriptcase Experto 17.3 - Chart agenda cantidad citas por estado.mp4
Buttons
sc_btn_copy
This macro returns "true" when the "copy" button is selected in a form.
sc_btn_delete
This macro returns "true" when the "Delete" button is selected in a form.
sc_btn_display ("Button_Name","on/off")
This macro shows and hides buttons on the toolbar in execution time.
sc_btn_insert
This macro returns "true" when the "Add" button is selected in a form.
sc_btn_new
This macro returns "true" when the "Add New" button is selected in a form.
sc_btn_update
This macro returns "true" when the "Save" button is selected in a form.
-----------------------------------------------------------------------------------------------------------------------------------------------
Control
sc_ajax_javascript ( 'JavascriptMethodName', array("parameter"))
This macro allows the execution of JavaScript methods in form/control events
sc_alert ("Message", $array)
This macro shows a Javascript alert message screen.
sc_apl_conf ("Application", "Property", "Value")
This macro modify the application execution property.
sc_apl_default ('application', 'type');
This macro allows that the user defines in your initial application what will happen when the application lost the session.
sc_calc_dv (Digit, Rest, Value, Module, Weights, Type)
This macro calculate verify digits.
sc_call_api ($profile, $arr_settings)
This macro allows us to use as integrated Scriptcase APIs
sc_changed ({Field_Name})
This macro returns "true" if the field name have been changed.
sc_confirm ("Message")
This macro shows a Javascript confirm screen.
sc_decode ({My_Field})
This macro returns the encrypted field or variable to its original value.
sc_encode ({My_Field})
This macro returns the field or variable with the content encrypted.
sc_error_exit (URL / My_Application, "Target");
This macro Interrupts the application execution if there are error messages generated by the macro "sc_error_message".
sc_error_message ("Text")
This macro generate an error message.
sc_exit (Option)
This macro forces the application exit.
sc_getfield ('myField')
This macro assign the properties of a field to a javascript variable.
sc_get_language
This macro returns the abbreviation of the language used.
sc_get_regional
This macro returns the abbreviation of the regional settings used.
sc_get_theme
This macro returns the application theme name.
sc_groupby_label ("My_Field")
This macro dynamically modify the field label displayed in group by lines.
sc_image (Image01.jpg)
This macro loads images passed as parameter to use in the application.
sc_include ("File", "Source")
This macro is used to "include" PHP routines.
sc_include_lib ("Lib1", "Lib2", ...)
This macro is used to select dynamically the application libraries.
sc_include_library ("Target", "Library Name", "File", "include_once", "Require")
This macro includes a PHP file from a library in the application.
sc_label ({My_Field})
This macro its used to modify dynamically the grid form field label.
sc_language
This macro returns the language and regional settings.
sc_link (Column, Application, Parameters, "Hint", "Target", Height, Width)
This macro dynamically creates or modifies links between grid applications and other applications.
sc_log_add ("action", "description")
This macro will add a register into the log table.
sc_log_split ({description})
This macro returns what was inserted in the "description" field of the log table in an array format.
sc_mail_send (SMTP, Usr, Pw, From, To, Subject, Message, Mens_Type, Copies, Copies_Type, Port, Connection_Type, Attachment, SSL)
This macro is used to send e-mails.
sc_make_link (Application, Parameters)
This macro is used to create a string with the link data to another application.
sc_master_value ('Object', Value)
This macro update a Master Application object from a Detail Application.
sc_redir (Application, Parameter01; Parameter02; Target, Error, height_modal, width_modal)
This macro its used to redirects to other application or URL.
sc_reset_apl_default
This macro can reset sc_apl_default macro settings.
sc_reset_global ([Global_Variable1], [Global_Variable2] ...)
This macro delete session variables received as parameter.
sc_send_mail_api ($arr_settings)
Enables dynamic sending of embedded emails with Mandrill and Amazon SES
sc_send_sms ($arr_settings)
This macro is used to send text SMS messages
sc_send_whatsapp ($arr_settings)
This macro allows the dynamic sent of text messages through Whatsapp.
sc_seq_register
This macro provide the register sequential number.
sc_set_global ($variable_01) or ({My_Field})
This macro is used to register session variables.
sc_set_groupby_rule
Macro is used to select an specific GROUP BY rule.
sc_set_language ('String Language')
This macro allows to dynamically change the application language.
sc_set_regional ('String Regional')
This macros allows to dynamically change the application regional settings.
sc_set_theme ('String Theme')
This macro is used to dynamically define the application themes.
sc_site_ssl
This macro verifies if its been used a safe/secure site. (https protocol)
sc_trunc_num ({My_Field}, Decimal_Number)
This macro its used to set the number of decimals.
sc_url_exit (URL)
This macro modifies the application exit URL.
sc_url_library ("Target", "Library Name", "File")
This macro returns the path of a file, inside a library, to be used on the applications.
sc_warning 'on' or 'off'
This macro dynamically activates or deactivates warning messages control.
sc_webservice ("Method", "URL", "Port", "Send Method", "Parameters Array", "Setting's Array", "Timeout", "Return")
This macro is used to communicate with a web service.
sc_zip_file ("File", "Zip")
This macro its used to generate ZIP files from a file list and/or directories.
Variables - Totalling Totalling Variables
Variables that contains all the totals (general and for grouping).
Variables - Totalling (group by) Totalling Variables (group by)
Breaking totals variables.
-----------------------------------------------------------------------------------------------------------------------------------------------
Date :
sc_date (Date, "Format", "Operator", D, M, Y)
This macro calculates and returns increments and decrements using dates.
sc_date_conv ({Field_Date}, "Input_Format", "Output_Format")
This macro converts the date field passed as parameter with an input format to another field with an output format.
sc_date_dif ({Date1}, "Format Date1", {Date2}, "Format Date2")
This macro calculates the difference between two dates (passed as parameters) returning the result in days.
sc_date_dif_2 ({Date1}, "Format Date1", {Date2}, "Format Date2", Option)
This macro calculates the difference between two dates returning the amount of days, months and years.
sc_date_empty ({Field_Date})
This macro checks if a date field its empty retuning a boolean.
sc_time_diff ({datetime_01}, "Date_01 Format", {datetime_02}, "Date_02 Format")
Calculate difference in hours, returning the amount of hours, minutes and seconds.
-----------------------------------------------------------------------------------------------------------------------------------------------
Deshabilitar Seleccion Campo :
https://www.scriptcase.net/es/documentacion/en_us/v9/manual/06-applications/07-control-application/06-ctrl-javascript/
-----------------------------------------------------------------------------------------------------------------------------------------------
Filter
sc_where_filter
This macro its used to save the where clause content generated through the filter form.
Security
sc_apl_status ("Application", "Status")
This macro Activate/Deactivate the applications at user level.
sc_ldap_login
This macro establish the connection with the user credentials.
sc_ldap_logout ()
Macro used to release the connection after using the macro sc_ldap_login
sc_ldap_search ( $filter = 'all', $attributes = array() )
Macro to perform searches in the LDAP.
sc_reset_apl_conf ("Application", "Property")
This macro deletes all the modifications effected by "sc_apl_conf" macro.
sc_reset_apl_status
This macro deletes all the application security status variables.
sc_reset_menu_delete
This macro restores a menu item structure. (removed by the macro "sc_menu_delete").
sc_reset_menu_disable
This macro its used to enable a menu item structure. (disabled by the macro "sc_menu_disable").
sc_user_logout ('variable_name', 'variable_content', 'apl_redir.php', 'target')
Macro used to log the user out to the system.
-----------------------------------------------------------------------------------------------------------------------------------------------
Menu
sc_appmenu_add_item ("Menu_Name", "Id_Item", "Id_Parent", "Label", "Aplication", "Parameters", "Icon", "Hint", "Target")
This Macro adds dinamically an item to the menu.
sc_appmenu_create ("Menu_Name")
This macro dynamically creates a menu item.
sc_appmenu_exist_item ("Menu_Name", "Id_Item")
This macro checks if there is a menu item.
sc_appmenu_remove_item ("Menu_Name", "Id_Item")
This macro removes dynamically a menu item.
sc_appmenu_reset ("Menu_Name")
This macro reset the array used in the dinamically creation of a menu application.
sc_appmenu_update_item ("Menu_Name", "Id_Item", "Id_Parent", "Label", "Aplication", "Parameters", "Icon", "Hint", "Target")
This macro updates a menu item.
sc_btn_disable ('button_id', 'on/off')
Macro used to disable Menu buttons.
sc_menu_delete (Id_Item1)
This macro remove items of the menu structure.
sc_menu_disable (Id_Item1)
This macro deactivate menu structure items.
sc_menu_force_mobile (boolean)
Macro used to force the creation of menus to mobile devices.
sc_menu_item
This macro Identifies the menu item selected.
sc_script_name
This macro identifies the application name that was selected in the menu.
-----------------------------------------------------------------------------------------------------------------------------------------------
PDF
sc_set_pdf_name "sc_my_file_name.pdf"
This macro will change the grid's exported files name.
Variables - Authentication Authentication Variables
User/Password for the WEB server.
-----------------------------------------------------------------------------------------------------------------------------------------------
Shows
sc_ajax_message ("Message", "Title", "Parameters", "Parameters_Redir", "String_toast");
This macro allows the application to display customized messages.
sc_ajax_refresh
Macro to refresh a Grid
sc_block_display (Block_Name, on/off)
This macro dynamically show/hide the fields of a specific block.
sc_field_color ("Field", "Color")
This macro changes the color of a determined field text.
sc_field_disabled ("Field_Name = True/False", "Parameter")
This macro is used to block a field to get any data that would be typed on it.
sc_field_disabled_record ("Field_Name = True/False", "Parametre")
This macro has the objective to block the typing on determined fields in the Forms.
sc_field_display ({My_Field}, on/off)
This macro dynamically display or not a specific field.
sc_field_init_off (Field1, Field2,...)
This macro is intended to inhibit the query fields on the initial load.
sc_field_readonly ({Field}, on/off)
This macro dynamically set a form field attribute to '"Read-Only"
sc_field_style ({My_Field}, "Background-Color", "Size", "Color", "Family", "Weight")
This macro allows to modify dynamically the grid field style.
sc_format_num ({My_Field}, "Group_Symb", "Dec_Symb", "Amount_Dec", "Fill_Zeros", "Side_Neg", "Currency_Symb", "Side_Currency_Symb")
This macro its used to format numerical values.
sc_format_num_region ({My_Field}, "Qtde_Dec", "Insert_Zeros", "Monetary_Sym")
This macro has the objective to format numbers, using the regional settings
sc_form_show 'on' or 'off'
This macro dynamically show or not the form.
sc_get_groupby_rule ()
This macro provides the name of the Group By rule running at the time.
sc_hide_groupby_rule ('group1', 'grop2', 'group3')
Macro used to disable Group By rules.
sc_set_focus ('Field')
This macro its used to set the focus to a form field.
sc_text_style ({My_Field}, "Background-Color", "Size", "Color", "Family", "Weight")
This macro allows to modify dynamically the text style from the grid field.
-----------------------------------------------------------------------------------------------------------------------------------------------
SQL :
sc_begin_trans ("Connection")
This macro starts a set of transactions in the database.
sc_change_connection ("Old_Connection", "New_Connection")
This macro dynamically change the application connections.
sc_commit_trans ("Connection")
This macro effective a set of transactions in the database.
sc_concat
With this macro you can concatenate fields on select for every database.
sc_connection_edit ("Connetion_Name", $arr_conn)
This macro edits an existing connection at runtime.
sc_connection_new ("Connection_Name", $arr_conn)
This macro creates new connections dynamically.
sc_error_continue ("Event")
This macro deactivates the Scriptcase standard database error treatment message for an event.
sc_error_delete
This macro configure the variable that contains the database error message that can occurs during the exclusion of a record.
sc_error_insert
This macro configure the variable that contains the database error message that can occurs during the addition of a record.
sc_error_update
This macro configure the variable that contains the database error message that can occurs during the update of a record.
sc_exec_sql ("SQL Command", "Connection")
This macro execute SQL commands passed as parameter or a SQL command in the SQL field action type.
sc_lookup (Dataset, "SQL Command", "Connection")
This macro executes a SELECT command stored in the second parameter and returns the data in a variable.
sc_reset_change_connection
This macro erases the changes made using "sc_change_connection".
sc_reset_connection_edit
This macro undoes the connection edits made by macro "sc_connection_edit".
sc_reset_connection_new
This macro undoes the connections made by the macro "sc_connection_new".
sc_rollback_trans ("Connection")
This macro discards a set of transations in the data base.
sc_select (dataset, "SQL Command", "Connection")
This macro executes the commands passed in the second parameter and returns the dataset in a variable.
sc_select_field ({Field})
This macro modify dynamically a field that will be recovered in the grid.
sc_select_order ("Field")
This macro modify dynamically the grids "ORDER BY" clause field.
sc_select_where (add)
This macro adds dynamically a condition to the grid WHERE clause.
sc_set_fetchmode (parm);
This macro allows to change the type of return from the dataset of the select commands
sc_sql_injection ({My_Field}) or ($My_Variable)
This macro is used protect the field/variable against "SQL injection".
sc_sql_protect (Value, "Type", "Connection")
This macro protects the value passed as parameter according with the used database.
sc_where_current
This macro is used to make a reference of the where clause currently used.
sc_where_orig
This macro saves the where clause content of the original application select.
Variables - Database Database Variables
Global variables containing database access values used by main connection.
sc_date :
Permite calcular el incremento o disminucion de fechas
Tutorial :
Scriptcase Macros - Módulo Fecha ( sc_date ).mp4
-----------------------------------------------------------------------------------------------------------------------------------------------------
sc_date_conv :
Permite pasar la fecha tomada de un campo de entrada con formato de entrada a otro campo de salida con formato de salida
Tutorial :
Scriptcase Macros - Módulo Fecha ( sc_date_conv ).mp4
-----------------------------------------------------------------------------------------------------------------------------------------------------
sc_date_dif :
Calcula la diferencia en dias entre dos fechas
Tutorial :
Scriptcase Macros - Módulo Fecha (sc_date_dif ).mp4
-----------------------------------------------------------------------------------------------------------------------------------------------------
sc_date_dif_2 :
Permite calcular la diferencia entre 2 fechas, devolviendo la cantidad de dias, meses y años
Tutorial :
Scriptcase Macros - Módulo Fecha ( sc_date_dif_2 ).mp4
-----------------------------------------------------------------------------------------------------------------------------------------------------
sc_date_empty :
Comprueba si un campo de fecha esta vacio
Tutorial :
Scriptcase Macros - Módulo Fecha ( sc_date_empty ).mp4
-----------------------------------------------------------------------------------------------------------------------------------------------------
sc_time_diff :
Calcula la diferencia en horas, minutos y segundos entre dos valores de fecha / hora
Tutorial :
Scriptcase Macros - Módulo Fecha ( sc_time_diff ).mp4
Matrix :
Permite ejecutar comandos de SQL y devolver el resultado como un conjunto de datos.
La estructura de ese conjunto de datos es una matriz con la esturctura Fila / Columna
Las Filas de la Matriz representan los Registros
Las Columnas de la Matriz representan los Campos
Los indices de esta matriz comienzan en (0,0)
sc_lookup(dataset, "select customer_id, costumer_name, credit_limit from customers");
Para Tener acceso a la Primera Fila del DataSet :
{customer_id} = {dataset[0][0]};
{customer_name} = {dataset[0][1]};
{credit_limit} = {dataset[0][2]};
Para Tener acceso a la Segunda Fila del Dataset :
{customer_id} = {dataset[1][0]};
{customer_name} = {dataset[1][1]};
{credit_limit} = {dataset[1][2]};
---------------------------------------------------------------------------------------------------------------------------------------
Tutorial :
Scriptcase Macros - Módulo SQL ( sc_lookup ).mp4
---------------------------------------------------------------------------------------------------------------------------------------
Fields / Global Variables :
Esta macro tambien puede emplear Variables Globales ([var_glo_salesman]) o Campos de la Aplicacion ({customer_id})
- En el caso de las Variables Globales basta con colocarlas entre Corchetes ( [] )
- En el caso de los Campos de las Aplicaciones, estos se colocan entre comillas simples y llaves ( '{}' )
sc_lookup(dataset,"select order_value from orders where clienteid = '{customer_id}' and salesman_id = [var_glo_salesman]")
El (dataset) es el nombre del array en donde se guardaran los datos recuperados por la macro
---------------------------------------------------------------------------------------------------------------------------------------
Best Practices :
Definir una Variable con las sentencias SQL que se van a emplear y usar la variable definida en la macro en lugar de las sentencias SQL propiamente dichas.
Las sentencias SQL deben ir entre comillas ( "" ) al momento de ser definidas en la variable
Trabajar de esta manera me dara mucho mayor legibilidad del codigo.
$sql = "SELECT
IdPedido, SUM(PrecioUnitario * Cantidad)
FROM
detalles_pedido
WHERE
IdPedido = 10248";
sc_lookup(ds,$sql);
echo "Id del pedido = " . ds[0][0];
---------------------------------------------------------------------------------------------------------------------------------------
Validation :
Es muy importante validar que la conexion y las sentencias SQL hallan sido exitosas, asi como validar que el dataset no se encuentre vacio :
if ({ds} === false){
echo "Error de Acceso" . {ds_erro};
}elseif(!empty({ds})){
$IdPedido = {ds [0][0]};
$Total = {ds [0][1]};
sc_alert("Total del Pedido $IdPedido = $Total");
}else{
echo "Pedido No Existe";
}
Matrix :
Permite ejecutar comandos de SQL y devolver el resultado como un conjunto de datos.
La estructura de ese conjunto de datos es una matriz con la esturctura Fila / Columna
Las Filas de la Matriz representan los Registros
Las Columnas de la Matriz representan los Campos
Los indices de esta matriz comienzan en (0,0)
sc_lookup(dataset, "select customer_id, costumer_name, credit_limit from customers");
Para Tener acceso a la Primera Fila del DataSet :
{customer_id} = {dataset[0][0]};
{customer_name} = {dataset[0][1]};
{credit_limit} = {dataset[0][2]};
Para Tener acceso a la Segunda Fila del Dataset :
{customer_id} = {dataset[1][0]};
{customer_name} = {dataset[1][1]};
{credit_limit} = {dataset[1][2]};
---------------------------------------------------------------------------------------------------------------------------------------
Tutorial :
Scriptcase Macros - Módulo SQL ( sc_lookup ).mp4
---------------------------------------------------------------------------------------------------------------------------------------
Fields / Global Variables :
Esta macro tambien puede emplear Variables Globales ([var_glo_salesman]) o Campos de la Aplicacion ({customer_id})
- En el caso de las Variables Globales basta con colocarlas entre Corchetes ( [] )
- En el caso de los Campos de las Aplicaciones, estos se colocan entre comillas simples y llaves ( '{}' )
sc_lookup(dataset,"select order_value from orders where clienteid = '{customer_id}' and salesman_id = [var_glo_salesman]")
El (dataset) es el nombre del array en donde se guardaran los datos recuperados por la macro
---------------------------------------------------------------------------------------------------------------------------------------
Best Practices :
Definir una Variable con las sentencias SQL que se van a emplear y usar la variable definida en la macro en lugar de las sentencias SQL propiamente dichas.
Las sentencias SQL deben ir entre comillas ( "" ) al momento de ser definidas en la variable
Trabajar de esta manera me dara mucho mayor legibilidad del codigo.
$sql = "SELECT
IdPedido, SUM(PrecioUnitario * Cantidad)
FROM
detalles_pedido
WHERE
IdPedido = 10248";
sc_lookup(ds,$sql);
echo "Id del pedido = " . ds[0][0];
---------------------------------------------------------------------------------------------------------------------------------------
Validation :
Es muy importante validar que la conexion y las sentencias SQL hallan sido exitosas, asi como validar que el dataset no se encuentre vacio :
if ({ds} === false){
echo "Error de Acceso" . {ds_erro};
}elseif(!empty({ds})){
$IdPedido = {ds [0][0]};
$Total = {ds [0][1]};
sc_alert("Total del Pedido $IdPedido = $Total");
}else{
echo "Pedido No Existe";
}
Trabaja con los mismos principios de sc_lookup, solo que para todo el resto del universo de los comandos de SQL : Insert, Delete, Update, Etc.
Tutorial :
Scriptcase Macros - Módulo SQL (sc_exec_sql ).mp4
Es muy similar al sc_lookup, solo que la macro no manipula el conjunto de datos obtenido, esta manipulacion es responsabilidad del usuario
Tutorial :
Scriptcase Macros - Módulo SQL (sc_select ).mp4
SC_SELECT_FIELD :
Esta macro permite modificar dinamicamente el Select, por lo cual es posible modificar dinamicamente los campos del Grid o de una Grafica
-------------------------------------------------------------------------------------------------------------------------------------
SC_LABEL :
Esta macro se usa para modificar dinamicamente la etiqueta del campo de formulario de consulta
-------------------------------------------------------------------------------------------------------------------------------------
Tutorial :
Scriptcase Macros - Módulo SQL (sc_select_field y sc_label ).mp4
sc_glo_server : Nombre del Servidor
sc_glo_db : Nombre de la Base de Datos
sc_glo_db_type : Tipo de Base de Datos (mssql, oracle, mysql, etc)
sc_glo_user : Nombre del usuario conectado
sc_glo_cript_pass : Password Encriptado (S/N)
sc_glo_decimal_db : Contiene el separador decimal empleado (Punto y Coma o Coma)
------------------------------------------------------------------------------------------------------------------------------------
Tutorial :
Scriptcase Macros - Módulo SQL (Variables) _ Database Variables de base de datos.mp4
Inicia un conjunto de transacciones en la Base de Datos
Esta macro no es necesaria para los eventos :
- OnAfter / Update / Insert / Delete
- OnBefore / Update / insert / Delete
Pues estan protegidos automaticamente por un control de transacciones
-----------------------------------------------------------------------------------------------------------------------------------
Esta macro se usa para otros casos en lo cuales se requiera un control de transacciones :
- Siempre se empieza con la macro sc_begin_trans
- Se termina con sc_commit_trans() para confirmar las transacciones
- O se termina con sc_rollback_trans() para cancelar las transacciones
---------------------------------------------------------------------------------------------------------------------------------
Tutorial :
Scriptcase Macros - Módulo SQL ( sc_begin_trans ) _ Macros de base de datos transaccionales.mp4
Se emplea para concatenar los campos de la tabla en la sentencia SELECT
Se puede usar en campos Select, Auto Complete y en general en cualquier campo en el que se pueda hacer Select Automatico
Tutorial :
Scriptcase Macros - Módulo SQL ( sc_concat ).mp4
SC_CONNECTION_EDIT :
Permite editar una conexion a la base de datos en tiempo de ejecucion
-------------------------------------------------------------------------------------------------------------------------------------
SC_RESET_CONNECTION_EDIT :
Permite deshacer las ediciones hechas a la conexion. En otras palabras rompe la conexion actual, esta macro debe usarse antes de sc_connection_edit, de esta manera primero se rompe la conexion y luego se crea la nueva conexion a la base de datos deseada
-------------------------------------------------------------------------------------------------------------------------------------
Tutorial :
Scriptcase Macros - Módulo SQL ( sc_connection_edit y sc_reset_connection_edit).mp4
Permite en tiempo de ejecucion de una Grid o una Grafica modificar la clausular Order By
Para poderla emplear se necesita al menos una Clausula Order By en el comando original que se desea modificar
Tutorial :
Scriptcase Macros - Módulo SQL ( sc_select_order ).mp4
Permite agregar un parametro nuevo a la Calusula Where del Grid o de una Grafica en tiempo de ejecucion
Puede operar de la siguiente manera :
- Crear la clausula Where con el nuevo parametro en caso de no existir previamente la clausula
- Agregar un nuevo parametro a la clausula Where como (AND)
- Agregar un nuevo parametro a la clausula Where como (OR)
Tutorial :
Scriptcase Macros - Módulo SQL ( sc_select_where ).mp4
Permite cambiar el tipo de retorno de los comandos SQL ejecutados
Parametros :
parm = 0 : devuelve una matriz que puede ser llamada con el indice y el nombre de las columnas
parm = 1 : devuelve una matriz solo con el indice de las columnas
Tutorial :
Scriptcase Macros - Módulo SQL ( sc_set_fetchmode ).mp4
SC_WHERE_CURRENT :
Nos informa el filtro actualmente en ejecucion
-------------------------------------------------------------------------------------------------------------------------------------
SC_WHERE_ORIG :
Retorna los datos originales del filtro
-------------------------------------------------------------------------------------------------------------------------------------
Tutorial :
Scriptcase Macros - Módulo SQL ( sc_where_current y sc_where_orig ).mp4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment