Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Clarion Que se puede almacenar Byte (de 1 a 99) Short (de 1 a 9,999) Long (de 1 a 999,999,999) Decimal (de 1 a 9,999,999,999,999,999,999,999,999,999,999) String (de 1 a 4 Mega-Bytes) Para guardar hasta 99,999.99 se define un campo del tipo Decimal con un character de 7 decimal 2 picture @N9.2 Para campos alfanumricos grandes se puede usar CSTRING pero en characters hay que poner uno ms del que se quiere almacenar Pictures para Fecha y Hora @D6 DD/MM/YYYY @D17 Fecha corta segn formato Windows @D18 Fecha larga segn formato Windows @T1 HH:MM @T4 HH:MM:SS @T7 Hora corta segn formato de Windows @T8 Hora larga segn formato de Windows Para todos los pictures si se especifica B esto har que cuando el campo es cero se muestre blanco (@D6B), otros ejemplos comunes son @N10 <<,<<<,<<<# Ejemplo de CUIT @N_10 <<<<<<<<<# Decimal 11 Picture @P##-########-#P @N010 ########## los guiones nunca son almacenados Para el ingreso de datos la forma mas sencilla es la siguiente Campos Entry Mode
1
Numricos Insert Fecha Overwrite String Overwrite Relacin tipos de campos entre Clarion y MS-SQL Server CLARION MS-SQL SERVER Byte Bit (de 0 a 1) Byte Tinyint (de 1 a 99) Short SmallInt (de 1 a 9,999) Long Int (de 1 a 999,999,999) Decimal Decimal (999.99 se define como: (pres 5 esc 2) String Char CString VarChar Date DateTime (Fecha y Hora) Time DateTime (Fecha y Hora) Para un buen funcionamiento de las aplicaciones todos los ndices deben ser nicos y los campos se deben definir sin el atributo NULL Manejo de Tablas Acceso a un registro
CLEAR(TBL:RECORD) TBL:CAMPO = XXXXX IF Access:TABLA.Fetch(TBL:CLAVE) = LEVEL:BENIGN !El registro existe ELSE !El registro no extite END
Insertar un registro
CLEAR(TBL:RECORD) TBL:CAMPO = XXXXX IF Access:TABLA.Insert() <> LEVEL:BENIGN ! Error al crear el registro
Cambiar un registro
CLEAR(TBL:RECORD) TBL:CAMPO = XXXXX IF Access:TABLA.Fetch(TBL:CLAVE) = LEVEL:BENIGN TBL:CAMPO = XXXXX IF Access:TABLA.Update() <> LEVEL:BENIGN !Error al actualizar el registro END END
Borrar un registro
CLEAR(TBL:RECORD) TBL:CAMPO = XXXXX IF Access:TABLA.Fetch(TBL:CLAVE) = LEVEL:BENIGN Access:TABLA.DeleteRecord() !Alternativa 1 Relate:TABLA.Delete(0) !Alternativa 2 Delete(TABLA) !Alternativa 3 END
Lectura secuencial
CLEAR(TBL:RECORD) TBL:CAMPO = XXXXX SET(TBL:CLAVE,TBL:CLAVE) LOOP Until Access:TABLA.Next() OR TBL:CAMPO <> XXXXX !!!! END
Antes de abrir la ventana como saber si en el Form estoy en modo ADD-CHANGEDELETE-VIEW Window Manager - Init - Open the window (PR-8000)
IF SELF.Request = InsertRecord IF SELF.Request = ChangeRecord IF SELF.Request = ViewRecord IF SELF.Request = DeleteRecord La ltima instruccin solo es valida siempre que el Form muestre el registro a borrar
Agregar cdigo antes que el Form realice el ADD-CHANGE-DELETE Window Manager - TakeCompleted (PR-5000)
IF SELF.Request = InsertRecord IF SELF.Request = ChangeRecord IF SELF.Request = DeleteRecord
Agregar cdigo despus que el Form realizo el ADD-CHANGE-DELETE exitosamente Window Manager - TakeCompleted (PR-5001)
IF ReturnValue = Level:Benign IF SELF.Request = InsertRecord IF SELF.Request = ChangeRecord IF SELF.Request = DeleteRecord La ltima instruccin solo es valida siempre que el Form muestre el registro a borrar
Donde colocar cdigo para hacer una validacin en un campo en un procedimiento del tipo Form Control Events Accepted Generated Code (PR-7000)
IF Condicion BEEP MESSAGE('Texto del Error','Texto de la Ventana,&| ICON:Exclamation,BUTTON:Cancel,BUTTON:Cancel,1) SELECT(?) CYCLE
END
Como forzar la validacin de un campo Control Events Selected Generated Code (PR-4000)
?CAMPO{PROP:Touched} = TRUE
Como saber si luego de que un control del tipo Field LookUp que accedi a un browse para validar se le dio Select
IF GlobalResponse = RequestCompleted
Como colocar cdigo en un Browse para cada registro ledo Local Objects Browse on Tabla SetQueueRecord (PR-2500) Como filtrar un Browse antes de mostrarlo Se puede hacer por record filter Si es mas complejo se puede hacer en Local Object Browse on Table InitSort (PR-10000)
IF Condicion = 1 BRW1.SetFilter('(TCON:CVP_B <> 0)') BRW1.ApplyFilter() END
Como filtrar un registro en un Browse o Reporte antes que se muestre Local Objects Browse on Tabla ValidateRecord (PR-4500)
IF Condition THEN RETURN Record:Filtered;END
Como controlar desde un Browse justo antes de llamar a un Form Local Object Browse on Table Ask(Byte Request) (PR-4999)
IF Request = InsertRecord
Como abrir una tabla en modo exclusivo Colocar la tabla en OTHER TABLE Window Manager - Init Open Files (PR-7501)
Relate:TABLA.Close
Access:TABLA.SetOpenMode(12h);Relate:TABLA.Open Relate:TABLA.Close
O Tambin abrir la tabla en modo exclusivo Como ordenar una tabla para luego imprimirla en ese orden en un reporte OpenReport Code (PR-5000)
ThisReport.SetOrder('TBL:CAMPO1',TBL:CAMPO2,-TBL:CAMPO3) ThisReport.ApplyOrder()
CAMPO1 Y 2 en orden ascendente CAMPO3 en orden descendente Como filtrar una tabla para luego imprimirla sin esos registros en un reporte OpenReport Code (PR-5000)
ThisReport.SetFilter('TBL:CAMPO1 = XXXX) ThisReport.ApplyFilter()
Tanto para el Order como para el Filter los campos a utilizar si no estn pintados en el reporte tienen que estar definidos como HOT FIELDS Como manejar un Browse con una clave compuesta por ms de un campo e ir refrescndolo por cada cambio en esos campos Clave de la Tabla Empresa Cliente Fecha Colocar en Range Limit siempre el ltimo campo de la clave que se quiere limitar, en este caso Cliente Si se cambia la Empresa colocar
TBL:Empresa = GLO:Empresa BRW1.AddRange(TBL:Empresa) BRW1.ApplyRange() ThisWindow.Reset(True)
Como ordenar un Browse antes de abrir la ventana Local Objects Browse on Tabla InitSort (PR-10000)
BRW1.SetOrder('TBL:CAMPO')
Como agregar otro tem al PopUp men de ABM del browse Agregar un botn debajo de los estndar ADD-CHANGE-DELETE con atributo Hide Window Manager - Init Prepare Alert Key (PR-9001)
BRW1.PopUp.AddItemMimic('Texto',?Boton)
Como borro un boton de update en ABM del browse Window Manager - Init Open the Window (PR-8000)
BRW4.DeleteControl = 0
Como pararse en un browse de entrada en distintas partes Window Manager - Init - (PR-9000)
POST(Event:ScrollUp,?Browse) POST(Event:ScrollDown,?Browse) POST(EVENT:ScrollTop,?Browse) POST(EVENT:ScrollBottom,?Browse) ! ! ! ! subir un registro descer un registro primer registro ultimo registro
Validacin de campos en Browse EIP Local Object EIP Manager for browse using ?Browse:1 Take Completed (BYTE Force) (PR-4999)
IF BRW1.Q.TBL:CAMPO <> 1 Return
END
Poner disable un campo del EIP por una condicin Local Object EIP Manager for browse using ?Browse:1 GetEdit (PR-5001)
IF SELF.Req = ChangeRecord AND Self.Column = 1 AND TBL:MARCA <> 'E' ReturnValue = FALSE END
Agregar cdigo antes que el EIP realice el ADD-CHANGE-DELETE Local Object EIP Manager for browse using ?Browse:1 TakeCompleted Force (PR4999)
IF SELF.Request = InsertRecord IF SELF.Request = ChangeRecord IF SELF.Request = DeleteRecord BRW1.Q.COU:DESCRIPTION = CLIP(UPPER(BRW1.Q.COU:DESCRIPTION))
Agregar cdigo despus que el EIP realice el ADD-CHANGE-DELETELocal Object EIP Manager for browse using ?Browse:1 TakeCompleted (PR-5001) IF ReturnValue = Level:Benign
IF SELF.Request = InsertRecord IF SELF.Request = ChangeRecord IF SELF.Request = DeleteRecord