Como obtener el resultado de una formula (resuelto)

User avatar
jose_murugosa
Posts: 1185
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Como obtener el resultado de una formula (resuelto)

Post by jose_murugosa »

Queridos miembros del foro:

La ruta de un archivo se encuentra guardada como una fórmula en un campo de texto que llamaremos oRs:RutaArchivo
oRs:RutaArchivo contiene esta fórmula tal cual: ".\XLSX\inf1_" + Dtos( dFecha ) + "-" + Substr( whoraini, 1, 2 ) + Substr(whoraini, 4, 2 ) + "-" + Substr( whorafin, 1, 2 ) + Substr(whorafin, 4, 2 ) + ".xlsx"

necesito levantar esa fórmula y convertirla en el nombre del archivo algo así como ".\XLSX\inf1_20231002-0900-0959.xlsx"

En el prg las variables dfecha, whoraini y whorafin están visibles.
Traté de obtener el resultado con macrosustitución o con un block de código, pero no lo logré, seguramente por mi torpeza.
Agradezco la orientación que me puedan brindar para resolverlo.
DESDE YA MUUUUCHAS GRACIAS. :D
Last edited by jose_murugosa on Tue Oct 03, 2023 4:47 pm, edited 1 time in total.
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
paquitohm
Posts: 287
Joined: Fri Jan 14, 2022 8:37 am
Been thanked: 1 time

Re: Como obtener el resultado de una formula

Post by paquitohm »

Code: Select all | Expand

Expande(oRs:RutaArchivo, dFecha, whoraini, whorafin)
RETURN 

FUNCTION Expande
Local cDato
PARAMETERS c, dFecha, whoraini, whorafin

cDato:= &c
RETURN cDato
User avatar
jose_murugosa
Posts: 1185
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Re: Como obtener el resultado de una formula

Post by jose_murugosa »

Muchas gracias por contestar.
Este modo ya lo había probado, de todos modos volví a probar, pero con el mismo resultado.

En la función intercalé que mostrara whoraini así:

57 ?whoraini
58 cDato = &c

en la línea 57 me devuelve el valor correcto de whoraini
En la línea 58 me da el siguiente error:

Error BASE/1003 No existe la variable: WHORAINI
no puede resolver la variable dentro del macro. :(
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
paquitohm
Posts: 287
Joined: Fri Jan 14, 2022 8:37 am
Been thanked: 1 time

Re: Como obtener el resultado de una formula

Post by paquitohm »

¿ Es whoraini una variable o el nombre de un campo ?
User avatar
JoseAlvarez
Posts: 810
Joined: Sun Nov 09, 2014 5:01 pm

Re: Como obtener el resultado de una formula

Post by JoseAlvarez »

jose,

si colocas el codigo, es mucho mas facil ayudarte
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
jose_murugosa
Posts: 1185
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Re: Como obtener el resultado de una formula

Post by jose_murugosa »

Tienen razón, gracias..
pondré un ejemplo simplificado en unos segundos.
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
User avatar
jose_murugosa
Posts: 1185
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Re: Como obtener el resultado de una formula

Post by jose_murugosa »

Code: Select all | Expand

#include 'fivewin.ch'

FUNCTION test
     LOCAL RutaInforme, whoraini, whorafin, dfecha, warchiv
     dfecha      := Date()
     whoraini    :='13:00:00'
     whorafin    :='13:59:59'
     RutaInforme := '"inf1_" + Dtos( dFecha ) + "-" + Substr( whoraini, 1, 2 ) + Substr(whoraini, 4, 2 ) + "-" + Substr( whorafin, 1, 2 ) + Substr(whorafin, 4, 2 ) + ".xlsx"'
     
     warchiv := &Rutainforme
     
RETURN nil
 
Devuelve el error:
Application
===========
Path and name: D:\XBASE-PROYECTOS\EJEMPLO\SOURCE\EJEMPLO.exe (32 bits)
Size: 4,871,168 bytes
Compiler version: Harbour 3.2.0dev (r2104281802)
FiveWin version: FWH 22.10
C compiler version: Borland/Embarcadero C++ 7.0 (32-bit)
Windows 10 64 Bits, version: 6.2, Build 9200

Time from start: 0 hours 0 mins 0 secs
Error occurred at: 10/03/23, 10:08:40
Error description: Error BASE/1003 Variable does not exist: DFECHA

Stack Calls
===========
Called from: d:\xbase-proyectos\ejemplo\source\EJEMPLO.prg => TEST( 10 )

System
======
CPU type: Intel(R) Core(TM) i5-6400T CPU @ 2.20GHz 2208 Mhz
Hardware memory: 12063 megs

Free System resources: 90 %
GDI resources: 90 %
User resources: 90 %

Windows total applications running: 3
1 ,
2 , D:\XBASE-PROYECTOS\EJEMPLO\SOURCE\EJEMPLO.exe
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
paquitohm
Posts: 287
Joined: Fri Jan 14, 2022 8:37 am
Been thanked: 1 time

Re: Como obtener el resultado de una formula

Post by paquitohm »

Jose,

Me temo que no has probado mi ejemplo
El tuyo tambien funcionara cambiando LOCAL por PRIVATE

Todo se basa en que la tabla de simbolos tenga los simbolos necesarios para hacer la macro sustitucion
User avatar
JoseAlvarez
Posts: 810
Joined: Sun Nov 09, 2014 5:01 pm

Re: Como obtener el resultado de una formula

Post by JoseAlvarez »

Jose,

Solo debes quitarle las comillas simples al inicio y al final de la variable cRutaInforme.

no creo que sea necesario el uso de la macro

prueba y me comentas

Code: Select all | Expand

RutaInforme := "inf1_" + Dtos( dFecha ) + "-" + Substr( whoraini, 1, 2 ) + Substr(whoraini, 4, 2 ) + "-" + Substr( whorafin, 1, 2 ) + Substr(whorafin, 4, 2 ) + ".xlsx"
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
paquitohm
Posts: 287
Joined: Fri Jan 14, 2022 8:37 am
Been thanked: 1 time

Re: Como obtener el resultado de una formula

Post by paquitohm »

no creo que sea necesario el uso de la macro

Atendiendo al post inicial, si es necesario
User avatar
jose_murugosa
Posts: 1185
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Re: Como obtener el resultado de una formula

Post by jose_murugosa »

Code: Select all | Expand

#include 'fivewin.ch'

FUNCTION test()
     LOCAL whoraini, whorafin, dfecha, warchiv, oRs
     
     FWCONNECT oCn HOST 'localhost' USER 'root' PASSWORD 'Sys' PORT 3306 DB 'prueba'
     oRs:=oCn:Rowset( 'Informes' )
     
     
     dfecha      := Date()
     whoraini    :='13:00:00'
     whorafin    :='13:59:59'
     RutaInforme := Alltrim( oRs:RutaInforme )
    warchiv := &RutaInforme    //linea 14
     
RETURN nil
Este código se ajusta mas a lo que hago.
el contenido de oRs:RutaInforme es: "inf1_" + Dtos( dFecha ) + "-" + Substr( whoraini, 1, 2 ) + Substr(whoraini, 4, 2 ) + "-" + Substr( whorafin, 1, 2 ) + Substr(whorafin, 4, 2 ) + ".xlsx"

y devuelve este error:
Application
===========
Path and name: D:\XBASE-PROYECTOS\EJEMPLO\ejemplo.exe (32 bits)
Size: 5,065,728 bytes
Compiler version: Harbour 3.2.0dev (r2104281802)
FiveWin version: FWH 22.10
C compiler version: Borland/Embarcadero C++ 7.0 (32-bit)
Windows 10 64 Bits, version: 6.2, Build 9200

Time from start: 0 hours 0 mins 0 secs
Error occurred at: 10/03/23, 12:15:17
Error description: Error BASE/1003 Variable does not exist: DFECHA

Stack Calls
===========
Called from: d:\xbase-proyectos\ejemplo\source\EJEMPLO.prg => TEST( 14 )

System
======
CPU type: Intel(R) Core(TM) i5-6400T CPU @ 2.20GHz 2208 Mhz
Hardware memory: 12063 megs

Free System resources: 90 %
GDI resources: 90 %
User resources: 90 %

Windows total applications running: 3
1 ,
2 , D:\XBASE-PROYECTOS\EJEMPLO\ejemplo.exe
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
User avatar
JoseAlvarez
Posts: 810
Joined: Sun Nov 09, 2014 5:01 pm

Re: Como obtener el resultado de una formula

Post by JoseAlvarez »

Jose,

Si quieres lo vemos por ANYDESK

Enviame tu codigo anydesk a: jalvarez AT neurosistema DOT online

estoy pendiente para cuando me llegue
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
jose_murugosa
Posts: 1185
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Re: Como obtener el resultado de una formula

Post by jose_murugosa »

Muchas gracias José.
Ahora me es imposible, pero más tarde cuando me reuna con mi máquina, te lo mando.
Gracias por tu buena voluntad para ayudar.
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
User avatar
Armando
Posts: 3271
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Been thanked: 2 times
Contact:

Re: Como obtener el resultado de una formula

Post by Armando »

José Murugosa:

Quita los apóstrofos (') inicial y final y quita el signo del andpersand (&)

Code: Select all | Expand

     RutaInforme := "inf1_" + Dtos( dfecha ) + "-" + Substr( whoraini, 1, 2 ) + Substr(whoraini, 4, 2 ) + "-" + Substr( whorafin, 1, 2 ) + Substr(whorafin, 4, 2 ) + ".xlsx"
     warchiv := RutaInforme
 
Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
jose_murugosa
Posts: 1185
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Re: Como obtener el resultado de una formula

Post by jose_murugosa »

Bueno, finalmente logré combinar todas las ideas aportadas y el uso de codeblock para resolver el problema.

En la tabla informes contiene el campo rutainforme = "inf1_" + Dtos( dFecha ) + "-" + Substr( whoraini, 1, 2 ) + Substr(whoraini, 4, 2 ) + "-" + Substr( whorafin, 1, 2 ) + Substr(whorafin, 4, 2 ) + ".xlsx"

Quedó así:

Code: Select all | Expand

#include 'fivewin.ch'

FUNCTION test()
     LOCAL whoraini, whorafin, dfecha, warchiv, oRs
     
     FWCONNECT oCn HOST 'localhost' USER 'root' PASSWORD 'Sys' PORT 3306 DB 'prueba'
     oRs:=oCn:Rowset( 'Informes' ) 
     
     dfecha      := Date()
     whoraini    :='13:00:00'
     whorafin    :='13:59:59'
     RutaInforme := Alltrim( oRs:RutaInforme )
     blk := '{|dfecha, whoraini, whorafin| ' + RutaInforme + ' }'
     warchiv := Eval( &blk, dfecha, whoraini, whorafin )
     ?warchiv
     
RETURN nil
 
y el resultado es:
'inf1_20231003-1300-1359.xls'
el nombre real del archivo.

Gracias a todos por sus ideas.
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
Post Reply