Hallo zusammen,
ich bin neu im Forum und mir wurde in einer anderen Kategorie schon fix geholfen. Daher nun noch ein Beitrag von mir, den es hoffentlich nicht schon häufig gegeben hat.
Ich beschäftige mich mit Access 2016 und arbeite aktuell an der ersten Datenbank zur Erleichterung des Arbeitsalltages. :)
Kurze Situationsbeschreibung:
Es geht um eine Tabelle, in der Anforderungen für Bescheinigungen von verschiedenen Usern über ein entsprechendes Formular eingetragen werden können. Eine Anforderung kann mehrere Bescheinugungen enthalten. In einer weiteren Tabelle "Bescheinigungen" soll jede Bescheinigung eine eindeutige ID erhalten. Wenn also in einer Anforderung 3 Bescheigungen angefordert werden, so sollen in der Tabelle Bescheinigungen 3 Datensätze (ID 1;2 und 3) erzeugt werden. Ich würde das gerne mit einer Anfügeabfrage lösen.
Kennt jemand eine Lösung? Ich habe leider keine bzw. nur sehr begrenzte VBA Erfahrungen.
Vielen Dank vorab!
MfG EBGRN7893
Hallo,
dazu braucht es keine separate Anfügeabfrage und auch keinen Code, wenn gleich etwas Codeerfahrung (keine Makros!) das Leben ungemein erleichtert
Drei (evtl.mehrere) Tabellen:
tblAnforderungen:
AnfID (Autowert, Primärschlüssel)
Anf_Bezeichnung (Text)
Anf_Erstellungsdatum (Datum/Uhrzeit)
Anf_Anforderer (Text) Dies kann/sollte auch in eine weitere Tabelle "tblAnforderer" ausgelagert und über Schlüsselfelder in Beziehung gesetzt werden
Abf_xxxxx weitere Felder, die eine Anforderung als solche beschreiben
tblBescheinigungen
BeschID (Autowert, Primärschlüssel)
Besch_Bezeichnung (Text)
Besch_xxxx weitere Felder , die eine Bescheinigung näher definieren
tblAnforderungenBescheinigungen (Tabellenname sinnvoll abkürzen...)
ABID (Autowert,Primärschlüssel)
AB_AnfID (Long, Fremdschlüssel zu tblAnforderungen)
AB_BeschID (Long, Fremdschlüssel zu tblBescheinigungen)
AB_Ausgabedatum (Datum/Uhrzeit)
AB_Bearbeiter (Text)
AB_Notiz (Langer Text, Memo)
AB_xxxxx weitere evtl. erforderliche Felder
Beziehungen:
tblAnforderungen.AnfID --1:n-- tblAnforderungsbescheinigung.AB_AnfID --n:1-- tblBescheinigungen.BeschID
Drei Formulare für jede der Tabellen.
In frmAnfBesch (Datenherkunft tblAnforderungsbescheinigung) werden die Felder für die Schlüsselfelder ( AnfID,BeschID) als Konbifelder ausgeführt, die ihre Daten für deren Liste aus den entspr. Tabellen beziehen und für die Speicherung der Schlüsselfeldwerte sorgen.
Andere Konstellation ist auch denkbar:
Hauptformular für tblAnforderungen. Darin eingebaut ist ein UFO-Steuerelement, das frmAnfBesch (kann/sollte ein Endlosform sein) anzeigt und über die Schlüsselfelder verknüpft ("Verknüpfen von/nach").
Hallo,
vielen Dank für die schnelle Antwort. Das verstehe ich und hat auch testweise funktioniert.
Dann müssen die Datensätze für Bescheinigungen (in dem Fall 3) aber auch von Hand angelegt werden oder? Ich würde am liebsten, da hier auch Access unerfahrene User arbeiten sollen und manchmal auch 50-60 Bescheinigungen auf einmal angefordert werden, dass sich die Datensätze in tblBescheinigungen automatisch erzeugen. Daher kam der Gedanke mit der Anfügeabfrage.
In der tblAnforderung gibt es das Feld "AnzahlBescheinigungen". In Verbindung dazu müssen dann X Bescheinigungsdatensätze (alle mit dem Fremdschlüssel der AnforderungsID) erzeugt werden.
Ist das möglich/sinnvoll?
Hallo,
welchen Sinn ergibt es, massenhaft leere Bescheinigungen zu erstellen? Oder sind diese Bescheinigungen alle gleichartig?
Erklär mal anhand eines authentischen Beispiels, was es sich mit diesen Bescheinigungen auf sich hat und was das überhaupt ist.
Ok ich versuche das mal möglichst verständlich auszudrücken.
Wir sind sozusagen ein Markengeber für bestimmte Einkaufskonditionen. Unsere Standorte können per Anforderung eine Bescheinigung beantragen, um diese Konditionen zu erhalten. Je gekauftem Produkt benötigen die Standorte eine Bescheinigung.
Praktischer Fall:
Die Fa. Mustermann beantragt in einer Anforderung 25 eindeutige und einmalige Bescheinigungen. Wir benötigen also die Bescheinigungs-ID's 1-25. In diesen 25 Bescheinigungen steht dann sinngemäß immer und immer wieder "Die Fa. Mustermann ist berechtigt zu den Konditionen XY ein Geschäft im Namen des Markengebers zu tätigen".
Ich hoffe ich habe mich nicht umständlich ausgedrückt... :D
Dann sollte es aber auch 25 verschiedene Besch. geben.
Was unterscheidet die denn?
Wenn die alle gleich sind musst du sie doch nur einmal
speichern, um beliebig viele Kopien, in welcher Form auch
immer ausgeben zu können.
Bei einfachen Kopien hilft dies:
https://www.ms-office-forum.net/forum/showthread.php?t=298414 (https://www.ms-office-forum.net/forum/showthread.php?t=298414)
Hallo,
in diesen Fall ist eine Vervielfältigungstabelle eher überzogen.
Die Printout-Methode hat einen Anzahl-Kopien-Parameter, der den Drucker anweist, die angegebene Anzahl von Kopien eines Berichtes auszudrucken.
Egal wieviel Kopien benötigt werden, es muss lediglich einmal die entspr. Bescheinigung mit dem gewünschten Text (der sicherlich auch variieren kann) dem Kunden zugewiesen werden.
Guten Morgen zusammen,
danke für die Anregungen.
Betriebsblindheit lässt grüßen. :D
Ich hätte natürlich dazu sagen müssen, dass die BescheinigungsID auf der jeweiligen Bescheinigung abgedruckt werden muss. Diese müssen wir aus Revisionsgründen nachhalten. In den Verkaufsakten der jeweiligen Produkte müssen die Nachweise archiviert werden und werden bei Revision sehr genau mit unserer Versandliste abgeglichen.
Das ist dann im Grunde auch die einzige Unterscheidung der Nachweise. Also nochmal zurück zum Beispiel: 25 Bescheinigungen für die Fa. Mustermann, grundlegend identisch, da damit 25 x ein und dasselbe Produkt bezogen wird. Unterscheiden tun sich dann nur die abgedruckten ID's zur Revisionsprüfung.
Hallo,
wenn die Bescheinigungen allesamt identisch sind für eine Anforderung , dann hat eine "ID" keine sinnvolle Bedeutung, außer die, die Ausdrucke selber zu unterscheiden.
Diese "ID" (laufende Nr pro Anforderung) kann einfach mit einer laufenden Summe im Bericht berechnet und ausgedruckt werden. Dann allerdings funktioniert Printout mit Kopienanzahl-Angabe nicht mehr und müsste entspr. der SQL-Lösung oder mittels VBA-Schleife über die aktuelle Anzahl ausgedruckt werden.
Sinnvoll wäre der zusätzliche Ausdruck des Druckdatums (oder eines Ausstellungsdatums), um damit einen Bezug zu den DS in tblAnforderungenBescheinigungen zu erhalten. Die Anzahl der BescheinigungsAusdrucke je Anforderung muss ebenfalls mit abgelegt werden.
Hallo,
wenn dann die nächste Anforderung von einem anderen Standort kommt, muss allerdings mit Bescheinigung 26 weitergemacht werden, dann 27, usw...
Geht das auch mit dem Counter im Bericht, dass dieser immer weiterzählt? Wenn das möglich ist, wäre das sicherlich eine Lösung des Problems.
Hallo,
das ist eine neue und bisher nicht so definierte Anforderung an die Bescheinigung..
Das heißt, die Bescheinigungen müssen als solche grundsätzlich mit einer fortlaufenden Nr ("ID") versehen werden, unabhängig vom Anforderer?
Gib es da auch einen Startwert?
Wenn so, könnte das mit einer weiteren Tabelle, in der die "ID" der zuletzt ausgedruckten Bescheinigung festgehalten wird, gelöst werden. Die Berechnung der ID des aktuellen Ausdrucks wäre weiterhin im Bericht als laufende Summe möglich.
Hallo,
bitte entschuldige das. Ich bin leider noch nicht so besonders firm. Ich gelobe Besserung :)
Genau, der Zähler für die "ID" muss immer weiter laufen, vollkommen egal wer angefordert hat. Nach einigen Jahren werden wir sicherlich im 5-stelligen Bereich landen.
Der Startwert könnte ohne Probleme bei 1 liegen.
Verstehe ich richtig, dass dann folgender Ansatz umgesetzt werden kann:
-In einer Anforderung der Fa. Mustermann werden 25 Bescheinigungen angefordert.
-Die Tabelle "letzteIDBesch" ist noch leer.
-Druck des Berichts "Bescheinigung" 25 mal jeweils mit ID (ID's 1-25)
-Der letzte gedruckte ID Wert (hier 25) schreibt sich in die Tabelle "letzteIDBesch"
-Neue Anforderung der Fa. Mannmuster mit 3 Bescheinigungen
-Die Tabelle "letzteIDBesch" hat einen Wert 25 gespeichert.
-Druck des Berichts "Bescheinigung" 3 mal jeweils mit ID (letzter Wert +1) (ID's 26-28)
-Der letzte gedruckte ID Wert (hier 28) schreibt sich in die Tabelle "letzteIDBesch"
-and so on ...
Wenn ich das so richtig verstanden habe, wäre ich für Schützenhilfe das praktisch umzusetzen extrem dankbar...
Hallo,
ja, im Prinzip ist das so richtig.
Allein die "tbl_LetzteIDBesch" erhält anfänglich auch einen (Start-)Wert, ab der die Zählung beginnt.
Zu beachten ist, dass ein "Block" von Bescheinigungen ( z. B. ID 1-25 oder ID 26-28 aus dem Beispiel als jeweils ein DS in tblAnforderungenBescheinigungen" gespeichert werden muss, weil die diesbezüglichen Bescheinigungen durchaus anderen Text beinhalten können.
Wenn der Druck über einen VBA-Schleife erfolgt, kann die akt. ID auch mit VBA berechnet und an den (Einzel-)Berichtsausdruck übergeben werden.
Bau jetzt erst mal die Tabellen mit allen nötigen Feldern auf und setz sie wie vorher angegeben in Beziehung zueinander. Dann erstell die Formulare wie angegeben. Dann sehen wir weiter...
(Oder auch hier: https://www.access-o-mania.de/forum/index.php?topic=6969.0 )
Guten Morgen,
vielen Dank für die Hilfestellung.
Ich denke ich bin jetzt soweit. Die Tabellen und Formulare stehen alle. Die Tabelle "letzteIDBesch" ist angelegt und hat einen "Startdatensatz" mit Wert 1. Der Bericht ist angelegt und funktioniert, wenn auch bisher ohne den Abdruck der einzelnen sog. "Berichts-ID".
Mir fehlt jetzt also noch, dass der Bericht die Start-ID in der Tabelle "letzteIDBesch" sucht, +1 rechnet und dann x mal ausdruckt, dabei den Zähler jeweils um 1 hochsetzt und final den letzten Wert wieder in die Tabelle "letzteIDBesch" schreibt. Wie kann ich dem Bericht sagen, dass er so viele Kopien, wie im Datensatz XY im Feld "Anzahl" angegeben, erstellt?
Besten Dank im Voraus.
Hallo,
lad mal die DB hier hoch, repariert/komprimiert und gezippt.