FoxPro/Visual FoxPro - Usar Tabla temporal o cursor?

 
Vista:

Usar Tabla temporal o cursor?

Publicado por Vicente (10 intervenciones) el 30/11/2006 17:12:04
Buenos días, estoy pasando una aplicación que tengo en foxpro msdos a VFP8, mi duda es la siguiente. La aplicación es de captura de pagos de clientes, se solicita el numero de cliente y luego debe de presentarse su edo. de cta. para aplicarle el pago, el cual tene que irse al documento mas antiguo. En DOS para no trabajar con la base de datos maestra lo que hago es que pongo los datos a procesar en una tabla temporal (dbf con su idx), esta tabla temporal la formo asi mArchivo="TE"+mEMP+mCAJ, donde mEMP="abc" o "dbf" y mCAJ=Caja1, caja2, etc., esto es porque hay 9 cajeras. Quisiera saber si hay alguna otra solución en donde no tenga que tener tantas dbf 's porque el problema en dos es que muy seguido se corrompen estas tablas porque se ´salen{ mal los usuarios u otras causas)...He pensado trabajar con Create Table &mArchivo, esto es crear tablas temporales para cada cajero, y luego pasar esta tabla a un cursor (No se si sea necesario) para ponerlo en un grid, luego aplicar el pago y que me 'afecte' mi tabla temporal y que actualize el grid con los nuevos datos y que si esta correcto, vaciar los datos nuevos a la tabla maestra de documentos...
Cualquier sugerencia les estare muy agradecido...

Saludos
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:Usar Tabla temporal o cursor?

Publicado por jorge (423 intervenciones) el 30/11/2006 18:01:44
Hola puedes hacerlo de ambas formas es decir, creando temporales, o usando cursores, ambos trabajan de igual forma, la diferencia es que el cursor seria en Memoria, y el Temporal puedes tenerlo fisicamente.
En lo personal trabajaria con cursores, esto daria mas efectividad con el grid y el resto lo haria en codigo, refrescar, grabar, insertar, etc... el unico inconveniente seria que si se salen de el sistema de forma indebida lo que tenian en el cursor se pierde. pero si se hace un buen diseño de sistema entonces cuales serian las razones por las que "tronaria" el mismo ?....que de igual forma esas razones afectan por igual a temporales, y tablas nativas.. .. como ves ?...
Saludos
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:Usar Tabla temporal o cursor?

Publicado por Vicente (61 intervenciones) el 30/11/2006 18:26:43
De acuerdo Sergio, entonces me conviene mejor por cursor, que tambien se pueden manejar como tablas verdad?...es decir aceptan skip...porque parte de la rutina es moverse a traves de la tabla y buscar los documentos que tienen saldo para aplicarles su pago y 'colgarle' el nuevo movto. a ese documento.
Otra cosa, el nombre del cursor, dejo uno fijo o uno para cada usuario?, formar el nombre con las siglas de la empresa y caja, tengo duda de como es el comportamiento del cursor, es decir si otro usuario usa mycursor, no afectaria al que ya lo tiene usando? ...disculpa pero estoy aprendiendo con uds. y he bajado material, soy foxero y clipero de msdos.
Por tu ayuda gracias
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:Usar Tabla temporal o cursor?

Publicado por Luis Osorio (27 intervenciones) el 30/11/2006 19:28:14
El cursor es casi igual a una tabla de verdad (lo puedes indexar, usar skip, append, etc) la diferencia es que la tabla reside en tu disco duro como un archivo mientras que el cursor solo reside en RAM del equipo donde corre el programa. Si es un programa en red, no afecta a los otros usuarios ya que el cursor solo reside en la RAM del equipo.
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:Usar Tabla temporal o cursor?

Publicado por Vicente (10 intervenciones) el 30/11/2006 20:02:06
Ok..me queda claro ahora si Luis, gracias por despejarme la duda, me comentas que tambien puedes crearle indices, o sea puedo hacer el Create cursor {.etc} y luego puedo poner una instruccion como INDEX ON campo1+campo2 TAG algo ADDI ?...porque tenia entendido que solo era con el ORDER BY...

Gracias
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:Usar Tabla temporal o cursor?

Publicado por Salvador (33 intervenciones) el 30/11/2006 22:32:07
Yo estoy de acuerdo con todas las opiniones de los compañeros, solo les falto agregar lo siguiente:

1)Puedes generar un cursor de solo lectura a partir del una tabla con la sig instr:
select * from tabname into cursor curname
2)Puedes generar un cursor de R-W a partir del una tabla con la sig instr:
select * from tabname into cursor curname readwrite
este tipo de tabla r-w funciona igual que una tabla ordinaria
te suguiero este tipo ya que en estas haces todas tus transacciones, guardas los resultados en tu tabla .dbf y solo hasta que cierres el cursor este desaparece,
Tambien cabe mencionar que puedes crear un cursor a partir de otro con las mismas instrucciones arriba mencionadas
tambien te recuerdo que el cursor existe desde foxpro 2.6. solo que en esta version no existia el parametro readwrite y los cursores de lectura-escritura los tenias que generar con create cursor.
Espero que te sirvan estas observaciones. Bye.
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:Usar Tabla temporal o cursor?

Publicado por Luis Osorio (27 intervenciones) el 01/12/2006 00:27:43
Si, sie puede hacer. Solo que si usas la opcion de buffering, solo que si vas a indexar hazlo antes de activar el buffering o bien, deshabilitalo solo para generar el indice y luego rehabilitalo.

Espero te sea util
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:Usar Tabla temporal o cursor? (Resuelto)

Publicado por Vicente (61 intervenciones) el 01/12/2006 02:53:20
Muchas gracias comunidad...ya me quedó claro, ya hice pruebas y si me funcionó..
Gracias de nuevo
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