Page 1 of 1
Ayuda para generar un archivo de texto, inv fisico
Posted: Fri Apr 18, 2008 4:31 pm
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
Posted: Fri Apr 18, 2008 9:18 pm
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
Posted: Fri Apr 18, 2008 11:04 pm
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
Posted: Fri Apr 18, 2008 11:29 pm
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
Posted: Sat Apr 19, 2008 4:47 pm
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() )
Posted: Sun Apr 20, 2008 6:23 pm
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