¿Impresión de reportes?

Necesito imprimir un reporte con la condición while y usando el seek pero al momento de ejecutar el formulario el seek desaparece y el puntero se sitúa en el primer reegistro el código lo tengo así:
store 'nom_cam_tab' to 'nom_var'
use 'nom_tab' inde 'nom_ind'
seek 'nom_var'
repo form 'nom_inf' while 'nom_var'='nom_cam_tab' to print
De antemano gracias por la ayuda que me manden

1 respuesta

Respuesta
1
El tiempo que tarda en mandar imprimir puede estar determinado por la optimización de la condición (problema de código), por las características del equipo (Velocidad del procesador, memoria, etc.), el entorno (Tipo de red, número de consultas concurrentes), por el diseño de la base de datos, tablas, reportes, etc.
Sin mayor información, es difícil determinar las causas.
Bueno, eso digo yo...
PD No olvides cerrar la pregunta.
Con el FOR:
REPORT FORM reporte FOR Prueba.clave == THISFORM.ct_cClave.TEXT TO PRINT
Con el WHILE:
REPORT FORM reporte WHILE Prueba.clave == THISFORM.ct_cClave.TEXT TO PRINT
La línea se puede incluir en un PRG sustituyendo el "Prueba.clave == THISFORM.ct_cClave.TEXT" por "Prueba.clave == variable", suponiendo que exista la tabla 'Prueba' y que esta contenga el campo 'clave'.
Gracias por tu ayuda yo creo que el problema es la red espero sigamos en contacto
¿Creo qué es todo gracias el único problema que me queda es que al momento de mandar a imprimir desde el programa se tarda alrededor de 10 minutos incluso cuando solo voy a imprimir solo dos registro es problema de impresión saturación código o sistema?
Prueba:
REPORT FORM 'nom_inf' FOR 'nom_var' == 'nom_cam_tab' TO PRINT
Bueno, eso digo yo...
nunca has usado el while ??
¿Es más rapido y más eficiente cuando tienes un programa en red y una tabla con más de 400,000 registros si sabes algo mándamelo por favor por que el for es muy lento comoquiera gracias por tu ayuda y dime algo es doble signo igual no fue un error ortográfico?!
Efectivamente, el FOR es más lento que el WHILE, aparentemente. La ayuda dice:
"FOR lExpresion1 imprime solamente los datos incluidos en los registros para los cuales lExpresión1 se evalúa como verdadera (.T.). La inclusión de FOR le permite filtrar los registros que no desea imprimir.
Rushmore optimizará REPORT FOR si lExpresión1 es una expresión optimizable. Para obtener el mejor rendimiento, utilice expresiones optimizables en la cláusula FOR"
Y esa optimización es la que buscamos. Cuando se manda un reporte, el puntero se coloca invariablemente en el primer registro de la tabla, lo que hace "inoperante" el uso de WHILE
El doble signo no es un error ortográfico, se puede usar el operador == para comparar cadenas de caracteres de forma exacta. Al comparar dos expresiones de caracteres mediante el operador ==, las expresiones a ambos lados de dicho operador se consideran iguales si contienen exactamente los mismos caracteres, incluidos los espacios en blanco. La configuración de SET EXACT se pasa por alto al comparar cadenas de caracteres con el operador ==.
Bueno, eso digo yo...
¿Me puedes mandar el código para compararlo con el mio?
Dame la dirección de tu correo.
ai te va;
[email protected]
Gracias por tu ayuda
Ya lo envié, en caso de que exista algún problema, favor de avisarme.
Amigo no imprime y mando a imprimir el archivo que se crea pero no traduce los códigos del informe
¿Qué le hago a lo que me enviaste?
Modifica el código, quita el TO FILE de la línea: REPORT FORM reporte TO FILE...
Asi me lo enviaste ;
REPORT FORM reporte TO FILE test.txt FOR Prueba.clave == THISFORM.ct_cClave
Asi lo modifiquè ;
REPORT FORM reporte WHILE Prueba.clave == THISFORM.ct_cClave to print
Pero ni así
Verifico y comento.
Perdón, la línea esta incorrecta, la sintaxis correcta es:
REPORT FORM reporte FOR Prueba.clave == THISFORM.ct_cClave.TEXT
Y
REPORT FORM reporte WHILE Prueba.clave == THISFORM.ct_cClave.TEXT
(Faltaba el .TEXT)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas