Ayuda para generar un archivo de texto, inv fisico

Ayuda para generar un archivo de texto, inv fisico

Postby Lupita » Fri Apr 18, 2008 4:31 pm

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
Lupita
 
Posts: 13
Joined: Wed Apr 09, 2008 4:46 pm

Postby Antonio Linares » Fri Apr 18, 2008 9:18 pm

Lupita,

Hazlo así:
Code: Select all  Expand view  RUN
#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
User avatar
Antonio Linares
Site Admin
 
Posts: 42100
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Lupita » Fri Apr 18, 2008 11:04 pm

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
Lupita
 
Posts: 13
Joined: Wed Apr 09, 2008 4:46 pm

Postby Antonio Linares » Fri Apr 18, 2008 11:29 pm

Lupita,

Hazlo de esta forma:
Code: Select all  Expand view  RUN
#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
User avatar
Antonio Linares
Site Admin
 
Posts: 42100
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Lupita » Sat Apr 19, 2008 4:47 pm

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() )
Lupita
 
Posts: 13
Joined: Wed Apr 09, 2008 4:46 pm

Postby Antonio Linares » Sun Apr 20, 2008 6:23 pm

Lupita,

Aqui lo tienes:
Code: Select all  Expand view  RUN
#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
User avatar
Antonio Linares
Site Admin
 
Posts: 42100
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para Pocket PC

Who is online

Users browsing this forum: No registered users and 39 guests