Neuigkeiten:

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

Mobiles Hauptmenü

Beim Drucken Datensatz erzeugen

Begonnen von Daniel1990, Januar 12, 2015, 16:42:34

⏪ vorheriges - nächstes ⏩

Daniel1990

Hallo zusammen,

ich habe in meiner Access Datei eine Tabelle mit mehreren Bauteilen und den dazu nötigen Arbeitsschritten um diese zu erstellen. Über einen Bericht lasse ich eine Art anleitung erzeugen, welche ungefähr so aufgebaut ist:



Arbeitsschritt -Maschine -Bezeichnung
001 -Bohrmaschine -Loch Bohren
002 -Säge -Zersägen
002 -Kleberolle -Festkleben

Wenn ich den Bericht öffne, kann ich über Popupfenster die Bauteilnummer eingeben (für den Filter), dann noch die Stückzahl die als Vorgabe auf den Bericht gedruckt werden soll und das Datum für die geplante Fertigstellung. Das Ausgabedatum wird automatisch erzeugt ( mit =Datum() ).

Nun möchte ich nachhalten welche Arbeitskarten ich ausgegeben habe und hätte gerne, dass bei jedem Druck des Berichts ein Datensatz in einer Tabelle "Ausgestellte Aufträge" erzeugt wird mit der von mir eingegebenen Bauteilbezeichnung, Stückzahl, Ausgabedatum und geplantes Fertigstellungsdatum.
Leider finde ich nicht die Möglichkeit zu sagen "Beim Drucken einen Datensatz mit diesen Informationen in der Tabelle erstellen".
Kann mir da jemand helfen?

Viele Grüße und einen schönen Abend!

MzKlMu

Hallo,
Du kannst das Berichtsereignis "Beim Drucken" verwenden und eine Anfügeabfrage anstoßen die die Tabelle füllt.

Was soll passieren, wenn der Ausdruck einen Fehlér enthielt und wiederholt werden muss ?
Gruß Klaus

Daniel1990

Ist es dabei egal welchen Bereich (z.B. Berichtskopf, Detailbereich...) ich mit dem Berichtsereignis versehe?

Wie stoße ich denn solch eine Anfügeabfrage an und wo lege ich fest, welche Daten in die Tabelle kommen?

Falls ich mal etwas ausversehen drucke lösche ich es von Hand in der Tabelle, das ist kein Problem.

Viele Grüße
Daniel

MzKlMu

#3
Hallo,
das könnte so gehen.
CurrentDb.Execute "INSERT INTO AusgestellteAufträge ( Bauteilbezeichnung, Stückzahl, Ausgabedatum, Fertigstellungsdatum)" _
                  & " SELECT Bauteilbezeichnung, Stückzahl, Ausgabedatum, Fertigstellungsdatum" _
                  & " FROM Quelltabelle WHERE PSFeldTabelle = " & Me.PSFeldBericht, dbFailOnError

"Beim Drucken", der Bereich ist egal.

Quelltabelle = Die Tabelle des Berichts
PSFeldTabelle = Feld mit Primärschlüssel dieser Tabelle
PSFeldBericht = Feld das den PS im Bericht anzeigt

Namen anpassen.

PS:
In Feld und Objektnamen keine Leerzeichen "Ausgestellte Aufträge" = "AusgestellteAufträge"
Gruß Klaus

Daniel1990

Ahh, okay, vielen Dank schonmal dafür, ich probiere damit mal mein Glück!

Es ist nun allerdings so, dass die Stückzahl und das Fertigstellungsdatum aus keiner Tabelle kommen. Das wird einfach nur in Textfelder geschrieben die mit auf den Bericht gedruckt werden.

Das Feld wo meine Stückzahl drinsteht heißt in der Entwurfansicht z.B. "Text40". Kann ich den Inhalt davon dann auch in die neue Tabelle aufnehmen, mit der ich die Ausgegebenen Aufträge dokumentiere?

Viele Grüße
Daniel

MzKlMu

#5
Hallo,
versuche es mal so:
Dim FertDatum As String, StZahl As Long
FertDatum = Format(Me.FeldMitDatum, "\#yyyy\-mm\-dd\#")
StZahl = Me.FeldMitStZahl

CurrentDb.Execute "INSERT INTO AusgestellteAufträge ( Bauteilbezeichnung, Stückzahl, Ausgabedatum, Fertigstellungsdatum )" _
                  & " SELECT Bauteilbezeichnung, Ausgabedatum," & StZahl & " , " & FertDatum _
                  & " FROM Quelltabelle WHERE PSFeldTabelle = " & Me.PSFeldBericht, dbFailOnError

Benenne Deine Felder vernünftig, Text40 nicht geeignet.

ZitatDas wird einfach nur in Textfelder geschrieben die mit auf den Bericht gedruckt werden.
warum ? Was hindert Dich daran diese Inhalte auch in der Tabelle zu speichern ?
Was man im Formular eingibt, wird im Regelfall auch gespeichert.
Gruß Klaus

Daniel1990

Hallo Klaus,

ich habe es grad versucht, aber irgendwie will das nicht ganz.

Ich hänge dir die Datei mal an, damit du besser weißt wovon ich rede. Den Code habe ich im Berichtskopf eingefügt.
Beim Öffnen des Berichts wird nach Bauteil, Stückzahl, Charge und Fertigstellungsdatum gefragt.
Bauteil ist der Filter für den Bericht, wonach er alle Arbeitsschritte raussucht. Der rest ist nur zur Info drauf und kommt aus keiner Tabelle.
Der Bericht basiert auf der gleichnamigen Abfrage.

Findest du den Fehler im Code?

Zitat
ZitatDas wird einfach nur in Textfelder geschrieben die mit auf den Bericht gedruckt werden.
warum ? Was hindert Dich daran diese Inhalte auch in der Tabelle zu speichern ?
Was man im Formular eingibt, wird im Regelfall auch gespeichert.

Grundsätzlich hindert mich da nichts dran, bisher habe ich bloß keine Felder in der Tabelle die dies festhalten. Die Stückzahl variiert ohnehin immer und das Fertigstellungsdatum zwangsläufig auch.

Vielen Dank schonmal für deine Hilfe!!

MzKlMu

Hallo,
ich habe keine Möglichkeit mir ACCDBs anzusehen. Ich habe nur Access2003 (MDB) entweder konvertieren, oder warten.
Gruß Klaus

Daniel1990

Hallo,

eine Umwandlung ist nicht Möglich, da die Datenbank irgendwelche Features benutzt, die im alten Format wohl nicht möglich sind.
Dann heißt es wohl abwarten und Tee trinken ... :)

DF6GL

Hallo,

dann misch ich mich mal ein...


Die DB ist schon an der Basis sehr wackelig/falsch konstruiert.

Das Konzept selber passt nicht. Zudem sind die Tabellen nicht entspr. den Normalisierungsregeln erstellt.


Normalerweise hat man Stammdatentabellen für Artikel, Material, Arbeitsgänge, Maschinen, ArbeitsplanVorlagen, StücklistenVorlage, etc. und Arbeitstabellen für Aufträge, AuftragsArbeitsplan,AuftragsStückliste, (bzw. ArtikelArbeitsplan, ArtikelStückliste, wenn sich der akt. Arbeitsplan, bzw. akt. Stückliste sich am herzustellenden Artikel orientiert) etc.

Alle Tabellen besitzen ein(en) Primärschlüssel(Feld) und je nach Daten-Beziehung ein oder mehrere Fremdschlüsselfelder.

Grundsätzlich sind diese Beziehung im Beziehungsfenster mit ref. Integrität (mit Ausnahmen) zu definieren.


Wenn ein Arbeitsplan gedruckt wird, bzw. werden soll, dann erfolgt das über einen Bericht mit Basis (Datenherkunft) auf einer Abfrage, die alle Tabellen verknüpft, in denen die benötigten Daten hinterlegt sind. Alle Daten sind zu diesem Zeitpunkt in den Tabellen hinterlegt, außer evtl. den aus den gespeicherten Daten berechenbaren Werten.

Das erfolgte Ausdrucken eines Arbeitsplans wird über ein Datumsfeld ("gedrucktAm") oder ein anderes geeeignetes Statusfeld registriert.

Daniel1990

Guten Morgen,

danke für die Antwort!
Ja, stimmt schon, dass die Datenbank nicht ganz richtig aufgebaut ist. Das lässt sich jetzt jedoch leider nicht mehr ändern.
Sollte jedoch für das Erzeugen von den Tabelleneinträgen nicht so schlimm sein oder?

Viele Grüße!