Página 1 de 2
Macros?
Publicado: Vie May 20, 2011 3:11 pm
por Diego Sanchez
Necesito hacer que clarion reconozca una variable y la convierta a su nombre respectivo (tipo macros en Clipper recuerdan?)
Necesito que Clarion entienda esto:
Loop i#=1 to Mitabla{Prop:Fields} !Recorro todos los campos de la tabla
Variable= Who(Mitabla,i#} !Nombre del Campo actual
IF Mitabla{Prop:label,i#} <> history::MIT:Record.& Variable !Compare el campo actual contra el valor del historial
!a ver si se modificó
END
END
La parte en negrita es la que no logro hacer funcionar
Gracias
Re: Macros?
Publicado: Vie May 20, 2011 5:47 pm
por Mauricio
Me parece que vas a tener que jugar con el what del registro histórico.
Algo así:
Código: Seleccionar todo
Loc:Any Any
Code
Loc:Any &= what(history::MIT:Record, El Número del campo que te interesa)
IF Loc:Any <> TuTabla{Prop:Label, i#}
!Etc
END !IF
Esto lo escribí sin probarlo, aclaro. Pero buscaría por ese lado.
Re: Macros?
Publicado: Sab May 21, 2011 12:53 am
por César
Diego: aclarame estas dudas
1- lo que necesitas es comparar el Contenido de los campos ó el nombre de los campos ?
2- las estructuras de history::MIT:Record y MiTabla , son idénticas en tipos y orden ?
3- necesitas saber que campos tiene diferencia individualmente ó te sirve con solo saber si existe diferencia entre las dos estrucutras sin importar en que campos ?
Re: Macros?
Publicado: Sab May 21, 2011 2:59 pm
por R.Pacheco
Hola
Si lo que necesita es conocer la estructura de una tabla con su respectivos campos
dale un vitazo esto tal vez te sirve.
Código: Seleccionar todo
!cargado Tablas
loop i# = 1 to 40
clear(QMembresia)! Queue para carga los datos
Ca:Campos = who(MIEM:record,i#)! Aqui va la cola de tu tabla
if (Ca:Campos) > '' !Aqui se cargan los campos
add(QMembresia) ! Se guardan o se cargan
end!if
end!if
Nota Importante
Te crea tu queue le pone un list y en open Window de la ventana pone el codigo,
no te olvide de poner en el esquematico tu tabla a la que quiere ver los campos o en otra tabla.
Espero q te sirva
Re: Macros?
Publicado: Lun May 23, 2011 6:42 pm
por Diego Sanchez
Lo que necesito es comparar el contenido de los campos, o saber si alguno de los campos fue modificado con respecto al valor del history.
Entro a la ventana, activo el historial Self.Savehistory()
y en el Takecompleted antes del parent call necesito saber si cualquier campo fue modificado
IF CLI:CAMPO1 <> history::CLI:Record.CLI:CAMPO1
Pero necesito probar todos los campos de la tabla contra el historial
Por esto uso un loop
Loop i#=1 to tabla{prop:Fields}
IF tabla{Prop:field,i#}<>HISTORY::TAB:TABLA.CAMPO <- este ultimpo pedazo (CAMPO) es lo que necesito desde un macro
END
end
Re: Macros?
Publicado: Lun May 23, 2011 8:34 pm
por César
Entonces creo que esto es lo que tenes que hacer:
PtrGroup &GROUP
ActualValor ANY
ViejoValor ANY
PtrGroup &= MiTabla{Prop:Record} !puntero al record actual
LOOP I# = 1 TO MiTabla{PROP:Fields}
ActualValor &= WHAT(PtrGroup, I#)
ViejoValor &= WHAT(history::CLI:Record, I#)
IF ActualValor <> ViejoValor
!los contenidos de los campos de posicion I# son distintos
END!IF
END !LOOP
Estoy suponiendo que history::CLI:Record es una estructura RECORD o puntero a un RECORD ( &GROUP).
Tené en cuenta que los campo MEMO y BLOB , no estan dentro de la estructra RECORD por lo que no se estan comparando aqui.
Re: Macros?
Publicado: Lun May 23, 2011 9:39 pm
por Diego Sanchez
Muchas gracias, voy a hacer la prueba y te aviso
Re: Macros?
Publicado: Mié May 25, 2011 10:44 pm
por Diego Sanchez
Un Exito completo fue la ayuda de César, muy amable
Re: Macros?
Publicado: Jue May 26, 2011 10:38 am
por Mauricio
Re: Macros?
Publicado: Jue May 26, 2011 1:33 pm
por Diego Sanchez