Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Daten für Bericht auswählen

Begonnen von squooshie, Februar 21, 2011, 10:30:19

⏪ vorheriges - nächstes ⏩

squooshie

Guten Morgen allerseits,

ich möchte den vorliegenden Bericht "Apparateliste" so umbauen, dass ich vorher auswählen kann, welche Apparate angezeigt werden sollen.

Am Besten eine Auswahl der einzelnen Apparate mittels "Häkchen setzen", sowie die Auswahl aller Apparate in einem Bestimmten Bereich (Bau).

Leider weiss ich nicht so recht wie ich das anstellen soll.

Ein weiteres Problem ist, dass im Bericht in der Spalte "Dichtung" anstatt der hinterlegten Bezeichnung nur die dazugehörige ID angezeigt wird. Leider haben all meine Versuche dies zu ändern nichts gebracht.

Ich hoffe ihr könnt mir dabei helfen.

Gruß

Squooshie

zur Info

Ich nutze die Datenbank mit Access 2007.

[Anhang gelöscht durch Administrator]

database

Hallo,

dazu gibt es verschiedene Lösungswege.

Du KÖNNTEST ein Formular in Form eines Endlosformulars nehmen und in diesem eine Checkbox anzeigen.
Die Checkbox wiederum ist an ein Feld in deiner Herkunftstabelle gebunden (drucken - Ja/Nein)
Im besagten Formular zeigst du alle Apparate an und die gewünschten hakst du an.

Über einen Buttonklick öffnest du den Bericht, dessen Datenherkunft eine Abfrage sein sollte,
die ihrerseits auf die Datensätze eingeschränkt ist, deren 'drucken'-Feld den Wert -1 aufweist.

Zitatanstatt der hinterlegten Bezeichnung nur die dazugehörige ID
Hier dürfte ein Nachschlagefeld in der Herkunftstabelle vorhanden sein.
Nimm das raus, nimm die Nachschlagetabelle in die Abfraage auf und binde das benötigte Textfeld in die Spaltenliste ein.

HTH

squooshie

Danke für den Tipp!

Leider bekomme ich das nicht so recht hin.

Habe jetzt ein neues Formular erstellt in dem in einem Listenfeld die einzelnen Apparate angezeigt werden. Mit einem hinzugefügten Kontrollkästchen kann ich in der erstellten "drucken" Spalte für das Erste Element der Liste einen Wert einstellen. Die Werte der anderen Apparate kann ich jedoch mit diesem Kontrollfeld nicht verändern.

Das erwähnte Nachschlagefeld habe ich ebenfalls nicht finden können.

DF6GL

Hallo,

niemand hat von einem Listenfeld in einem Form gesprochen...


Die Checkbox muß in der Tabelle als Ja/Nein-Feld hinzugefügt werden.
Die Datensätze müssen mit dem (Endlos-) Form angezeigt werden (Felder im Detailbereich des Forms)


In der Tabelle findest Du das Nachschlagefeld (Kombifeld) in den Eigenschaften beim Feld "Bezeichnung"

squooshie

Ich finde in der Tabelle mit den Ausgangswerten lediglich die Bezeichnung Textfeld und nicht Kombifeld.

Habe die anderen Sachen jetzt nach Vorgabe umgeändert und es sieht schonmal ganz gut aus. Leider wird jedoch beim Anklicken des neuen Buttons direkt alles gedruckt / in OneNote eingefügt. Beim Button ist folgender Code hinterlegt:

Private Sub Befehl5_Click()
    DoCmd.OpenReport "Apparateliste", , , drucken = -1
End Sub

Wie ändere ich das, damit nur die im Bereich "drucken" ausgewählten Apparate ausgedruckt werden? Und wie ändere ich die Ausgabe? Die Daten sollen an einen Drucker gesendet werden, nicht an OneNote

DF6GL

Hallo,




DoCmd.OpenReport "Apparateliste", acPREVIEW  , , "drucken = -1"


schau mal in die VBA-Hilfe zu Openreport..

Die Ausgabe erfolgt direkt auf den Standarddrucker, wenn acPreview fehlt .   Wenn acPreview angegeben ist, erfolgt eine Vorschau auf dem Bildschirm, und hier kannst Du mit Datei/Drucken einen passenden Drucker auswählen.

squooshie

Besten Dank, diese Info hat mir schonmal ganz gut weiter geholfen.

Ich habe nun folgendes gemacht:

Eine Abfrage mit Namen "Vorauswahl für Bericht", die nur die Apparate anzeigt, die über den Kontrollkasten ausgewählt sind. Nun möchte ich über den bereits vorhandenen "drucken" Knopf nur die von der Abfrage ausgewählten Apparate ausdrucken. Leider hapert es dabei jedoch noch etwas.

Wie kann ich diese Anforderung noch in den Druck- Befehl einbauen? Momentan sieht er so aus:

DoCmd.OpenReport "Apparateliste", acPreview, , [Apparateliste_Apparatebezeichnung] Like [Vorauswahl für Bericht.Apparatebezeichnung]

aber das funktioniert leider nicht.

DF6GL

Hallo,

jetzt versteh ich Dein Problem nicht..

Wenn die Abfrage eh schon die gewünschten Datensätze liefert, dann brauchst Du kein Kriterium (Where-Condition-Parameter) bei Openreport...

(Weiterhin: Die Syntax Deiner Codezeile ist beim Kriterium fehlerhaft)


squooshie

Der Befehl Openreport befindet sich aber in einem Formular in dem noch alle Apparate aufgelistet sind. Wenn ich den Befehl ausführe zeigt er mir den gewünschten Bericht, jedoch ohne die gemachten Einschränkungen bzw er zeigt alle Apparate und nicht nur die ausgewählten.


Und mir gelingt es leider nicht im Bericht nur die im Formular gewählten Apparate auszugeben, weil ich nicht weiss, wie ich das dort einbauen soll.

Also habe ich versucht mit einer Abfrage nur die gewünschten Apparate anzuzeigen und diese dann direkt im Bericht auszugeben. Das klappt jedoch aus irgendeinem Grund auch nicht.

Wie genau muss ich das also einbauen?

Und was ist an der Syntax falsch?

DF6GL

Hallo,

ich interpretiere das jetzt so, dass im Bericht (mit Datenherkunft direkt zur Tabelle)  nicht die im Formular(!) akt. markierten (mittels Vorschlag von database) DS ausgegeben werden.



"weil ich nicht weiss, wie ich das dort einbauen soll."

was genau weißt Du da nicht?  

Du hast doch selber diesen Code gepostet:

(und von mir korrigiert)

Private Sub Befehl5_Click()
   DoCmd.OpenReport "Apparateliste", acPreview , ," drucken = -1"
End Sub


Wenn mit diesem Code nicht die richtigen (markierten) Datensätze gedruckt/angezeigt werden, dann sind vermutlich die/die  DS noch nicht in die Tabelle gespeichert.  Benutz dann diesen Code:

Private Sub Befehl5_Click()
Runcommand acCmdSaverecord
   DoCmd.OpenReport "Apparateliste", acPreview , ," drucken = -1"
End Sub


Wenn für diesen Bericht eine Abfrage benutzt wird, dann muss darin das Feld "drucken" enthalten sein.

squooshie

Zitatich interpretiere das jetzt so, dass im Bericht (mit Datenherkunft direkt zur Tabelle)  nicht die im Formular(!) akt. markierten (mittels Vorschlag von database) DS ausgegeben werden.

Genau so ist es.

ZitatWenn mit diesem Code nicht die richtigen (markierten) Datensätze gedruckt/angezeigt werden, dann sind vermutlich die/die  DS noch nicht in die Tabelle gespeichert.  Benutz dann diesen Code:

Private Sub Befehl5_Click()
Runcommand acCmdSaverecord
    DoCmd.OpenReport "Apparateliste", acPreview , ," drucken = -1"
End Sub

Leider klappt es auch mit diesem Code nicht, es werden ganz stur alle Daten ausgegeben, inklusive der Ausgewählten.

Kann es sein, dass die "-1" beim Befehl drucken nicht richtig ist?

Die Daten für den Bericht werden direkt aus den entsprechenden Tabellen entnommen. Muss in dem Bericht denn auch das Feld "drucken" vorhanden sein? Das ergibt dort ja im Grunde genommen keinen Sinn, deshalb habe ich es dort nicht eingebaut.

ZitatWenn mit diesem Code nicht die richtigen (markierten) Datensätze gedruckt/angezeigt werden, dann sind vermutlich die/die  DS noch nicht in die Tabelle gespeichert.

In der Ursprungstabelle sind die entsprechenden Apparate in der Zeile "drucken" markiert.


DF6GL

Hallo,


ZitatKann es sein, dass die "-1" beim Befehl drucken nicht richtig ist?


Wenn das Tabellenfeld "drucken" den Datentyp Ja/Nein aufweist, dann hat (in Access) ein solches markiertes Feld den Wert -1
Schreib ansonsten mal:

DoCmd.OpenReport "Apparateliste", acPreview , ," drucken <>0"

Zitat
Die Daten für den Bericht werden direkt aus den entsprechenden Tabellen entnommen.

Wieso Mehrzahl? Dann wird doch eine Abfrage benutzt, die nicht gruppiert und (hoffentlich) richtig über die verschiedenen Tabelle verknüpft

Was liefert denn die Abfrage, wenn sie selbstständig geöffnet wird?



Zitat..sind die entsprechenden Apparate in der Zeile "drucken" markiert.

Du meinst schon "Spalten" ?


squooshie

ZitatSchreib ansonsten mal:

DoCmd.OpenReport "Apparateliste", acPreview , ," drucken <>0"

Wenn ich das so mache, kommt ein Fenster in dem ich einen Wert für "drucken" eingeben soll. Wenn ich 0 eingebe, wird ein leerer Bericht angezeigt , bei 1/-1 wird der vollständige Bericht angezeigt.

ZitatWieso Mehrzahl? Dann wird doch eine Abfrage benutzt, die nicht gruppiert und (hoffentlich) richtig über die verschiedenen Tabelle verknüpft

Was liefert denn die Abfrage, wenn sie selbstständig geöffnet wird?

Ich benutze keine Abfrage, wenn es nichts ausmacht bitte mal kurz in die angehängte DB schauen, dann wird vlt klar was ich überhaupt mache  :).

Ich beziehe die Daten aus der Tabelle Apparateliste sowie dem Unterdatenblatt welches der Tabelle Flansche entspricht. Die Auswahl, was gedruckt werden soll, wird im Formular Apparateliste1 gemacht und dort wird dann der gewünschte Bericht Apparateliste geöffnet.

ZitatDu meinst schon "Spalten" ?

Ja genau, oder halt vertikale Zeilen, wie ich sie insgeheim nenne  :D

[Anhang gelöscht durch Administrator]

DF6GL

Hallo,

mhmm, ja, jetzt wird einiges klar..   :o  ;)

1)  Tabellen sind nicht normalisiert.
2) Es sind so gut wie keine Beziehungen gesetzt.
3) Nachschlagefelder in Tabellen sind NICHT(!!!) empfohlen.
4) Verwendung von Sonder-/Leerzeichen in Namen ist NICHT empfohlen .
5) Der Bericht "Apparateliste" BASIERT auf einer Abfrage (SQL-String in dessen Datenherkunft):

SELECT Apparateliste.Apparatebezeichnung AS Apparateliste_Apparatebezeichnung, Apparateliste.[Medium 1], Apparateliste.[Medium 2], Apparateliste.[Medium 3], Apparateliste.Druck, Apparateliste.Temperatur, Apparateliste.Bau, Apparateliste.[Zeichnungs-Nr], Apparateliste.Hersteller, Flansche.Apparatebezeichnung AS Flansche_Apparatebezeichnung, Flansche.Nennweite, Flansche.Nenndruck, Flansche.Dichtung, Flansche.Schraubenart, Flansche.Schraubengroeße, Flansche.[U - Scheiben], Flansche.Schmiermittel, Flansche.Anziehwerkzeug, Flansche.Anziehverfahren, Flansche.Anziehschritte, Flansche.Drehmoment, Flansche.Flanschbezeichnung, Flansche.Anzahl, Flansche.Norm
FROM Apparateliste LEFT JOIN Flansche ON Apparateliste.Apparatebezeichnung = Flansche.Apparatebezeichnung;


Hier FEHLT das Feld "drucken" und kann demzufolge nicht beim Berichtsaufruf angesprochen werden.


6) Schreib in JEDEN Modulkopf "Option Explicit" hinein und setz den Haken bei VBA-Editor/Extras/Optionen/Variablendeklaration erforderlich".




sorry, wenn ich die DB gleich so vehement zerpflücke, aber Du tust Dir(!) nichts Gutes, wenn Du diese Schwachstellen nicht von vorherein ausmerzt.





squooshie

sorry, wenn ich die DB gleich so vehement zerpflücke, aber Du tust Dir(!) nichts Gutes, wenn Du diese Schwachstellen nicht von vorherein ausmerzt.

Gar kein Problem. Ich bin für jede Kritik dankbar, da es ewig her ist, dass ich kurz mit Access gearbeitet habe und deshalb viele Dinge nicht mehr weiss.

Werde dann jetzt mal versuchen alle deine Kritikpunkte auszubessern.