Sei sulla pagina 1di 7

Tipos de Campos Acordarse siempre que lo que define el almacenamiento es la opcin Characters, la opcin Picture es solo como se va a mostrar

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

Igualar los registros de dos tablas


TB1:RECORD :=: TB2:RECORD :=: es una igualacin en profundidad Esta instruccin iguala solo los campos que se llamen igual en ambas tablas independientemente de la posicin de cada uno de ellos

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

Como salir un procedimiento antes de abrir la window


RETURN Level:Fatal

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

Si quiero tomar control de los botones del cuadro de mensajes


CASE MESSAGE('Texto del mensaje,Texto de la Ventana,&| ICON:Question,BUTTON:Yes+BUTTON:No,BUTTON:No,1) OF BUTTON:No SELECT(?) CYCLE OF BUTTON:Yes END

Como forzar la validacin de un campo Control Events Selected Generated Code (PR-4000)
?CAMPO{PROP:Touched} = TRUE

Como saber en la validacin de un campo si se esta pasando cuando se presiono el botn OK


IF NOT ThisWindow{PROP:AcceptAll} o IF NOT (Nombre de Ventana){PROP:AcceptAll}

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)

Si se cambia el Cliente colocar


TBL:Cliente = GLO:Cliente BRW1.AddRange(TBL:Cliente) BRW1.ApplyRange() ThisWindow.Reset(True)

Como refrescar un Browse


SETCURSOR(CURSOR:WAIT) BRW1.ResetFromFile() BRW1.ResetFromBuffer() ThisWindow.Reset(True) SETCURSOR

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

Para apretar un botn desde la lgica


POST(EVENT:ACCEPTED,?Boton)

Colas en memoria (Queue) Para recorrer toda una cola


LOOP Q# = 1 TO RECORDS(COLA) BY 1;GET(COLA,Q#) !Codigo END GET(COLA,CAMPO) Busca un registro (El campo a buscar tiene que ser de la cola previamente igualado) ADD(COLA) Inserta un registro PUT(COLA) Modifica un registro DELETE(COLA) Borra un registro

Bloquear una Tabla


AUX:TABLA_UseLogOut = Relate:A_STOPRO.UseLogOut Relate:TABLA.UseLogout = FALSE LOOP;LOGOUT(1,TABLA);UNTIL ERRORCODE() = 0 !Mi cdigo COMMIT Relate:TABLA.UseLogOut = AUX:TABLA_UseLogOut

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

Potrebbero piacerti anche