Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

AVOIR UN APERCU ECRAN D'UN ETAT ACCESS AVANT DE L'IMPRIMER


Information sur la source

Catégorie :Base de Donnees Niveau : Initié Date de création : 16/12/2002 Date de mise à jour : 16/12/2002 23:26:44 Vu : 8 056

Note :
8,5 / 10 - par 2 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note


Description

Slt à tous,
ce bout de code ne va pas servir à bcp d'entre vous, mais j'ose espérer que comme pour moi, ceux qui en auront besoin seront bien content !

Je m'explique : je part d'une base de donnée Access, qui contient des données, et je veux sortir ces données proprement pour un utilisateur (vous savez cet espèce chian... et emmerda... pour les programmeurs ;)    ).
Pour cela, ya rien de mieux qu'un état Access pure, fait par lui-même : et là cet état je voulais l'afficher, comme access l'aurait fait dans une feuille pour un aperçu avant impression quoi.

J'ai chercher partout mais les codes existants soit imprimaient directement (je voulait un aperçu !), ou m'affichait ce que je voulais mais DANS access !!! Et moi je veux pas que l'utilisateur se retrouve sous Access !

Donc j'ai pondu ça (comme une poule, sisi) :
 

Source

  • 'ATTENTION : Il faut qd mm référencer les "Microsoft Access xx Library Object"
  • 'Ba oui j'utilise Access qd mm, je suis pas magicien !
  • 'Il vous faut aussi un ctrl Webbrowser sur la form nommé Wb
  • Private Sub BT_Click()
  • On Error Resume Next
  • Dim A As Access.Application
  • Set A = CreateObject("Access.Application")
  • 'là j'ouvre la base qui m'interesse, ici bd1.mdb du dossier de l'appli
  • A.OpenCurrentDatabase App.Path & "\bd1.mdb"
  • 'et là, c'est toute l'astuce, j'exporte l'état vers un fichier HTML !!!
  • 'Ici, "Epiece" c'est le nom de l'état de la base qui m'interesse
  • A.DoCmd.OutputTo acOutputReport, "Epiece", acFormatHTML, App.Path & "\tmp.html"
  • A.Quit
  • DoEvents
  • 'Maintenant j'affiche la page générée dans mon Webbrowser Wb (que j'ai
  • 'caché en dehors de la feuille : attention le visible =false fait des bugs)
  • 'Le ctrl d'erreur c'est parceque des fois c'est pas pret et ca plante
  • Do
  • Wb.Navigate App.Path & "\tmp.html"
  • DoEvents
  • Loop Until Wb.ReadyState = READYSTATE_COMPLETE
  • 'ça c'est parceque l'aperçu se dimensionne à la taille de la forme
  • 'donc je la met en plein écran temporairement
  • Me.WindowState = 2
  • 'et ici je demande au Webbrowser de m'afficher l'apercu impression de la page
  • 'le ctrl d'erreur est a peu pret pour les mm raisons, sur les systemes lents
  • 'c'est parfois pas pret et ca plante, a qq dixieme de sec, c con !
  • Do
  • Err.Clear
  • Wb.ExecWB OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DODEFAULT
  • DoEvents
  • Loop Until Err.Number <> -2147221248
  • 'ici je remet enfin la form a sa taille initiale
  • Fimpression.WindowState = 0
  • End Sub
  • 'ET LA VOUS AVEZ SOUS VOS YEUX l'apercu avant impression de l'état Access
'ATTENTION : Il faut qd mm référencer les "Microsoft Access xx Library Object"
'Ba oui j'utilise Access qd mm, je suis pas magicien !

'Il vous faut aussi un ctrl Webbrowser sur la form nommé Wb

Private Sub BT_Click()
On Error Resume Next
Dim A As Access.Application

      Set A = CreateObject("Access.Application")

'là j'ouvre la base qui m'interesse, ici bd1.mdb du dossier de l'appli
      A.OpenCurrentDatabase App.Path & "\bd1.mdb"

'et là, c'est toute l'astuce, j'exporte l'état vers un fichier HTML !!!
'Ici, "Epiece" c'est le nom de l'état de la base qui m'interesse
      A.DoCmd.OutputTo acOutputReport, "Epiece", acFormatHTML, App.Path & "\tmp.html"
      A.Quit
      DoEvents

'Maintenant j'affiche la page générée dans mon Webbrowser Wb (que j'ai
'caché en dehors de la feuille : attention le visible =false fait des bugs)
'Le ctrl d'erreur c'est parceque des fois c'est pas pret et ca plante
      Do
        Wb.Navigate App.Path & "\tmp.html"
        DoEvents
      Loop Until Wb.ReadyState = READYSTATE_COMPLETE

'ça c'est parceque l'aperçu se dimensionne à la taille de la forme
'donc je la met en plein écran temporairement
      Me.WindowState = 2

'et ici je demande au Webbrowser de m'afficher l'apercu impression de la page
'le ctrl d'erreur est a peu pret pour les mm raisons, sur les systemes lents
'c'est parfois pas pret et ca plante, a qq dixieme de sec, c con !
      Do
        Err.Clear
        Wb.ExecWB OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DODEFAULT
        DoEvents
      Loop Until Err.Number <> -2147221248

'ici je remet enfin la form a sa taille initiale
      Fimpression.WindowState = 0

End Sub

'ET LA VOUS AVEZ SOUS VOS YEUX l'apercu avant impression de l'état Access

Conclusion

Voilà !

Si vous avez un truc meilleur, PITIE dites le moi, en tout cas ça ça tourne bien.
Libre à vous par la suite de remplir la base avec des instructions SQL sous VB afin de formater une sortie de données personnalisées, comme je m'apprete a le faire...
 

Commentaires et avis

signaler à un administrateur
Commentaire de Neo.balastik le 17/12/2002 09:21:12

La méthode pourrait séduire certains.  Mais VB6 inclus le DataReport qui n'est pas mal du tout.  Certes, il n'arrive pas à la hauteur des états dans Access, mais il peut toutefois créer des rapports complets et avec aperçu !  Cela évite d'utiliser le bien lourd WebBrowser ainsi que l'autre bien lourd Access.  Imaginons une application développée avec ta méthode qui devra être distribuée à d'autres personnes...  Il faudra absolument qu'Access soit installé sur la machine client !  Pas très séduisant...  Mais j'apprécie tout de même cet effort d'imagination.

Bonne continuation...
NéoB

signaler à un administrateur
Commentaire de celiphane le 17/12/2002 11:03:57

Je ne connais pas ce ctrl (DataReport), d'ailleurs il n'appartient pas à ma liste de composant par défaut.

Sinon, l'application qui  contient ce code est à exporter sur une machine client, et malgré tes dires, l'empaquetage d'installation VB ne m'a pas tenu rigueur de ces rmqs, j'espère ne pas rencontré ce pb.

De plus, le webrowser est d'origine sur les postes car c'est IE.
C'est pas si lourd à la vue de la fonctionnalité...
Mais bon j'ai trouvé que ça... Si qq1 trouve à faire la même chose en "moins lourd", et bien qu'il le dise ;)

@+

signaler à un administrateur
Commentaire de Soda le 18/12/2002 11:14:22

g pas trop eut le temps de voir la source mais j'aime bien tout ce qui est bidouille...

signaler à un administrateur
Commentaire de vbarmy le 28/02/2003 11:42:22

C'est lourd !
Personellement j'utilse Crystal Report, c'est gratuit et c'est fourni sur le cd de vb, mais il faut l'installer soi même à la main. Ca fonctionne comme un état access en mieux.

Dans les composants/contrôles de vb tu coche Crystal Report Control, puis tu en mets un sur ton form.

Et le code pour imprimer :
NomForm.NomControlCrystal.ReportFileName=Chemin d'accès au Crystal.rpt
NomControlCrystal.Action=1 'Appercu avant impression

Voila Deux lignes de code et c'est tout.

signaler à un administrateur
Commentaire de celiphane le 28/02/2003 15:01:49

merci !

signaler à un administrateur
Commentaire de Damien10 le 07/04/2003 10:59:28

Salut,

J'aime beaucoup ce code, je voudrais juste savoir si c'est possible, comment faire pour inclure les librairies access dans l'install VB

Afin de ne pas avoir access et pas d'install de runtime.

Merci.

signaler à un administrateur
Commentaire de trifonnerie le 12/11/2003 18:30:15

Salut c'est pas mal mais Access s'ouvre et si l'utilisateur ne possede pas access c'est embetant. enfin je te felicite pour code

trifon

signaler à un administrateur
Commentaire de Fabio972 le 18/01/2004 14:22:41

Heeuu... Zut ! Je ne trouve pas Crystal Report sur mopn CD de VB 6.

Vous pourriez m'expliquer comment le trouver et l'installer car sinon je vais devoir utiliser l'astuce de Celiphane (excellente d'ailleurs ;-) mais mes clients N'ONT PAS ACCESS :-)

Merci

signaler à un administrateur
Commentaire de tahitibts2ig le 21/01/2005 03:36:18

Salut, la source marche mais je n'arrive pas à faire afficher les autres pages de mon etat.
si il est possibles de le faire merci de m'aider

signaler à un administrateur
Commentaire de medaz le 28/04/2005 11:57:01

merci celiphane

ton code m'aide bcp,

signaler à un administrateur
Commentaire de gbegnonghislain le 11/01/2006 11:08:14

C'est un code que je trouve assez interessant et dont j'ai surtout besoin, mais seulement je n'arrive pas à insérer le webbroswer, je ne le trouve pas dans la liste des références, quelqu'un pourrait me dire où le trouver ou quoi faire?

signaler à un administrateur
Commentaire de tbjoce le 18/05/2006 19:07:47

comment se présente un  ctrl Webbrowser
merci de m'indiquer
le programme on l'écrit sous VB ou sous Access

Merci pour ces réponses

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,140 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.