Supportnet / Forum / Datenbanken
Bericht aus Formular heraus anzeigen
Frage
Hallo !
Ich würde gerne aus einem Formular heraus einen Bericht drucken, und zwar soll es so sein, wenn ich die Drucken- Taste anklicke, dass die aktuelle Formularansicht in einen Bericht "gelenkt" wird.
(Aktuelle Formularansicht wird wird per VBA+SQL- Abfragen erzeugt)
Thankx !
Antwort 1 von Armin
1. per vba das formular als bericht abspeichern
2. den bericht aufrufen.
ungetestet und gruss armin
Antwort 2 von BenztownCitizen
Wie geht das unter Punkt 1 genannte Verfahren ungefähr....
Gruß Sam
Gruß Sam
Antwort 3 von Coolpix
hallo,
wenn du in der Entwurfsansicht deines Formulars einne Befehlsschaltfläche hinzufügst, erschein ein kleiner Assistent.
Dort kann man unter Formularoperationen den Befehl Formular drucken auswählen !!
Greetings ;-)
wenn du in der Entwurfsansicht deines Formulars einne Befehlsschaltfläche hinzufügst, erschein ein kleiner Assistent.
Dort kann man unter Formularoperationen den Befehl Formular drucken auswählen !!
Greetings ;-)
Antwort 4 von BenztownCitizen
Das ist nicht so ganz das was ich möchte, weil er mir ja das Formular mit allen Schaltflächen, Rahmen usw. druckt.
Ich hätte gerne aus der aktuellen Formularansicht einen Ausdruck in Berichtsform.
Yes, and only that
Ich hätte gerne aus der aktuellen Formularansicht einen Ausdruck in Berichtsform.
Yes, and only that
Antwort 5 von Coolpix
hallo nochmal,
wenn du aus einem geöffneten Formular die aktuell angezeigten Datensätze in Berichtform ausdrucken willst, solltest du auch danach fragen.
Ich würde mir eine Abfrage basteln, welche das gleiche Ergebnis liefert, daraus einen Bericht erstellen un den per Befehlsschaltfläche ausdrucken.
bin gerne bereit dir dabei zu helfen aber dann brauche ich Infos wie du die Datensätze in deinem Formular selektierst !
Greetings ;-)
wenn du aus einem geöffneten Formular die aktuell angezeigten Datensätze in Berichtform ausdrucken willst, solltest du auch danach fragen.
Ich würde mir eine Abfrage basteln, welche das gleiche Ergebnis liefert, daraus einen Bericht erstellen un den per Befehlsschaltfläche ausdrucken.
bin gerne bereit dir dabei zu helfen aber dann brauche ich Infos wie du die Datensätze in deinem Formular selektierst !
Greetings ;-)
Antwort 6 von BenztownCitizen
Hallo !
Ich selektiere die Datensätze über Kombinationsfelder die über SQL- Abfragen gefüllt werden, der jeweils gewählte Ausdruck wird in VBA übergeben und über SQL wird der Datensatz selektiert un im Formular dargestellt(Endlosformular).
Bsb.:
Jetzt werden wie im obigen Beispiel alle Geräte angezeigt (Name,Messbereich,Eichdatum usw) welche sich an einem bestimmten Standort befinden.
Diese Auswahl soll nun ansehnlich ausgedruckt werden das man eine Übersicht hat die man weitergeben kann.
Am besten über einen Button, der dann meinetwegen mit dem Kommentar" Aktuelle Ansicht drucken" versehen wird.
So stell ich mir das vor
Gruß
Ich selektiere die Datensätze über Kombinationsfelder die über SQL- Abfragen gefüllt werden, der jeweils gewählte Ausdruck wird in VBA übergeben und über SQL wird der Datensatz selektiert un im Formular dargestellt(Endlosformular).
Bsb.:
Private Sub ComboPlace_AfterUpdate()
Me.RecordSource = "SELECT DEVICES.name, DEVICES.inventory, DEVICES.purchase, DEVICES.serial, DEVICES.lastcheck, " & _
"DEVICES.nextcheck, DEVICES.nocalibration, DEVICES.internalcheck, DEVICES.nocheck, DEVICES.internalcal, " & _
"DEVICES.checkcycle, DEVICES.checkdone, DEVICES.maintenance, DEVICES.remark, DEVICETYPNAME.name, MANUFACTURER.name, " & _
"PLACE.name FROM PLACE INNER JOIN (MANUFACTURER INNER JOIN (DEVICETYPNAME INNER JOIN DEVICES ON " & _
"DEVICETYPNAME.id = DEVICES.devtyp) ON MANUFACTURER.manid = DEVICES.manid) " & _
"ON PLACE.placeid = DEVICES.placeid WHERE (((Place.name)= '" & Me![ComboPlace] & "'));"
End Sub
Jetzt werden wie im obigen Beispiel alle Geräte angezeigt (Name,Messbereich,Eichdatum usw) welche sich an einem bestimmten Standort befinden.
Diese Auswahl soll nun ansehnlich ausgedruckt werden das man eine Übersicht hat die man weitergeben kann.
Am besten über einen Button, der dann meinetwegen mit dem Kommentar" Aktuelle Ansicht drucken" versehen wird.
So stell ich mir das vor
Gruß
Antwort 7 von Armin
... hab´s gerade ausprobiert:
der befehl saveas steht aber evtl nur bei geschlossenem form zur verfügung, daher das close.
gruesse armin
Private Sub btnCreateReport_Click()
DoCmd.Close
DoCmd.RunCommand acCmdSaveAsReport
End Sub
der befehl saveas steht aber evtl nur bei geschlossenem form zur verfügung, daher das close.
gruesse armin
Antwort 8 von Coolpix
hallo nochmal,
um eine dynamische Abfrage zur Laufzeit zu erstellen machst du einfach folgendes:
(danke an elBobele :) )
jetzt hast du eine Abfrage mit dem Namen qryName
auf deren Basis du einen Bericht generieren kannst der deinen Ansprüchen genügt !
Den kannst du dann immer aktuell aus dem Formular ausdrucken .
Der Name der Abfrage muß natürlich immer der gleiche sein !
Feedback wäre nett !!
Greetings ;-)
um eine dynamische Abfrage zur Laufzeit zu erstellen machst du einfach folgendes:
Private Sub ComboPlace_AfterUpdate()
Dim db As Database
Dim StrSql As String
Set db = CurrentDb
StrSql = "SELECT DEVICES.name, DEVICES.inventory, DEVICES.purchase, DEVICES.serial, DEVICES.lastcheck, " & _
"DEVICES.nextcheck, DEVICES.nocalibration, DEVICES.internalcheck, DEVICES.nocheck, DEVICES.internalcal, " & _
"DEVICES.checkcycle, DEVICES.checkdone, DEVICES.maintenance, DEVICES.remark, DEVICETYPNAME.name, MANUFACTURER.name, " & _
"PLACE.name FROM PLACE INNER JOIN (MANUFACTURER INNER JOIN (DEVICETYPNAME INNER JOIN DEVICES ON " & _
"DEVICETYPNAME.id = DEVICES.devtyp) ON MANUFACTURER.manid = DEVICES.manid) " & _
"ON PLACE.placeid = DEVICES.placeid WHERE (((Place.name)= '" & Me![ComboPlace] & "'));"
Me.RecordSource = StrSql
Qry_Neu:
On Error GoTo Qry_Err
db.CreateQueryDef "qryName", StrSql
Exit Sub
Qry_Err:
db.QueryDefs.Delete "qryName"
GoTo Qry_Neu
End Sub
(danke an elBobele :) )
jetzt hast du eine Abfrage mit dem Namen qryName
auf deren Basis du einen Bericht generieren kannst der deinen Ansprüchen genügt !
Den kannst du dann immer aktuell aus dem Formular ausdrucken .
Der Name der Abfrage muß natürlich immer der gleiche sein !
Feedback wäre nett !!
Greetings ;-)
Antwort 9 von BenztownCitizen
Danke erstmal !
Da ich erst seit zwei Wochen VBA + Acces mache, aber schon länger C++ mache leuchtet mir obige Syntax schon ein, nur wie "create" ich jetzt einen Report auf Basis der in qryName gespeicherten Abfrage ?
Gruß
Da ich erst seit zwei Wochen VBA + Acces mache, aber schon länger C++ mache leuchtet mir obige Syntax schon ein, nur wie "create" ich jetzt einen Report auf Basis der in qryName gespeicherten Abfrage ?
Gruß
Antwort 10 von Coolpix
hallo nochmal,
das war eigentlich so gedacht, daß du im Datenbankfenster einen Bericht anlegst...
so richtig von Hand zu Fuss ...(Oder per Assistent)
der hat als Datenbasis die Abfrage qryName...
und wenn die Datensätze in der Datenbasis sich ändern , ändert sich auch der Inhalt des Berichtes.
also EIN fixer Bericht und EINE variable Abfrage.
Greetings ;-)
das war eigentlich so gedacht, daß du im Datenbankfenster einen Bericht anlegst...
so richtig von Hand zu Fuss ...(Oder per Assistent)
der hat als Datenbasis die Abfrage qryName...
und wenn die Datensätze in der Datenbasis sich ändern , ändert sich auch der Inhalt des Berichtes.
also EIN fixer Bericht und EINE variable Abfrage.
Greetings ;-)
Antwort 11 von Armin
... ähm, vielleicht noch einmal der hinweis auf das "DoCmd.RunCommand acCmdSaveAsReport" .
access erzeugt hier wirklich einen kompletten report mit allen ?! feldern und den daten aus deinem form.
... war selber erstaunt. armin
access erzeugt hier wirklich einen kompletten report mit allen ?! feldern und den daten aus deinem form.
... war selber erstaunt. armin
Antwort 12 von Coolpix
@ Armin,
ich habe ein Beispielformular mit Unterformular.
und da meint ACCESS:
"Der Befehl oder die Funktion 'AlsBerichtSpeichern' steht momentan nicht zur Verfügung"
also funktioniert's nicht immer ??
hast du 'ne Ahnung warum ?
Greetings ;-)
ich habe ein Beispielformular mit Unterformular.
und da meint ACCESS:
"Der Befehl oder die Funktion 'AlsBerichtSpeichern' steht momentan nicht zur Verfügung"
also funktioniert's nicht immer ??
hast du 'ne Ahnung warum ?
Greetings ;-)
Antwort 13 von BenztownCitizen
Hallo !
Also die Methode mit der abgespeicherten Abfrage ist echt super, weil man auch nach dem Schließen darauf zugreifen kann.
Jetzt habe ich in mühevoller Kleinarbeit ein Formular erstellt, funktioniert aber super.
Nun brauche ich nur noch einen schicken Printdialog wenn ich die Drucken- Taste klicke, aber das dürfte wohl kein Problem sein.
Vielen Dank für eure Hilfe, jetzt weiß ich ja wo ich fragen kann. *g*
Thankx a lot.
Sam
Also die Methode mit der abgespeicherten Abfrage ist echt super, weil man auch nach dem Schließen darauf zugreifen kann.
Jetzt habe ich in mühevoller Kleinarbeit ein Formular erstellt, funktioniert aber super.
Nun brauche ich nur noch einen schicken Printdialog wenn ich die Drucken- Taste klicke, aber das dürfte wohl kein Problem sein.
Vielen Dank für eure Hilfe, jetzt weiß ich ja wo ich fragen kann. *g*
Thankx a lot.
Sam
Antwort 14 von Armin
@Coolpix,
... ging mir auch so, daher habe ich einfach zunächst das formular (das ich als bericht ausgeben will) mit dem docmd.close geschlossen, da aber der vba code noch läuft, kann ich trotzdem mein kommando noch absetzen (siehe meinen beitrag oben.
gruesse armin
... ging mir auch so, daher habe ich einfach zunächst das formular (das ich als bericht ausgeben will) mit dem docmd.close geschlossen, da aber der vba code noch läuft, kann ich trotzdem mein kommando noch absetzen (siehe meinen beitrag oben.
gruesse armin
Antwort 15 von Coolpix
@Armin,
danke für die Info.
Manchmal sind es die Kleinigkeiten...
@Sam,
im Klickereignis deines Druck-Buttons:
einzig die Variable stDocName ist auf deinen Berichtsnamen anzupassen!
Greetings ;-)
danke für die Info.
Manchmal sind es die Kleinigkeiten...
@Sam,
im Klickereignis deines Druck-Buttons:
Private Sub cmdPrintBericht_Click()
'alles mit # ist automatisch vom Assistenten erstellt
'Abfrage ob gedruckt werden soll oder nicht
Select Case MsgBox("Soll der Bericht gedruckt werden ?", vbOKCancel + 0, "Drucken ?")
Case vbOK
GoTo OK
Case vbCancel
End Select
Exit Sub
OK:
On Error GoTo Err_Befehl7_Click '#
Dim stDocName As String '#
stDocName = "DeinBericht" '#
DoCmd.OpenReport stDocName, acNormal '#
' Erfolgsmeldung
MsgBox "Ausdruck von Bericht " & stDocName & " ausgeführt!"
Exit_Befehl7_Click: '#
Exit Sub '#
Err_Befehl7_Click: '#
MsgBox Err.Description '#
Resume Exit_Befehl7_Click '#
End Sub
einzig die Variable stDocName ist auf deinen Berichtsnamen anzupassen!
Greetings ;-)
Antwort 16 von Coolpix
@Armin
hab's grad' nochmal gecheckt...
keine Schlechte Sache das ! :)
is aber stark vom Aufbau des Formulars abhängig.
sieht bei 'nem Endlosfornular bestimmt gut aus !
Danke nochmal !
hab's grad' nochmal gecheckt...
keine Schlechte Sache das ! :)
is aber stark vom Aufbau des Formulars abhängig.
sieht bei 'nem Endlosfornular bestimmt gut aus !
Danke nochmal !
Antwort 17 von BenztownCitizen
Hallo !
@Coolpix
Das mit dem Print- Dialog währe ja gar nicht nötig gewesen, will doch auch noch was selber an meiner Technikerarbeit machen machen :-)
Ne, Spass, vielen Dank für Deine Hilfe, wird wahrscheinlich nicht das letzte mal gewesen sein, dass ich sie benötige.
(Thema der Arbeit: Wandeln von Exceltabellen in eine Datenbank mit komfortabler + ******sicherer Oberfläche auf VBA- Basis, für die Datenpflege).
Gruß
Sam
P.S.: In diesem Forum wird alles gegen Kraftausdrücke getan, deswegen die Sterne, ich wollte schreiben
@Coolpix
Das mit dem Print- Dialog währe ja gar nicht nötig gewesen, will doch auch noch was selber an meiner Technikerarbeit machen machen :-)
Ne, Spass, vielen Dank für Deine Hilfe, wird wahrscheinlich nicht das letzte mal gewesen sein, dass ich sie benötige.
(Thema der Arbeit: Wandeln von Exceltabellen in eine Datenbank mit komfortabler + ******sicherer Oberfläche auf VBA- Basis, für die Datenpflege).
Gruß
Sam
P.S.: In diesem Forum wird alles gegen Kraftausdrücke getan, deswegen die Sterne, ich wollte schreiben
I*diotensicherer , aber da hat er mir einen Smilie darus gemacht...ausgetrickst :-)
