Formulario y filtradro de tabla para impresión

Amigos.. Una consulta por favor.
Tengo 1 formulario en el cual utilizo un archivo ORDENES.
Lo he hecho de tal manera que puedo mostrar registros por registros y lo que necesito es al ubicar uno, imprimir su formato de trabajo.
El formato de trabajo es como una hoja para llenar datos pero solo de la orden seleccionada.
Debería funcionar así tengo la orden en pantalla y utilizo el botón IMPRIMIR.. Y listo.
1) He probado creando un fichero temporal y de ahí imprimo.. Pero lo que no me gusta es que aparece el mensaje "el archivo ya existe..." ¿cómo puedo hacer para que este no aparezca?... Y imprime bien el formato.
2) En caso de no usar el 1) ¿Cómo puedo hacer para filtrar el archivo con la orden que quiero imprimir?
Utilice una variable publica XORDEN Y PASA HASTA antes del 1), es decir imprime la ordene seleccionada.
Agradeceré sus gentiles comentarios.

1 Respuesta

Respuesta
1
Hay varias respuestas para tu pregunta, pero te daré al menos tres aplicando la teoría "LA LEY DEL MENOR ESFUERZO".
1- Atendiendo que ya comenzaste con un archivo temporal para desactivar el mensaje el "archivo ya existe" lo que puedes hacer es utilizar el seteo de ambiente SET SAFETY OFF con esto se desactivan los mensajes de seguridad de sobreescribir archivos, borrar etc. Pero si estas usando archivos temporales físicos tal vez esto no convenga tanto en ambientes multiusuarios, entonces vamos a otra opción.
2- Puedes usar SQL para filtrar los datos de tu tabla maestro, supongamos que la tabla se llame ORDENES y el campo llave sea ord_id, entonces usas la sentencia select * from ordenes where ord_id = 150 into cursor temporal bueno, esto te creara un cursor temporal pero de memoria, el cursor temporal es idéntica a tu tabla original pero con un solo registro, o lo que cumpla con la condición que le dimos, en el ejemplo suponemos que estas visualizando la ORDEN No 150, el cursor es de solo lectura (pero si trabajas con VFP7 o superior puede agregar la opción readwrite para convertirlo de escritura), pero como es de memoria no te saldrá ningún mensaje de sobreescribir, si estas en entorno multiusuario cada usuario creara este archivo en RAM memoria de cada terminal y no habrá inconvenientes, esta es la opción más recomendada,
3- Otra opción filtrado seria utilizando la opción SET FILTER de foxpro, esto seria solamente: SET FILTER TO ord_id=150 con esto esta tabla pareciera que contiene los datos del registro actual, pero no olvides restablecerlo luego de la impresión con la clausula SET FILTER TO por que de lo contrario no te mostraran ningún otro registro hasta que cierres y reabras tu tabla, en fin, como te dije al principio hay muchas respuestas, yo me quedo con la opción 2, pero la primera es la más fácil para ti, atenciendo tu código ya escrito.
Espero ayudarte y por favor finaliza esta pregunta si ya te aclaró la duda, por que tengo muchas abiertas desde el año pasado.
Definitivamente había hecho el SET FILTER.. y funcionó bien, sin embargo voy a probar la opción con SQL que me parece más adecuada por las razones que expones.
Muchas gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas