He vuelto a mirar una cosas de los informes que no me salen bien por todas las impresoras y me he dado cuenta de que hago una cosa que no se si influya; el documento por el que se tiene que imprimir el informe mide 290 cm, y como la impresora que tengo por defecto instalada en mi casa es una normalita que como mucho puede imprimir hojas de ancho 240 cm, lo que hice en su día fue instalar los drivers de la NEC PINWRITER P60 y desde Crystal hacer lo siguiente: Archivo > Configurar impresora > Seleccionar en la lista de impresoras la NEC PINWRITER P60, y después indicarle en "propiedades" de la impresora, en tamaño "personal", el ancho del documento en cuestión, de forma que me permita un área de trabajo de ese ancho. Una vez hecho eso lo guardé, y ya siempre me toma esa impresora. ¿Crees qué eso de tener guardado el documento con una impresora determinada como seleccionada influya en algo, o por el contrario debo seleccionar la impresora predeterminada y después guardar?.
Sobre lo que me comentas de la instalación de la impresora precisamente es lo que hace que salga mal en otras impresoras. Ya recordé un dato más que había olvidado decirte para cuando imprimo estos reportes en formas preimpresas. Cuando voy a imprimir acostumbro colocar un combo box con las impresoras disponibles en esa máquina en que se imprime. Este combo aparece en un formulario donde le pregunto al usuario a donde quiere enviar el reporte(Pantalla, impresora, etc.) y otras opciones del reporte. Coloco por Default la impresora predeterminada, si el usuario no elige otra, queda como destino la impresora predeterminada. De esta manera, siempre hay una impresora válida. He leído más sobre esto en la ayuda de Crystal y he encontrado lo siguiente: 1. Efectivamente como me decías al guardar un reporte con una impresora determinada, el reporte intentará imprimir en cualquier máquina con esa impresora(si no se le ha indicado otra), incluso, aunque sean los mismos controladores puede tener problemas si el nombre es diferente(según la ayuda de Crystal). Probablemente es lo que te ha pasado a ti. 2. Hay una opción en Archivo > Configurar impresora en la opción(checkBox) llamada "Propiedades predefinidas" si está activada o seleccionada tratará de colocar estas propiedades en la impresora en que se esté imprimiendo, como el tamaño de la hoja, sus márgenes de acuerdo a dicha impresora, etc.(Esta opción en las anteriores preguntas ya te la había comentado sobre evitar seleccionarla) 3. En el tema llamado "Uso del entorno de diseño de informes" dice entre otros puntos lo siguiente: Se recomienda que siga esta directrices cuando diseñe informes: Siempre imprima una página de prueba. Mantenga el mismo tamaño de fuente. Asegúrese de imprimir formas preimpresas en la misma máquina Sin embargo también menciona que si el reporte va a ser distribuido para imprimir en diversas impresoras se evite guardarlo con una impresora determinada. La solución es entonces, simplemente que al momento de imprimir el reporte, tenga establecida una impresora válida, que es como te decía unas líneas arriba. Este código es el que coloco al imprimir. Una opción es siempre preguntar la impresora por medio del control CommandDialog de Vb y te muestra la forma para impresoras de Windows On Error GoTo CmdlgError cdlImprime.Flags = cdlPDHidePrintToFile + cdlPDNoSelection cdlImprime.ShowPrinter El otro es llanar un combo de impresoras seleccionando desde inicio la impresora predeterminada Predeterminada = 0 'Llena combo de impresoras. For Indice = 0 To Printers.Count - 1 cboImpresoras.AddItem Printers(Indice).DeviceName If Printers(Indice).DeviceName = Printer.DeviceName Then Predeterminada = cboImpresoras.NewIndex End If Next If cboImpresoras.ListCount > 0 Then cboImpresoras.ListIndex = Predeterminada End If Enseguida se asigna la impresora que haya seleccionado en el combo 'Establece la impresora a imprimir. If Printer.DeviceName <> Printers(cboImpresoras.ListIndex).DeviceName Then repGeneral.PrinterName = Printers(cboImpresoras.ListIndex).DeviceName repGeneral.PrinterDriver = Printers(cboImpresoras.ListIndex).DriverName repGeneral.PrinterPort = Printers(cboImpresoras.ListIndex).Port End If La diferencia del código de las impresoras con un combo box contra el CommandDialog es que en el CommandDialog haces predeterminada la impresora que seleccionas para todo Windows y en el código de impresoras mostradas en el combo no haces predeterminada la impresora, solo le indicas al control de crystal con cual impresora va a generar el reporte. Estoy seguro que te va a resolver el problema hacerlo así, estableciendo la impresora de alguna de estas dos formas y guardando el reporte sin la opción llamada "Propiedadas predefinidas" Y un último comentario(seguramente lo tienes considerado) es que si estás trabajando con un tamaño de hoja personalizado, debe existir en cada impresora donde vas a imprimir tu reporte y este debe ser, desde luego, del mismo tamaño que en donde hiciste tu reporte. Si tienes alguna duda dímelo.
Muchísimas gracias una vez más por la información. Yo utilizo Crystal 4.6 y en cuanto a la opción esa de "Propiedades predefinidas" no la veo; hay un botón que dice eso mismo, pero no un check box, y supongo que al pulsar el botón se pondrán las opciones predefinidas de la impresora. Lo que he hecho con esos informes es lo siguiente: 1- Desde el menú de "Impresoras" de Windows selecciono la que me interesa y la dejo como predeterminada. Lo del combo me parece muy buena idea, pero en principio he puesto una opción para seleccionar la impresora predeterminada con un Commondialog ya que no les importa tener que seleccionar la impresora cada vez que quieran imprimir por esa impresora. 2- Voy a Crystal y abro el informe que me interesa, y me aseguro que toma la impresora predeterminada y no selecciono otra en ese menú de Crystal. Una vez ahí, me voy al tamaño de la hoja y pongo el tamaño personalizado que me interesa, lo cual es posible dado que como está como predeterminada la impresora que me interesa esa sí admite ese tamaño, mientras que si estuviese otra es posible que no me deje usar el ancho que me interesa. Después pongo los campos y hago el diseño del informe y lo guardo. 3- Respecto a lo que me dices del tamaño "personalizado", ¿no se copia dentro del informe el tamaño que yo determino desde Crystal?, ¿Habría qué copiar algún archivo en el ordenador en el que quiero que se utilice ese tamaño personalizado con el que he creado el informe?. Poco a poco lo voy solucionando con tu ayuda. Te agradezco toda la yuda que me estás dando. Un saludo, Pablo.
De nuevo Pablo, La versión 4.6 no tiene la opción de "Propiedades predefinidas", lo que pasa es que tengo la versión 8.0. Con respecto al tamaño de hoja personalilzado del reporte en crystal no hay que copiar ningún archivo, sino que hay que configurar en cada ordenador el tamaño de hoja personalizado que estás utilizando, ya que el reporte tratará de imprimir en base a dichas dimensiones. Desconozco si haya alguna forma de "pasarlo" o hacerlo de otra manera, es muy probable que lo haya pero no lo conozco.