|
Tipp 0537
|
Drucken mit Vorschau
|
|
|
Autor/Einsender: Datum: |
|
Lothar Kriegerow 22.09.2007 |
|
Entwicklungsumgebung: |
|
VB 6 |
|
|
Wer den Reportgenerator von ACCESS kennt, wird in VB vergeblich nach einer Möglichkeit suchen, Formulare ordentlich in einer Vorschau anzuzeigen und ggf. auszudrucken. Zwar besteht die Möglichkeit, den mitgelieferten
DataReport zu verwenden, aber wer ernsthafte Anwendungen schreiben möchte, wird mit diesem Designer schon bald an die Grenzen stoßen. |
Die nachfolgenden Beschreibungen setzen voraus, dass der Anwender mit einer Datenbank arbeitet. Dabei spielt es keine Rolle, ob es sich um eine ACCESS-, MySQL- oder MS-SQL Datenbank handelt.
|
Im Mehrplatzbetrieb muss die zur Darstellung verwendete Tabelle temporär für jede Connection für sich erfolgen. Dieses erreicht man z.B. bei einer MS-SQL Datenbank mit
der vorangestellten Raute (Select * From #MeineTabelle...). Somit ist es möglich, dass X Anwender gleichzeitig Formulare aufrufen können, ohne sich gegenseitig zu beeinflussen.
Dieses Beispiel bezieht sich jedoch auf den Einplatzbetrieb.
|
Beim Aufruf der Vorschau wird das Formular vordefiniert. Rand, Fußposition, Zeilenanzahl Plattformat u.s.w. Sinnvoll ist es und wurde in
dem Beispiel so praktiziert, einen Formulardesigner zu schreiben, mit dem man die einzelnen Werte der jeweiligen Formulare benutzerbezogen anpassen kann. Gibt es also so eine Anpassung zu einem Formular, werden diese Daten verwendet. Andernfalls gelten die Voreinstellungen.
Mit den "Varianten" können die einzelnen Formularvarianten festgelegt werden. Der Sinn geht gut aus dem hervor und wird nicht näher erläutert.
|
Die Tabelle, die das Ergebnis darstellen soll, muss zwingend eine ID-Spalte besitzen, welche eine fortlaufende Nummerierung gewährleisten muss. Diese dient dem Programm zur späteren Orientierung, also der Erkennung der Zeilen und somit der Seiten.
|
Um die Vorschau zu realisieren, wird eine PictureBox verwendet, in die
alle zur Ausgabe relevanten Daten gezeichnet werden.
|
Auch eine Auswahl des Druckers, Zoom, Anzahl der Zeilen sowie ein Ausdruck einzelner Seiten
ist möglich. So erkennt das Beispiel durch die Eingabe 4-6; 8 im
Seitenfeld auch, dass es die Seiten 4,5,6 und 8 drucken soll.
|
Natürlich soll dieses
Beispiel lediglich zeigen, wie eine Druckvorschau mit VB realisiert
werden kann, und lässt sich natürlich beliebig erweitern, wie z.B.
mit einer Scrollrad-Unterstützung usw.
|
|
Code im Codebereich des
Moduls |
|
|
Option Explicit
Type FormularDaten
KopfVar As Integer
Variante As Integer
FussVar As Integer
Zeilen As Integer
Ausrichtung As Integer
End Type
Public Fr As FormularDaten
Public SQL As String
Public Zoom As Single
Public RandO As Single
Public RandU As Single
Public RandL As Single
Public RandR As Single
Public CON As ADODB.Connection
Public Rs As New ADODB.Recordset
Public FussPos As Single
Public TB As String
Sub MDB()
' Mit einer Beispieldatenbank verbinden
Set CON = New ADODB.Connection
With CON
.CursorLocation = adUseClient
.Mode = adModeShareDenyNone
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Data Source") = App.Path + "\Demo.mdb"
.Properties("Jet OLEDB:Database Password") = "DemoDB"
.Open
End With
End Sub
|
|
|
Code im Codebereich der
Form frmDruckDemo |
|
|
Option Explicit
Private Sub Command1_Click()
Dim Data As SYSTEMTIME
'MonthView-Daten an die Struktur übergeben
With Data
.wDay = MonthView1.Day
.wMonth = MonthView1.Month
.wYear = MonthView1.Year
End With
SetToday MonthView1.hwnd, Data
Command1.Enabled = False
' System-Datum setzen
' Date = MonthView1.Value
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Load()
' Aktuelles Datum setzen
MonthView1.Value = Date
End Sub
Private Sub Form_Unload(Cancel As Integer)
End
End Sub
Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
'MonthView Click-Bug umgehen
With Command1
.Enabled = True
.SetFocus
End With
End Sub
|
|
|
|
Aufgrund des Umfangs wurde der Quellcode, an einigen Stellen gekürzt, um die Übersicht zu wahren,
Das Downloadprojekt ist an den wichtigsten
Stellen kommentiert. Um diesen Tipp ausführen zu können, muss die Microsoft
ActiveX Data Objects 2.x Library in das Projekt eingebunden werden.
|
|
Windows-Version |
95 |
|
|
98 |
|
|
ME |
|
|
NT |
|
|
2000 |
|
|
XP |
|
|
Vista |
|
|
Win
7 |
|
|
|
VB-Version |
VBA 5 |
|
|
VBA 6 |
|
|
VB 4/16 |
|
|
VB 4/32 |
|
|
VB 5 |
|
|
VB 6 |
|
|
|
|
Download (32,8
kB)
|
Downloads bisher: [ 642 ]
|
|
|