FoxPro/Visual FoxPro - Ayuda expresiones visual fox

 
Vista:

Ayuda expresiones visual fox

Publicado por José Denes (6 intervenciones) el 17/05/2012 15:52:32
Buenas, les comento. Tento un fragmento de codigo de un programa que tengo que arreglar.

LPARAMETERS cMsg
LOCAL lcString, lnAlias

lnAlias = SELECT()
SELECT Solicitudes


*TOMA LA HORA DEL SERVIDOR
hora_server="SELECT getdate() AS HORA"
SQLEXEC(_SQLHANDLE,hora_server,"hora")

IF cMsg == "NEW"
lcString = "Creado por " + _USERDESCRIP + " el " + hora + " en " + SYS(0)
ELSE
lcString = IIF( ISNULL(so_bitacora),"",so_bitacora+ CHR(13)) + ;
cMsg + " " + _USERDESCRIP + " el " + hora + " en " + SYS(0)
ENDIF

REPLACE so_bitacora WITH lcString
TABLEUPDATE(2,.T.)

SELECT(lnAlias)

resulta que hay partes que no entiendo ni se como buscarlas ni nada de eso...
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

Ayuda expresiones visual fox

Publicado por jose denes (6 intervenciones) el 17/05/2012 15:55:52
perdon, me olvide de aclarar ...

no comprendo que significa
lnAlias = SELECT()
SELECT Solicitudes

osea ... bien... selecciona de la tabla solicitudes, pero que selecciona¿? no tiene un where ni nada ... toda la tabla dudo que la seleccione porque es de como 1gb maso ... despues, ese InAlias q es ¿? ... lo del medio mas o menos lo comprendo... so_bitacora es un campo de la tabla solicitudes...

pero tampoco comprendo que es
REPLACE so_bitacora WITH lcString
TABLEUPDATE(2,.T.)
de tableupdate encontre algo y mas o menos entendi, pero no se el funcionamiento de todo esto ... este replace no tiene ni un where ...

ni se que hace SELECT(lnAlias)

Bueno, disculpen tanta ignorancia junta pero programo en .net y esto la verdad que es muy distinto... saludos.
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

Ayuda expresiones visual fox

Publicado por Marcelo (70 intervenciones) el 19/05/2012 15:50:15
Hola..

InAlias es para crear un area de memoria para abrir la tabla yhacer el select.
SELECT es un comando de sql con el cual puedes seleccionar los datos de la tabla, dependiendo de las condiciones que le des te trae los datos, en este caso esta seleccionado la tabla Solicitudes.

el comando REPLACE se usa para grabar en la tabla un registro de datos, para tu caso esta grabando el campo so_bitacora con el valor lcstring, Tableupdate es para confirmar los cambios que estas haciendo a esa tabla.

Ojala esta informacion te aclare un poco tus dudas...Suerte.
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

Ayuda expresiones visual fox

Publicado por jose denes (6 intervenciones) el 21/05/2012 15:14:43
Muchas gracias, hasta ahi entiendo... pero el tema esta en que cuando yo actualizo el campo so_bitacora ... me actualiza una sola linea, y en el select que hace no tiene ni un where ni nada ...

el tema es que hay un error en esta funcion, a mi me interesaria saber 2 cosas. por odnde tengo que buscar ese where que dice que linea toma, porque evidentemente no me esta tomando toda la tabla porque no modifica toda la tabla ... y me gustaria saber como puedo hacer para agregarle un where dentro de esta funcion...

les comento para que tengan en cuenta, este programa lo que hace es tomar un monton de archivos pdf que por nombre tienen un numero y los envia por mail, que sucede, esta funcionando mal, si lo envian de a uno funciona bien pero si los envian todos juntos da error, entonses mi idea es agregarle otro parametro a esta funcion y que me pase ese numero para poder agregar un where al codigo este y probar, quiza con eso se soluciona :) ...

muchisimas gracias.
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

Ayuda expresiones visual fox

Publicado por Saul (728 intervenciones) el 21/05/2012 22:08:45
&& = Comentarios
* = Comentarios

*- Si tu rutina se llama Grabar Bitacora.PRG

Bitacora("NEW") &&Creo que estas llamandolo asi
Bitacora("UPDATE") &&Si lo llamas para actulizar


*- LPARAMETERS, es utilizado para recibir parámetros que vienen de donde lo llamaste
LPARAMETERS cMsg
LOCAL lcString, lnAlias &&Son variables Locales

**Si tienes una tabla seleccionada y cuando termine volver a ella
** SELECT() es como decir selecciono esta area de trabajo Visual Fox tiene todas las tablas
** abiertas y las puedes seleccionar con un simple Select() (si estas posecionado en la misma
** que quieres seleccionar.

lnAlias = SELECT()

*Cuado haces esto le dices esta abierta esta tabla pero quiero seleccionar esta "SOLICITUDES"

SELECT Solicitudes


*Esto es una Instruccion SQL SERVER y te crea OTRA tabla que se llama cursor llamado "hora"

*TOMA LA HORA DEL SERVIDOR
hora_server="SELECT getdate() AS HORA"
SQLEXEC(_SQLHANDLE,hora_server,"hora")

IF cMsg == "NEW" &&Lo que viene con tu parametro

**Esto es una cadena que tu armaste.

lcString = "Creado por " + _USERDESCRIP + " el " + hora + " en " + SYS(0)

ELSE

lcString = IIF( ISNULL(so_bitacora),"",so_bitacora+ CHR(13)) + ;

** Esto no se para que es puesto que nunca lo usas aqui..

cMsg + " " + _USERDESCRIP + " el " + hora + " en " + SYS(0)

ENDIF


*Como traes tu tabla seleccionada es como decir que ya tienes selecionada tu tabla en SQL SERVER.

* Tu tabla que traes seleccionada es SELECT Solicitudes

*- Aqui reemplazas el campo so_bitacora
REPLACE so_bitacora WITH lcString

*- Aqui actulizas tus tablas y lo confirmas el grabar (como Commit)
TABLEUPDATE(2,.T.)

*- Puedes hacer esto tambien
UPDATE Solicitudes SET so_bitacora = lcString
WHERE .T.

*Seleccionas tu Tabla inicial.
SELECT(lnAlias)

resulta que hay partes que no entiendo ni se como buscarlas ni nada de eso...


Te aconsejo que investigues mas sobre visual Fox cualquier cosa ya sabes, (ademas no se quien te dio este codigo, pues conbina SQL SERVER con Visual Fox hablando del grabado y eso no es correcto ok.

Saludos

Att.

Saul Hernandez
[email protected]
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

Ayuda expresiones visual fox

Publicado por jose denes (6 intervenciones) el 21/05/2012 22:22:18
Muchisimas gracias... ahora voy cmoprendiendo un poco mas... pero el tema es el siguiente, el programa tiene una pantalla principal que toma datos de un paciente, y guarda los análisis que se van validando en archivos pdf prontos para enviar por mail, y tiene un boton que hace un "envio masivo" para no tener que esperar que se envie cada ves que validas uno...

que sucede, yo termino de validar el ultimo examen de un paciente, por ejemplo Roberto Perez.
y cuando hago el "envio masivo" de mail para enviar todos los correos de todos los analisis validados le agrega a la vitacora que se enviaron todos los mails.

por cada mail que se envia se tiene que agregar a la vitacora del estudio que se envio, pero resulta que como utiliza la ultima seleccion de la tabla solicitudes por cada mail que se envia agrega la linea "se envia el mail a fulano el dia tal a tal hora" entonses en la bitacora del estudio de Roberto Perez puedo tener que se envio el mail a Sergio Algo tal dia ... y en la vitacora de Sergio Algo no hay nada, porque la funcion bitacora me lo agrego en el de Roberto Perez porque fue el ultimo que se uso, y ahi le dieron "envio masivo"

disculpen la extencion del texto pero es para explicar bien cual es mi problema ... yo lo que quiero es poder pasar dos parametros en la funcion, y que cuando haga ese "select" que me permite seleccionar la bitacora ya guardada para poderle agregar el texto, que me seleccione la bitacora where so_numero= a un parametro que le paso ... igual cuando haga el Update ...

muchas gracias, saludos.
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

Ayuda expresiones visual fox

Publicado por Saul (728 intervenciones) el 22/05/2012 03:59:07
Mejor mandame tus Tablas a mi correo, porque creo que no te entiendo lo que quieres..

1.) Tienes unos ingresos en un archivo ? seguro que es pdf,
no sera que es DBF..?

2.) Una ves tengas todos los datos digamos del dia, deberias hacer otro proceso (no en la misma pantalla)
Si no otra opcion en el menu que diga enviar

Por ejemplo TuArchivo.dbf

SELECT TuArchivo
Goto top
DO WHILE !EOF()
nNombre = tuArchivo.nombre
nMail = ALLTRIM(tuArchivo.mail)

=EnviodeMail(nMail)
=GrabaenBitacora("NEW") &&Puede ser tu codigo que ya tienes

SELECT TuArchivo
SKIP
ENDDO

Saludos,

Att.

Saul Hernandez
(Guatemala)
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

Ayuda expresiones visual fox

Publicado por jose denes (6 intervenciones) el 22/05/2012 14:45:20
jeje es muy complicado de entender, para que se les sea mas fasil solo les digo lo que tengo que hacer.

Imaginen que yo voy validando registros de usuarios que de eso todos savemos :) ... pero que pasa, imaginen que yo voy validando y validando pero en la db no le doy el OK. lo que el programa hace es guardarse las ID de este usuario. y despues tengo un boton que manda todo a la db...

eso me imagino lo entienden mejor. entonses que sucede, por cada usuario que se valida se crea un registro en la bitacora que si lo haces uno a uno funciona bien, pero que pasa, como yo mando 20 o 30 validaciones juntas a la db, hace el proceso de bitacora 20 o 30 veces y esta bitacora me toma la ultima seleccion me mete todo en la misma bitacora, es decir, todo en la ultima bitacora que abri. me explico ?

yo lo unico que necesito es modificar la funcion Bitacora para que yo le pase 2 parametros, el texto que ya esta, y un numero de ID y que cuando haga el select meta un where so_id=ID y cuando hace el update tambien ... solo que no se como hacerlo :(

muchas gracias.

PD: me referia a un archivo PDF, se manda por mail :)
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

Ayuda expresiones visual fox

Publicado por jose denes (6 intervenciones) el 23/05/2012 21:46:26
jeje es muy complicado de entender, para que se les sea mas fasil solo les digo lo que tengo que hacer.

Imaginen que yo voy validando registros de usuarios que de eso todos savemos :) ... pero que pasa, imaginen que yo voy validando y validando pero en la db no le doy el OK. lo que el programa hace es guardarse las ID de este usuario. y despues tengo un boton que manda todo a la db...

eso me imagino lo entienden mejor. entonses que sucede, por cada usuario que se valida se crea un registro en la bitacora que si lo haces uno a uno funciona bien, pero que pasa, como yo mando 20 o 30 validaciones juntas a la db, hace el proceso de bitacora 20 o 30 veces y esta bitacora me toma la ultima seleccion me mete todo en la misma bitacora, es decir, todo en la ultima bitacora que abri. me explico ?

yo lo unico que necesito es modificar la funcion Bitacora para que yo le pase 2 parametros, el texto que ya esta, y un numero de ID y que cuando haga el select meta un where so_id=ID y cuando hace el update tambien ... solo que no se como hacerlo :(

muchas gracias.

PD: me referia a un archivo PDF, se manda por mail :)
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