Bonjour,
Actuellement, je travaille sur un logiciel de gestion qui fait appel aux états access afin d'imprimer.
J'aimerais dorénavant ne plus passer par ces états, mais mettre en forme la page à imprimer directement avec vb.
Merci pour votre aide.
Bonjour,
Actuellement, je travaille sur un logiciel de gestion qui fait appel aux états access afin d'imprimer.
J'aimerais dorénavant ne plus passer par ces états, mais mettre en forme la page à imprimer directement avec vb.
Merci pour votre aide.
Bonjour,
Sujet vaste s'il est un.
Mais comme tu ne dis rien de tes réels besoins et de ce que tu as réellement en tête, on ne peut que répondre par des généralités.
Si tu veux mettre tes rapports en page sans devoir recourir à un programme externe, il existe des composants .net pour la génération de rapports, dont quelques uns sont gratuits.
Mais en général, mettre un document en forme à partir de zéro avec VB, c'est l'enfer.
Tu peux toujours commencer avec cela :
http://www.codeproject.com/Articles/...rinting-in-NET
À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.
Ô Saint Excel, Grand Dieu de l'Inutile.
Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.
Bonjour,
Les impressions directes avec vb sont expliquées dans le tuto présenté dans cette page.
J'ai utilisé le principe pour faire des impressions en C#. Au début cela semble rebutant, mais une fois le principe acquis, ça se fait.
Traductions d'articles :
La mémoire en .NET - Qu'est-ce qui va où ?
Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.
Merci pour votre aide,
Je précise mon besoin: sur mon logiciel, par exemple quand je vais sur un devis, j'ai des informations concernant le client, les produits de sa commande, le montant.. Je peux imprimer ce devis, mais cela ce fait à partir d'un état access, je souhaite donc maintenant générer ce document directement avec vb.net, sans passer par access, en réutilisant directement les données affichées sur mon logiciel.
Bonsoir beber12,
Pourquoi ne pas créer un état .rdlc et utiliser le composant reportviewer pour l'afficher. Ce serait plus simple je trouve.
N'oubliez pas le tag et
Bonsoir Callo,
Ce n'est pas moi qui décide de quelle manière ça doit-être fait et on me demande de le faire comme ça (mise en forme manuelle, utilisation des XPos et YPos)
J'ai aussi ce problème :
L'IDE me dit que cet évènement (PrintPage) est introuvable.. Faut peut-être un "Imports" (sachant que j'ai celui là déjà : Imports System.Drawing.Printing)?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Private Sub btn_imp_Click(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles btn_imprimer.PrintPage
Merci pour votre aide
Ben non, le contrôle bouton n'a pas d'évènement PrintPage.
Un objet de type PrintDocument pourra gérer l'évènement PrintPage.
Un exemle légérement modifié de MSDN
Je le lance depuis un menu mais depuis un bouton c'est pareil.
Vu que j'ai testé sur un fichier, je laisse ev.MarginBounds.Left pour positionner chaque début de ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 Private printFont As Font Private streamToPrint As System.IO.StreamReader Private Sub PrintDocumentToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles PrintDocumentToolStripMenuItem.Click Try streamToPrint = New System.IO.StreamReader("d:\data\fic.txt") Try printFont = New Font("Arial", 10) Dim prdoc As New System.Drawing.Printing.PrintDocument() AddHandler prdoc.PrintPage, AddressOf Me.pd_PrintPage prdoc.Print() Finally streamToPrint.Close() End Try Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub ' L'évènement PrintPage est envoyé pour chaque page qui doit être imprimée. Private Sub pd_PrintPage(ByVal sender As Object, ByVal ev As System.Drawing.Printing.PrintPageEventArgs) Dim linesPerPage As Single = 0 Dim yPos As Single = 0 Dim count As Integer = 0 Dim line As String = Nothing ' Calcule le nombre de ligne par page. linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics) ' Iprime chaque ligne du fichier. While count < linesPerPage line = streamToPrint.ReadLine() If line Is Nothing Then Exit While yPos = ev.MarginBounds.Top + count * printFont.GetHeight(ev.Graphics) ev.Graphics.DrawString(line, printFont, Brushes.Black, ev.MarginBounds.Left, yPos, New StringFormat()) count += 1 End While ' d'autre lignes?, une autre page à imprimer. If (line IsNot Nothing) Then ev.HasMorePages = True Else ev.HasMorePages = False End Sub
Si tu as plusieurs éléments à mettre sur une ligne il faudrat calculer leurs emplacements ; remplacer "ev.MarginBounds.Left" par xpos, avec xpos = ev.MarginBounds.Left + calcul de l'emplacement voulu
Traductions d'articles :
La mémoire en .NET - Qu'est-ce qui va où ?
Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.
Merci beaucoup pour ton aide rv26t, ça m'avance bien!
Par contre, j'aimerais récupérer les données à partir de ma base de données; pas à partir d'un fichier..
Merci
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager