Macros?

Consultas, trucos, consejos. Todo sobre Clarion en todas sus versiones
Diego Sanchez
Novato
Mensajes: 25
Registrado: Vie Feb 11, 2011 1:41 am
Contactar:

Macros?

Mensaje por Diego Sanchez » Vie May 20, 2011 3:11 pm

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


Avatar de Usuario
Mauricio
Desarrollador de Clarion
Mensajes: 1125
Registrado: Dom Feb 06, 2011 9:34 am
Ubicación: España
Contactar:

Re: Macros?

Mensaje por Mauricio » Vie May 20, 2011 5:47 pm

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.
Mauricio, básicamente usando Clarion 6.3
www.tdcsoftware.com y www.clarioneros.com/blog

César
Novato
Mensajes: 14
Registrado: Dom Feb 13, 2011 3:06 pm
Ubicación: Villa María, Córdoba
Contactar:

Re: Macros?

Mensaje por César » Sab May 21, 2011 12:53 am

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 ?

R.Pacheco
Al nivel de RZ
Mensajes: 367
Registrado: Lun Feb 07, 2011 4:45 pm
Ubicación: Santo Domingo,Rep.Dominicana
Contactar:

Re: Macros?

Mensaje por R.Pacheco » Sab May 21, 2011 2:59 pm

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
Ing. R. Pacheco
Analista Programador
Pachecoramon@hotmail.com, Skype:pachecoramon
Santo Domingo, Rep. Dominicana
Para cualquier consulta rápida: hacerla por WhatApp al 1 347-6159 US

Diego Sanchez
Novato
Mensajes: 25
Registrado: Vie Feb 11, 2011 1:41 am
Contactar:

Re: Macros?

Mensaje por Diego Sanchez » Lun May 23, 2011 6:42 pm

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

César
Novato
Mensajes: 14
Registrado: Dom Feb 13, 2011 3:06 pm
Ubicación: Villa María, Córdoba
Contactar:

Re: Macros?

Mensaje por César » Lun May 23, 2011 8:34 pm

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.

Diego Sanchez
Novato
Mensajes: 25
Registrado: Vie Feb 11, 2011 1:41 am
Contactar:

Re: Macros?

Mensaje por Diego Sanchez » Lun May 23, 2011 9:39 pm

Muchas gracias, voy a hacer la prueba y te aviso

Diego Sanchez
Novato
Mensajes: 25
Registrado: Vie Feb 11, 2011 1:41 am
Contactar:

Re: Macros?

Mensaje por Diego Sanchez » Mié May 25, 2011 10:44 pm

Un Exito completo fue la ayuda de César, muy amable

Avatar de Usuario
Mauricio
Desarrollador de Clarion
Mensajes: 1125
Registrado: Dom Feb 06, 2011 9:34 am
Ubicación: España
Contactar:

Re: Macros?

Mensaje por Mauricio » Jue May 26, 2011 10:38 am

Ahhh, claro, porque lo que puse yo no sirve! Ahora me ofendí! :lol: :lol: :lol:
Mauricio, básicamente usando Clarion 6.3
www.tdcsoftware.com y www.clarioneros.com/blog

Diego Sanchez
Novato
Mensajes: 25
Registrado: Vie Feb 11, 2011 1:41 am
Contactar:

Re: Macros?

Mensaje por Diego Sanchez » Jue May 26, 2011 1:33 pm

Aclaración, muchas gracias a todos los participantes en las respuestas, y Mauricio tambien :lol: :lol: :lol:


Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 8 invitados