2010-04-21 5 views
1

Je rencontre un problème lorsque mon programme est installé sur un autre ordinateur dont la préférence d'impression est différente, lorsque mon rapport de données accepte la taille 8.2 * 11, car lorsque la préférence de l'imprimante est différente, le rapport de données ne s'affiche pas. une erreur indiquant que la largeur de la page est plus grande que la largeur du papier, est-ce que quelqu'un sait comment résoudre ce problème.Modification de la préférence de l'imprimante à l'aide de vb6?

J'ai essayé ce code, mais cela n'a pas fonctionné

Printer.PaperSize = vbPRPSLetter

Répondre

1

Consultez l'article Microsoft Base de connaissances FIX: Error Message "Report Width Is Larger Than the Paper Width" When Showing Data Report in Landscape

Lorsque vous utilisez la méthode Show de données rapport à un aperçu du rapport, L'orientation par défaut de la page est paramètres d'imprimante par défaut sur l'ordinateur local . Par conséquent, si l'orientation des paramètres de l'imprimante par défaut est réglé sur Portrait de papier standard Lettre et votre rapport largeur est plus de 8,5 pouces de large, l'erreur suivante se produit: Rapport la largeur est supérieure à la largeur du papier.

La solution semble définir Orientation avant d'utiliser le rapport de données. Remplacez DataReport1 par le nom de votre rapport de données.

DataReport1.Orientation = rptOrientLandscape 
DataReport1.Show 

EDIT Une autre suggestion: Microsoft offer une DLL gratuit qui vous permet de modifier les paramètres par défaut pour l'imprimante. Vous pouvez essayer d'utiliser cette DLL gratuite dans votre projet, puis faire quelque chose comme ce code ci-dessous avant d'utiliser le rapport de données. Microsoft dit "cette DLL est particulièrement utile lorsque vous traitez avec le rapport de données, qui lit l'orientation par défaut de l'imprimante avant d'afficher ou d'imprimer un rapport."

Set obj = New PrinterControl 
    obj.ChngOrientationLandscape 
+0

il me donne une erreur, en disant variable non définie lors de la compilation – Mahmoud

+0

@Mahmoud Change 'DataReport1' au nom de votre rapport de données. – MarkJ

+0

je sais que je l'ai changé, mais je comment ajouter la DLL au logiciel, parce que j'essaie de l'enregistrer sur mon windows 7 mais je continue à obtenir une erreur, et quand je suis la méthode microsoft je reçois une erreur, qu'est-ce que vous suggérez – Mahmoud

1

-Pouvez-vous simplement passer à un format de papier personnalisé?

Printer.PaperSize = 256 
Printer.Width = 11808 '(8.2 * 1440) 
Printer.Height = 15840 '(11 * 1440) 

-Est-vous sûr que l'erreur n'est pas liée à la largeur d'impression maximale du rapport lui-même ? De nombreuses imprimantes ont une largeur d'impression maximale qui force des marges de 1/4 "sur un côté du papier , ce qui dans votre cas force votre zone imprimable à 7,7" max. Le moyen le plus rapide à vérifier serait de définir temporairement l'impression large à une valeur inférieure et voir si cela fonctionne.

-Une autre possibilité peut être des autorisations sur l'imprimante. S'il s'agit d'une ressource réseau partagée, elle peut être verrouillée et rejeter les modifications apportées aux paramètres de papier et émettre une erreur inexacte.

+0

Hey Là, le rapport bien imprimer seulement quand je change ma préférence d'imprimante à la lettre, alors le port de données bien ouvert et j'ai essayé votre méthode je continue à poser une erreur sur 'printer.papersize = 256' – Mahmoud

0

Pour changer l'orientation de l'imprimante lors de l'exécution, il faut installer le service pack VB6 6

Utilisez ce code

DataReport1.Orientation = rptOrientLandscape 
DataReport1.Show 

Cela fonctionne bien

Questions connexes