Como obtener el resultado de una formula (resuelto)

Como obtener el resultado de una formula (resuelto)

Postby jose_murugosa » Mon Oct 02, 2023 6:46 pm

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!!"
User avatar
jose_murugosa
 
Posts: 1180
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Re: Como obtener el resultado de una formula

Postby paquitohm » Mon Oct 02, 2023 8:05 pm

Code: Select all  Expand view  RUN

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

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

cDato:= &c
RETURN cDato
paquitohm
 
Posts: 266
Joined: Fri Jan 14, 2022 8:37 am

Re: Como obtener el resultado de una formula

Postby jose_murugosa » Tue Oct 03, 2023 10:59 am

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!!"
User avatar
jose_murugosa
 
Posts: 1180
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Re: Como obtener el resultado de una formula

Postby paquitohm » Tue Oct 03, 2023 12:04 pm

¿ Es whoraini una variable o el nombre de un campo ?
paquitohm
 
Posts: 266
Joined: Fri Jan 14, 2022 8:37 am

Re: Como obtener el resultado de una formula

Postby JoseAlvarez » Tue Oct 03, 2023 12:35 pm

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
JoseAlvarez
 
Posts: 797
Joined: Sun Nov 09, 2014 5:01 pm

Re: Como obtener el resultado de una formula

Postby jose_murugosa » Tue Oct 03, 2023 12:41 pm

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: 1180
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Re: Como obtener el resultado de una formula

Postby jose_murugosa » Tue Oct 03, 2023 1:04 pm

Code: Select all  Expand view  RUN

#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!!"
User avatar
jose_murugosa
 
Posts: 1180
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Re: Como obtener el resultado de una formula

Postby paquitohm » Tue Oct 03, 2023 1:53 pm

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
paquitohm
 
Posts: 266
Joined: Fri Jan 14, 2022 8:37 am

Re: Como obtener el resultado de una formula

Postby JoseAlvarez » Tue Oct 03, 2023 1:58 pm

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 view  RUN
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.
User avatar
JoseAlvarez
 
Posts: 797
Joined: Sun Nov 09, 2014 5:01 pm

Re: Como obtener el resultado de una formula

Postby paquitohm » Tue Oct 03, 2023 2:30 pm

no creo que sea necesario el uso de la macro



Atendiendo al post inicial, si es necesario
paquitohm
 
Posts: 266
Joined: Fri Jan 14, 2022 8:37 am

Re: Como obtener el resultado de una formula

Postby jose_murugosa » Tue Oct 03, 2023 3:14 pm

Code: Select all  Expand view  RUN
#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
jose_murugosa
 
Posts: 1180
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Re: Como obtener el resultado de una formula

Postby JoseAlvarez » Tue Oct 03, 2023 3:33 pm

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
JoseAlvarez
 
Posts: 797
Joined: Sun Nov 09, 2014 5:01 pm

Re: Como obtener el resultado de una formula

Postby jose_murugosa » Tue Oct 03, 2023 3:40 pm

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
jose_murugosa
 
Posts: 1180
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Re: Como obtener el resultado de una formula

Postby Armando » Tue Oct 03, 2023 4:23 pm

José Murugosa:

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

Code: Select all  Expand view  RUN

     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
Armando
 
Posts: 3229
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Como obtener el resultado de una formula

Postby jose_murugosa » Tue Oct 03, 2023 4:45 pm

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 view  RUN

#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!!"
User avatar
jose_murugosa
 
Posts: 1180
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 67 guests