Ich habe in einer Tabelle rund 110 DS.
Die Tabelle ist mit zwei weiteren in einer Abfrage verknüpft, und diese Abfrage ist Basis für ein Formular "KundenberichtAbfrage"
Bis dahin hat alles geklappt.
Nun will ich das gerade aufgerufene Formular drucken. Hierfür lege ich einen Button an "Formularoptionen - nur ein Formular drucken", aber es werden alle 110 DS gedruckt (wenn ich den Druck nicht vorher abbreche.)
Wie schaffe ich es, dass nur der angezeigte DS gedruckt wird?
Wäre es eine Alternative, als Pendant zum Formular einen Bericht zu erstellen (Quasi als Zwilling)?
Dann könnte ich aus dem gerade bearbeitenden Formular per Button den Bericht drucken, oder??
Axel
Hallo,
Formulare sind nur bedingt zum Ausdrucken geeignet. Wenn du nur den aktuellen DS drucken willst, musst du das Formular filtern vor dem Drucken.
Besser jedoch wäre es, einen Bericht zu erstellen und ihn mit Übergabe eines Filterkriteriums aus dem Formular heraus zu öffnen.
Hi,
siehe www.donkarl.com?FAQ5.9 (http://www.donkarl.com?FAQ5.9)
Mit dem Hinweis bei Donkarl komme ich leider nciht klar, aber MaggieMae hat eigentlich das bestätigt, was ich gefragt hatte.
Ich habe also nun einen "BEricht" erstellt, der sich wie das Formular auf die gleiche Abfrage bezieht.
So, nun stehe ich allerdings wider vor einem Berg.
In das Formular habe ich einen Button zum Aufruf des Berichts eingebaut.
Beim Klicken:
Private Sub Befehl35_Click()
On Error GoTo Err_Befehl35_Click
Dim stDocName As String
stDocName = "KundenBerichtAbfrage"
DoCmd.OpenReport stDocName, acPreview
Exit_Befehl35_Click:
Exit Sub
Err_Befehl35_Click:
MsgBox Err.Description
Resume Exit_Befehl35_Click
End Sub
Ich rufe also im Formular den Kunden "Müller" auf, das entsprechende Kundenblatt erscheint. Nun klicke ich auf den Button, aber da kommt der Bericht zu dem ersten Kunden aus der Tabelle, also ein Kunde mit "A......."
Wie komme ich denn nun dahin, dass bei Anklicken auch der Bericht zu "Müller" erscheint und damit gedruckt werden kann?
Axel
Hallo,
warum kommst Du mit Donkarl nicht klar?
Mehr als dort und besser kann es doch nicht beschrieben werden..
Zitat
Bei einem Zahlfeld:
DoCmd.OpenReport "DeinBericht", , , "Id =" & Me!Id
bei einem Textfeld:
DoCmd.OpenReport "DeinBericht", , , "Firma = '" & Me!Firma & "'"
WO kommst Du da nicht klar?
Ganz einfach, Franz,
weil ich mit Programmieren nciht sehr vertraut bin und wirklich nicht weiss, wo ich eine der beiden Donkarl-Versionen einsetzen müsste, abgesehen davon, dass ich nicht weiss, ob das dann auch so funktioniert, wie ich mir das vorstelle.
Hallo,
zum Einen: Du musst doch aber wissen, ob es ein ID-Zahlenfeld (Primärschlüssel) oder nur ein Firmennamen-Feld gibt. (Schau halt mal in der Tabelle nach, zudem sollte es ein Formularfeld geben, das den ID-Wert, respektive den Kundennamen anzeigt, auch wenn es auf unsichtbar gesetzt sein sollte) Ersteres ist (in aller Regel) ein Zahlenfeld, letzteres ein Textfeld.
"... wo ich ..."
Na hier:
DoCmd.OpenReport stDocName, acPreview,,"KundID = " & Me!KundID
Das ist der "Where-Condition"-Parameter , der dafür sorgt, dass der Bericht nur den Datensatz mit der Kunden-ID anzeigt, d. h. der Bericht wird nach der Kunden-ID gefiltert.
Zum Anderen: Das siehst Du ganz schnell, wenn Du es ausprobierst....
Also .......
das Formular wird über "ksort" aufgerufen, also den Kundenkurzname.
Nun habe ich versucht, Deinen Hinweis für mich anzupassen und die Zeile DoCmd...
wie folgt abgeändert:
DoCmd.OpenReport stDocName, acPreview, , "Ksort = " & Me!ksort
Nun wird zwar der Bericht aufgerufen, aber jetzt kommt ein Fenster:
Parameterwert eingeben, und der Name des Kunden "Müller" steht über der Leerzeile.
Gebe ich nun in die Leerzeile "Müller" ein, kommt tatsächlich der "Müller-Bericht". Prima!
Frage: kann man den Schritt der erneuten Kundennamen-Eingabe irgendwie vermeiden / überspringen?
Hi,
was passiert mit:
DoCmd.OpenReport stDocName, acPreview, , "Ksort = '" & Me!ksort & "'"
Harald
Super, herzlichen Dank an die Helfer und ein schönes Wochenende
PS: ich "drohe" schon an, demnächst weitere dumme Fragen zu stellen !!!