FoxPro/Visual FoxPro - create Cursor y Append From

   
Vista:

create Cursor y Append From

Publicado por Pablo (Argentina) (433 intervenciones) el 11/06/2010 23:40:59
Hola Amigos del Foro, les cuenta mi problema a ver si me pueden ayudar, resulta ser que utilizo un grid para hacer de renglones de una factura con los productos que ese cliente esta comprando, una vez finalidaza la factura tengo un boton donde la acepto y cargo la tabla de productos, el tema es asi

Tengo la tabla ventas y ventas1, ventas1 es la que uso para ir llenando el grid y una vez que acepto todos los datos los paso medianto un append from venta1 a la tabla de ventas, el problema que es una apliacion en red, entonces mientras que yo a ventas1 la tenga como una tabla en modo exclusive dentro del entorno de datos, todo me funciona bien, esta en modo exclusive porque despues que pase los datos a la tabla original le hago un ZAP a ventas1 ¿me explico?, pero que pasaba cuando querian cargar de 2 maquinas al mismo tiempo el from daba error en la tabla ventas1.

Entonces que hice opte por crear en el evento LOAD un Cursor, que por si ya es exclusivo y lo crea por maquina, entonces no da error y todo bien, hasta que tengo que pasar los datos a la tabla original o sea a ventas.

el APPEND FROM no me funciona, ¿porque?, ¿me explico?, si la tabla ventas1 esta en el entorno de datos anda todo bien, ahora si yo creo la tabla ventas1 con un CREATE CURSOR VENTAS1 y despes le hago un APPEND FROM, no me pasa los datos, no los graba, ¿como lo soluciono?.

Muchas Gracias

Pablo - Argentina
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:create Cursor y Append From

Publicado por kong (681 intervenciones) el 12/06/2010 00:09:00
append form dbf("ventas1")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauricio

Create Cursor y Append From

Publicado por Mauricio (1367 intervenciones) el 12/06/2010 00:11:19
Pablo, tengo la impresion que si debe grabarte los datos de ventas1 a ventas, asegurate que ventas1 este al inicio, posiblemente esta al final de los datos por lo tanto no te grabara ningun data, intenta verificar esto, asi de sencillo, antes del
APPEND digita set, buscas ventas1 y le das un BROW alli te daras cuenta si tiene datos y si esta al final de los datos, comenta luego como te va.....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:create Cursor y Append From

Publicado por Eduardo Daniel (123 intervenciones) el 12/06/2010 00:13:43
Pablo
Cuando hagas el append con el cursor usa la siguiente sintaxis

APPEND FROM DBF("ventas1")

Va a funcionar
Saludos
Eduardo
Rosario
Argentina
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:create Cursor y Append From

Publicado por Pablo (Argentina) (433 intervenciones) el 12/06/2010 00:40:47
Hola Amigos, bueno gracias por responder tan rapido, les muesto el codigo como lo tengo en cada evento.

Stock es la Tabla original y Stock1 es el cursor temporal que creo para despues pasar los datos con append From.

En el Evento Load:

CREATE CURSOR stock1 ;
(codigo C(7),terminal c(30),esn c(15),fecha_ent d(8),lugar c(10), remitoent c(20), despacho c(20), preciocompra n(8,2))

En el Evento INIT:

thisform.grdstock1.RecordSource = ""
thisform.grdstock1.RecordSource = "stock1"

y esto en el Evento Click del Boton para acptar la entrada de datos de una tabla stock1 a stock

nRec=RECNO()
resp=MESSAGEBOX("¿Verfico qye el Codigo de Terminal ?",4+32+256,"ATENCION")
IF resp = 6
SELECT stock
GO bottom
APPEND FROM datos\stock1.dbf
SELECT stock1
ZAP
Thisform.Refresh

Asi es como lo hago pero no me funciona, no me graba los datos que tengo en el Cursor stock1 en la Tabla Stock, ¿en que esta mal?

Muchas Gracias

Pablo - Argentina
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauricio

Create Cursor y Append From

Publicado por Mauricio (1367 intervenciones) el 12/06/2010 01:08:33
Pablo, tengo una duda: Cuando creas el cursor solo le das CREATE CURSOR....
o sea que en este momento donde estas parado(con esto quiero decir donde estas trabajando, en que carpeta?), porque cuando le das el comando:
APPEND FROM datos\stock1.dbf
Logicamente deberia decir APPEND FROM stock1 nada mas.
Te he corregido un par de sentencias para que se vea mejor, espero que te guste
*
y esto en el Evento Click del Boton para acptar la entrada de datos de una tabla stock1 a stock

nRec=RECNO()
IF MESSAGEBOX("¿Verifico Codigo de Terminal ?",4+32+256,"ATENCION") = 6
SELECT stock
GO bottom
APPEND FROM stock1
SELECT stock1 && Para que este ZAP si es un cursor que cuando lo crees de nuevo se llenara con datos nuevos?
ZAP
Thisform.Refresh
ENDIF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:create Cursor y Append From

Publicado por es_binario (757 intervenciones) el 12/06/2010 02:05:40
El problema es la forma de compartir tu aplicacion pero bueno, intenta con un insert en vez de con un appen from

algo asi

INSERT INTO stock (codigo ,terminal ,esn ,fecha_ent ,lugar , remitoent , despacho , preciocompra ) ;
SELECT codigo ,terminal ,esn ,fecha_ent ,lugar , remitoent , despacho , preciocompra FROM stock1

comenta si te funcion yo lo probe y funciona bien.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:create Cursor y Append From

Publicado por Eduardo Daniel (123 intervenciones) el 12/06/2010 02:37:58
Pablo
Cambia
APPEND FROM datos\stock1.dbf
por
APPEND FROM dbf("datos\stock1")

Eduardo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:create Cursor y Append From

Publicado por ACM (162 intervenciones) el 12/06/2010 11:05:34
Hola Pablo

APPEND FROM datos\stock1.dbf

No te va a funcionar ya que el cursor es en memoria lo que estas asiendo alli es buscar en el disco por ende no te lo va a encontrar y no es necesario que le indiques el camino ya que esta en memoria.

deberia ser asi

select stock
appen from dbf("stock1")

Una sugerencia debes analizar la cantidad de item de la factura de compras porque.

Generalmente los servidores tiene ups entonces al estar ingresando en un pc sin ups y se te corta la luz se perdera todo lo ingresado ya que el cursor trabaja en memoria o si la persona esta ingresando y tiene que irse a colacion no padra salirse de la factura hasta grabar ahora lo otro si graba la factura incompleta depues tendra que llamarla para seguir ingresando y saber en cual item quedo alli deberas de validar si vas a usar el appen from para no duplicar los items.

Te recomiendo que grabes por item de esa forma si pasa algo anormal no perderas informacion

Nota:
Si vas hacer un appen from los campos del cursor deben tener los mismo nombre que la tabla entre parentecis.

En estos tiempos todo esta mas estable, pero siempre hay que prevenir caulquier posible problema para no tener inconsistencia en la informacion.

Saludos

Acm.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:create Cursor y Append From

Publicado por MARCO (2 intervenciones) el 01/07/2010 17:19:10
El problema esta en que para hacer un APPEND FROM de un cursor se debe cambiar la instruccion un poco ya que no es una tabla utilicelo asi

APPEDN FROM DBF('NombreCursor')
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:create Cursor y Append From

Publicado por Pablo (Argentina) (433 intervenciones) el 12/06/2010 15:12:40
Hola Amigos, Bueno a todos muchas gracias por su ayuda, y si es cierto el cursor se crea en memoria entonces lo que yo estaba haciendo mal era decirle que lo busque en la carpeta datos, cuando no es necesario y directamente sobre el cursor append from stock1, pasa que no me daba cuenta de semejante boludez (termino argentino) porque anteriormente a usar un cursor utilizaba una tabla en modo exclusive para llenar los renglones de la factura y despues pasarlos, por eso tambien el uso del ZAP que un cursor no es necesario, ahora el amigo ACM tiene razon, como el cursor se carga en memoria cualquier golpe de corriente por mas ups que tenga o lo que pase que me resetee la maquina me borra los datos.

Entonces les pregunto de nuevo, como puedo hacer para vaciar una tabla completa una vez pasado los datos con append from que no sea utilizando el comando ZAP asi no la tengo que abrir en modo exlcusivo y el form lo puedo usar de varias pc´s para poder cargar un remito en este caso. ¿me explico?

Muchas Gracias nuevamente

Pablo - Argentina
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:create Cursor y Append From

Publicado por Eduardo Daniel (123 intervenciones) el 12/06/2010 15:52:39
Pablo

En este caso, lo que hago yo, es depues de usar el cursor, en este caso despues del appen from, selecciono el cursor y hago un DELE ALL,

Eduardo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:create Cursor y Append From

Publicado por Pablo (Argentina) (433 intervenciones) el 12/06/2010 17:05:06
Hola Eduardo, yo tambien lo hago con un ZAP o un delete all como quieras, el tema pasa porque estas creando un Cursor y pasa lo que dije anteriormente que haces si por esas casualidades de esta vida se te corta la luz o un golpe de corriente te cierra la pc o lo que sea, perdes los datos porque el cursor esta en memoria, entonces yo lo que hacia era un tabla en modo exlusive y despues la borraba con ZAP y si pasaba lo de la luz, los datos seguian ahi, en una mera casualidad que pase eso pero a fin de evitar posteriores inconvenientes en la aplicacicion lo hacia asi, pero sino hay otra forma de vaciar una tabla que no ESTE en modo exclusive tendre que utilizar el Cursor que es bueno y hace todo lo que quiero.

Muchas Gracias

Pablo - Argentina
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:create Cursor y Append From

Publicado por ACM (162 intervenciones) el 12/06/2010 19:26:35
Hola Pablo

Haber para trabajar de forma multiusario deben haber varias formas ya que un porblema tiene varias soluciones, pero para mi lo mejor es trabajar con cursores, si trabajas con tablas temporales tendrias que generan una tablas temporal por cada pc, es decir si yo entro y ocupo la tabla temp1 y entro otro usuario deberia bloquear la tabla temp1 y asignarle la tabla temp2 a este usuario y asi por cada usuario, no se abriendo una tabla temp como base y asiendo un copy struc, segun la validacion del los temp(n) ocupado es mas programacion. con el cursor te evitas un poco de programacion.

Por eso te decia que lo ideal es que sigas trabajando como estabas con el cursor pero en ves de usar el appen from, graba por item . y grabas directamente a la tabla stock asi que si te corta la luz la informacion ya esta grabada

Lo otro al hacerle un dele o dele all al cursor esto no es lo mismo que un zap ya que si borra todo los registro con un delete o all y haces un reccount tambien te cuenta los registro borrados.

Saludos

Acm.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar