Clipper/FiveWin - asignacion con macrosustitucion

 
Vista:

asignacion con macrosustitucion

Publicado por Miguel Salas (53 intervenciones) el 30/08/2005 17:44:25
Que tal Todos tengo el siguiente detalle:

nesecito grabar en una tabla la asistencia del mes, solo que no lo hace con la macrosustitucion, ¿ hay ota forma de hacerlo o tengo algo mal?
este es mi codigo....donde aAsisten es un arreglo con valores logicos .t. si asistió y .f. si no asistió.....

FOR nI := 1 TO 31
cAnio := '05'
cMes := '08'
cDia := cAnio+cMes+STRZERO(nI, 2, 0 )
oAsistencia:d&cDia := IIF(aAsisten[nI],"1"," ")
NEXT
oAsistencia:save()
al hacerlo directamente (oAsistencia:d050809:= "1") si lo graba...pero no se me sirve ....
saludos y gracias

atte Miguel
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:asignacion con macrosustitucion

Publicado por Marcelo (218 intervenciones) el 30/08/2005 19:35:37
que es la letra "d" delante de &cDia?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:asignacion con macrosustitucion

Publicado por miguel salas (53 intervenciones) el 30/08/2005 19:53:50
la letra "d" es parte del nombre del campo:
los campo son d050801, d050802, .... hasta el 31 ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:asignacion con macrosustitucion

Publicado por Marcelo (218 intervenciones) el 31/08/2005 16:48:02
Entonces hace :
"d"+&cDia
o
"d"+(cDia)

Fijate si asi funciona.

Marcelo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:asignacion con macrosustitucion

Publicado por Gabirel Pascual (913 intervenciones) el 02/09/2005 03:37:04
Hummmmm....

Va a ser que no...... las macros NO pueden ser utilizadas dentro de metodos o datas de objetos. (En realidad es por problemas de sintaxis, pero eso es harina de otro costal).

Por eso y por sugerencia del master Jedi Rene Flores yo no utilizo objetos DATABASE para manipular las bases de datos.

Yo me pregunto.....¿ para que marear tanto la perdiz ?.... o como diria el master ¿ para que matar pulgas a cañonazos) , no seria mas facil hacer un REPLACE o un FieldPut directo al campo ????

Por ejemplo:

cDia := cAnio+cMes+STRZERO(nI, 2, 0 )
cCampo := "d"+cDia
REPLACE &cCampo WITH IIF(aAsisten[nI],"1"," ")

o Bueno, algo mas "elegante"

cDia := cAnio+cMes+STRZERO(nI, 2, 0 )
cCampo := "d"+cDia
FieldPut ( FieldPos(cCampo) , IIF(aAsisten[nI],"1"," "))

Jejeje...... la solucion en 3 lineas sin objetos ni gaitas catalanas.

Los objetos sirven para muchas cosas, pero cuando se trata de macros.... que se quiten los objetos y que se queden las como fueron diseñadas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:asignacion con macrosustitucion

Publicado por Miguel Salas (53 intervenciones) el 02/09/2005 16:51:04
Gracias Gabriel.

Según entiendo con esto que me dices ¿eso de utilizar objetos debe ser a criterio y conveniencia del programador? pero ¿como decidirlo?

atte Miguel Salas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:asignacion con macrosustitucion

Publicado por Gabriel Pascual (913 intervenciones) el 03/09/2005 01:26:13
Pues, si, ahi tienes razon.

La experiencia es la que te dice cuando una cosa se soluciona mas facilmente con un objeto o directamente con una funcion, cuando un bloque de codigo opuede sustituir a un FOR, etc.

Hay cosas que no se pueden hacer con objetos, definitivamente, como las macros, hay cosas que es mejor manejarlas con objetos, todo depende de lo que quieras hacer y que tan diestro seas para hacerlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar