Ayuda para generar un archivo de texto, inv fisico

Post Reply
Lupita
Posts: 13
Joined: Wed Apr 09, 2008 4:46 pm

Ayuda para generar un archivo de texto, inv fisico

Post by Lupita »

Hola

Es mi primer programa, estoy inciandome en la programacion de FWPPC, he visto varios de los ejemplos que ponen pero la verdad no entiendo mucho, he hecho algunas pruebas y funcionan perfectamente, pero al integrarlas a mi programa no funciona, lo que yo necesito es un sencillo programa para capturar 2 campos, codigo y cantidad en un ciclo N, cuando el usuario decida salirse y si es necesairo poder continuar con esa captura, esto para tomar informacion de un inventario fisico y con esta informacion generar un archivo de texto de una linea por cada codigo y cantidad que se capture, el codigo se captura atraves del colector que esta integrado en la pocket pc.

Ya me pide los datos, solo que no quita el dato anterior y quise meterlo a un ciclo pero ahi ya no funciono y me falta guarlo en el archivo de texto.

Me podrian orientar por favor?



#include "FWCE.ch"

//----------------------------------------------------------------------------//

function Main()

local oWnd


LOCAL cVar1 := SPACE( 20 )
LOCAL cVar2 := SPACE( 20 )

DEFINE WINDOW oWnd TITLE "Captura Inventarios"

Do While lOk
MiFuncionDeMedir()

@ 1, 1 SAY "Codigo:";
SIZE 70, 20

@ 1, 10 GET cVar1;
SIZE 140, 20

@ 5, 1 SAY "Cantidad:";
SIZE 70, 20

@ 5.7, 10 GET cVar2;
SIZE 140, 20

SysRefresh()
Enddo



ACTIVATE WINDOW oWnd ;
ON CLICK MsgInfo( "Click!" ) ;
VALID MsgYesNo( "Want to End ?" )

return nil
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Lupita,

Hazlo así:

Code: Select all

#include "FWCE.ch" 

//----------------------------------------------------------------------------// 

function Main() 

   local oWnd, oGet1, oGet2 
   LOCAL cVar1 := SPACE( 20 ) 
   LOCAL cVar2 := SPACE( 20 ) 

   DEFINE WINDOW oWnd TITLE "Captura Inventarios" 

   // MiFuncionDeMedir() 

   @ 1, 1 SAY "Codigo:"; 
      SIZE 70, 20 

   @ 1, 10 GET oGet1 VAR cVar1; 
      SIZE 140, 20 

   @ 5, 1 SAY "Cantidad:"; 
      SIZE 70, 20 

   @ 5.7, 10 GET oGet2 VAR cVar2; 
      SIZE 140, 20 

   @ 7, 2 BUTTON "Nuevo" SIZE 80, 20 ;
      ACTION ( cVar1 := Space( 20 ), cVar2 := Space( 20 ),;
               oGet1:Refresh(), oGet2:Refresh(), /* MiFuncionDeMedir(), */ oGet1:SetFocus() )  

   @ 9, 2 BUTTON "Salir" SIZE 80, 20 ACTION oWnd:End()
 
   ACTIVATE WINDOW oWnd ; 
      VALID MsgYesNo( "¿ Quiere terminar ?" ) 

return nil
Al pulsar el botón "Nuevo" volvería a hacer una nueva medición
regards, saludos

Antonio Linares
www.fivetechsoft.com
Lupita
Posts: 13
Joined: Wed Apr 09, 2008 4:46 pm

Post by Lupita »

Antonio muchas gracias, ya puedo capturar codigo y cantidad.

Le agregue la linea FWrite(curdir()+"\archivo.txt",cVar1,cVar2) para que me guardara cada registro en un archivo txt, si logre que lo generara, pero lo genera en blanco no agrega la informacion de la variable, probe on cVar1 y con oGet1, y ninguna lo guarda.

Existe algun manual donde pueda ver porque hay que definir cVar1 y oGet1, es decir que explique las instrucciones que incluyen en los ejemplos, baje el manual que viene en la pagina, pero muchas de las cosas que vienen en los ejemplos del foro, no las explica ese manual.

Aqui envio como quedo el programa.



#include "FWCE.ch"

//----------------------------------------------------------------------------//

function Main()

local oWnd, oGet1, oGet2
LOCAL cVar1 := SPACE( 20 )
LOCAL cVar2 := SPACE( 20 )

DEFINE WINDOW oWnd TITLE "Captura Inventarios"

// MiFuncionDeMedir()

@ 1, 1 SAY "Codigo:";
SIZE 70, 20

@ 1, 10 GET oGet1 VAR cVar1;
SIZE 140, 20

@ 5, 1 SAY "Cantidad:";
SIZE 70, 20

@ 5.7, 10 GET oGet2 VAR cVar2;
SIZE 140, 20

@ 7, 2 BUTTON "Nuevo" SIZE 80, 20 ;
ACTION ( cVar1 := Space( 20 ), cVar2 := Space( 20 ),;
oGet1:Refresh(), oGet2:Refresh(), /* MiFuncionDeMedir(), */ oGet1:SetFocus() )


FWrite(curdir()+"\archivo.txt",cVar1,cVar2)

@ 9, 2 BUTTON "Salir" SIZE 80, 20 ACTION oWnd:End()

ACTIVATE WINDOW oWnd ;
VALID MsgYesNo( "¿ Quiere terminar ?" )

return nil
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Lupita,

Hazlo de esta forma:

Code: Select all

#include "FWCE.ch" 

//----------------------------------------------------------------------------// 

function Main() 

   local oWnd, oGet1, oGet2 
   LOCAL cVar1 := SPACE( 20 ) 
   LOCAL cVar2 := SPACE( 20 )
   local hFile := FCreate( CurDir() + "\datos.txt" ) 

   DEFINE WINDOW oWnd TITLE "Captura Inventarios" 

   // MiFuncionDeMedir() 

   @ 1, 1 SAY "Codigo:"; 
      SIZE 70, 20 

   @ 1, 10 GET oGet1 VAR cVar1; 
      SIZE 140, 20 

   @ 5, 1 SAY "Cantidad:"; 
      SIZE 70, 20 

   @ 5.7, 10 GET oGet2 VAR cVar2; 
      SIZE 140, 20 

   @ 7, 2 BUTTON "Nuevo" SIZE 80, 20 ;
      ACTION ( FWrite( hFile, cVar1 + CRLF + cVar2 + CRLF ),;
               cVar1 := Space( 20 ), cVar2 := Space( 20 ),;
               oGet1:Refresh(), oGet2:Refresh(), /* MiFuncionDeMedir(), */;
               oGet1:SetFocus() )  

   @ 9, 2 BUTTON "Salir" SIZE 80, 20 ACTION oWnd:End()
 
   ACTIVATE WINDOW oWnd ; 
      VALID MsgYesNo( "¿ Quiere terminar ?" ) 

   FClose( hFile )

return nil
Tienes que darte tiempo para familiarizarte con el uso de los eventos. La ejecución de la aplicación en Windows no es "lineal" sino que las acciones ocurren en respuestas a los "eventos" (pulsar un botón con el ratón, etc.)

Por otra parte si vienes de la programación en FoxPro, necesitarás algo de tiempo para familiarizarte con la programación con el lenguaje Clipper
regards, saludos

Antonio Linares
www.fivetechsoft.com
Lupita
Posts: 13
Joined: Wed Apr 09, 2008 4:46 pm

Post by Lupita »

Muchas gracias Antonio, ya voy entendiendo lo que mencionas de programar por eventos, hice una pequeña modificacion a la instruccion ya que necesito el archivo en una sola linea separando los datos por una "," hasta ahi voy bien, ahora necesito definir que la cVar2 sea numerica con 2 decimales y que en el ascii elimine los espacios en blanco de la variable cVar1.
Que instrucciones se usan para eso?.



ACTION ( FWrite( hFile, cVar1 + "," + cVar2 + CRLF ),;
cVar1 := Space( 20 ), cVar2 := Space(20),;
oGet1:Refresh(), oGet2:Refresh(), /* MiFuncionDeMedir(), */;
oGet1:SetFocus() )
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Lupita,

Aqui lo tienes:

Code: Select all

#include "FWCE.ch" 

//----------------------------------------------------------------------------// 

function Main() 

   local oWnd, oGet1, oGet2 
   LOCAL cVar1 := SPACE( 20 ) 
   LOCAL nVar2 := 0.00
   local hFile := FCreate( CurDir() + "\datos.txt" ) 

   DEFINE WINDOW oWnd TITLE "Captura Inventarios" 

   // MiFuncionDeMedir() 

   @ 1, 1 SAY "Codigo:"; 
      SIZE 70, 20 

   @ 1, 10 GET oGet1 VAR cVar1; 
      SIZE 140, 20 

   @ 5, 1 SAY "Cantidad:"; 
      SIZE 70, 20 

   @ 5.7, 10 GET oGet2 VAR nVar2; 
      SIZE 140, 20 PICTURE "999.99"

   @ 7, 2 BUTTON "Nuevo" SIZE 80, 20 ;
      ACTION ( FWrite( hFile, AllTrim( cVar1 ) + CRLF + Str( nVar2, 6, 2 ) + CRLF ),;
               cVar1 := Space( 20 ), nVar2 := 0.00,;
               oGet1:Refresh(), oGet2:Refresh(), /* MiFuncionDeMedir(), */;
               oGet1:SetFocus() )  

   @ 9, 2 BUTTON "Salir" SIZE 80, 20 ACTION oWnd:End()
 
   ACTIVATE WINDOW oWnd ; 
      VALID MsgYesNo( "¿ Quiere terminar ?" ) 

   FClose( hFile )

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply