Hallo,
ich habe 2 Tabellen:
1 : Tbl_DT_ERFASSUNG
2 : Tbl_DT_Colli
Tbl_DT_ERFASSUNG hat folgende Felder
- DT_ID = Autowert + PK
- Lieferschein_Nr = Zahl
- Absender_Name = Txt
- Abs_Land= Txt
- Abs_Plz= Txt
- Abs_Ort= Txt
- EMPFänger_Name
- EMPF_Land= Txt
- EMPF_Plz= Txt
- EMPF_Ort= Txt
- Ladedatum = Date
- Entladedatum = Date
- Spedition_Name_ID = Zahl
- TOUR_Nr = Zahl
Tbl_DT_Colli hat folgende Felder
- CLL_ID = Autowert + ÜK
- DT_ID = Zahl
- Lieferschein_Nr = Zahl
- Anzahl_Packstücke = Zahl
- Länge = Zahl
- Breite = Zahl
- Höhe = Zahl
- Kg = Zahl
- TOUR_Nr = Zahl
Die Tbl sind wie folgt verknüpft
1 : Tbl_DT_ERFASSUNG DT_ID
2 : Tbl_DT_Colli DT_ID
Die Tour Nr wird in Tbl_DT_ERFASSUNG[TourNr] eingegeben und an jeden einzelnen DS der das Kriterium Where DT_ID = DT_ID entspricht an Tbl_DT_Colli in das Feld TOURNr übergeben.
zu Tabelle Tbl_DT_ERFASSUNG ist noch zu sagen, dass wir hier Lieferscheine erfassen. Das dumme ist leider nur, dass wir zb 5 verschiedene Lieferscheine am selben Tag zum selben Empfänger haben.
Ich möchte die Tabelle Tbl_DT_ERFASSUNG zusammenfassen
Dabei werden diese Felder in einer Abfrage gruppiert :
- Absender_Name = Txt
- Abs_Land= Txt
- Abs_Plz= Txt
- Abs_Ort= Txt
- EMPFänger_Name
- EMPF_Land= Txt
- EMPF_Plz= Txt
- EMPF_Ort= Txt
- Ladedatum = Date
- Entladedatum = Date
- Spedition_Name_ID = Zahl
- TOUR_Nr = Zahl
Bisher auch noch kein Problem.
Nun möchte ich aber nur einen "Lieferschein " für alle Lieferscheine die eben dieser Gruppierung entsprechen erstellen aber dabei die Colli die genau an den selben Empfänger gehen einzeln aufgeführt bekommen.
etwa so :
Im Lieferschein Kopf sollen folgende Daten stehen
- Absender_Name = Txt
- Abs_Land= Txt
- Abs_Plz= Txt
- Abs_Ort= Txt
- EMPFänger_Name
- EMPF_Land= Txt
- EMPF_Plz= Txt
- EMPF_Ort= Txt
- Ladedatum = Date
- Entladedatum = Date
- Spedition_Name_ID = Zahl
- TOUR_Nr = Zahl
Darunter sollen dann alle Colli, die zu den o.g. zusammengefassten Datensätzen gehören, angezeigt werden :
- CLL_ID = Autowert + ÜK
- DT_ID = Zahl
- Lieferschein_Nr = Zahl
- Anzahl_Packstücke = Zahl
- Länge = Zahl
- Breite = Zahl
- Höhe = Zahl
- Kg = Zahl
- TOUR_Nr = Zahl
Ich hoffe man versteht was ich möchte :)
hat jemand einen Vorschlag ?
Danke
Gruss
Bernie
Hi,
mein Lösungsvorschlag: zusätzliche Abfrage, die Empfänger und Datum zusammenfasst (unique).
Dadrunter dann die Erfassungstabelle und dann die Colli-Tabelle.
Siehe mini-Beispiel im Anhang.
War das damit gemeint?
Harald
[Anhang gelöscht durch Administrator]
Hi Harald.
vielen Dank ersteinmal.
Ich bekomme es nicht hin.
Hängt mit der Tour Nr zusammen.
Die Tour Nummer verbindet einen Datensatz aus Tbl_DT_Erfassungmit einem LKW
Nun kann es vorkommen, dass 2 unterschiedliche Fahrzeuge eine Lieferung an ein und den selben Empfänger bringen.
Somit muss die Tour in die 0-Abfrage.
Wenn ich das miteinbaue, dass zeigt er mir aber Datensätze doppelt.
Gruss
Bernie
Hi Bernie,
kannst Du eine mini-Datenbank mit ein paar Spiel-Daten zur Verfügung stellen?
Harald
Hallo Bernie,
Wie wär's, in der Tabelle Tbl_DT_ERFASSUNG ein zusätzliches Feld "ParentLieferscheinNr" einzufügen.
Bei Sammel-Lieferscheinen bleibt das leer, und bei den Einzelscheinen kommt die Sammellieferschein-Nummer rein.
Da kannst Du für EINE Lieferung EINEN Lieferschein drucken, die einzelnen aber auch weiterhin einzeln bearbeiten (unterschiedliche Touren/Spediteure oder was auch immer).
hth
gruss ekkehard
Hallo,
mir scheint halt, dass es sich hier um ein Problem handelt, das in diesem Forum unzählige Male besprochen wurde.
Wenn ich deine Tabellendefinitionen ansehe darf ich feststellen, daß die von einer Normalisierung weit entfernt sind.
Wenn das dann auch auf die verbundenen Tabellen LKW und Speditionen in der Weise zutrifft, wundert es mich nicht
wenn sich deine Datensätze in den Abfragen verdoppeln oder gar noch höher vervielfältigen.
Wo und wie werden die Lieferscheinnummern erzeugt? Liefert die Lieferscheinnummer eine weitere Tabelle?
Woher kommt die Tour_Nr? Werden Touren extra in Tabelle(n) zusammengestellt?
Warum steht die Lieferscheinnummer in beiden Tabellen, warum die Tournummer?
Das sind ein Teil der Fragen, die beim Ansehen der beiden Tabellen auftauchen.
@Beaker
Es wird nicht viel bringen - und ich würde persönlich davon abraten - in dieses Tabellenkonstrukt ein Feld zu quetschen
um die Fehler der Vergangenheit zu umgehen. Das Problem ist nämlich dann die nächste Auswertung - mit neuen Fehlern und neuen Ungereimtheiten
Ich würde eher dafür plädieren das 'alte' Modell auf Vordermann zu bringen.
Hi Harald,
anbei die Datei mit Spielzeugdaten.
So in etwa sieht meine DB aus
@ Data
ZitatWenn ich deine Tabellendefinitionen ansehe darf ich feststellen, daß die von einer Normalisierung weit entfernt sind.
Ok was ist falsch daran ?
Die LieferscheinNr wird manuell eingetragen und nicht durch Access erzeugt.
Im prinzip läuft das ganze so :
Wir importieren Daten aus unserem Warenwirtschafsprogramm (Navision)
Die Daten sind hauptsächlich Adressdaten.
Diese Daten werden in die Tabelle DT_Erfassung eingespielt. (Copy / Paste )
Dann wird ein LS aus Navision gedruckt und wir erfassen die LS Nr in Tbl_DT_Erfassung und in einem UFo die jeweiligen Packstuecke mit Massen / Kg in Tbl_DT_Colli
Ein Datensatz aus Navision = ein Lieferschein.
So und nun das Problem.
Wir haben mehrere DS und somit mehrere Lieferscheine an ein und den selben Empfänger
Warum dem so ist..das hängt mit dem Bestand der Ware zusammen. Da fast nie eine Lieferung vollständig ist, hängt wiederum mit Wareneingängen zusammen, lässt das sich nicht anders umsetzten.
So und nun möchte ich eben einen HauptLieferschein ausgedruckt bekommen,
der die ganzen Datensätze aus
Tbl_DT_Erfassung je Absender, Ladedatum, Empfänger, Entadedatum und Tour Nr zusammenfasst und dabei die einzelnen Colli / und LieferscheinNrn aus
Tbl_DT_Colli , die zu den o.g zusammengefassten daten aus
Tbl_DT_Erfassung gehören, darunter einzeln anzeigt.
Gruss Bernie
[Anhang gelöscht durch Administrator]
Moin Bernie,
anbei ein Vorschlag: siehe Anhang
Er baut auf die Gruppierung im Bericht auf.
Es gibt zwei neue Berichte "Bericht_Test" und "Bericht_Test_TourNr". Bei dem letzteren wird für die TourNr ein eigener Lieferschein (d.h. eine eigene Seite) erstellt.
Und noch ein paar Eindrücke, die eventuell auch durch mein mangelndes Verständnis verursacht sind:
in der Tabelle Erfassung gibt es nicht dt_id, sondern nur id_Lief mit "indiziert ja (Duplikate möglich)"
=> habe das in "indiziert ja (ohne Duplikate)" und Primärschlüssel umgewandelt und als Ersatz für dt_id verwendet.
im Bericht1 fehlt die Abfrage1
=> habe mir eine eigene erstellt
Die Adress-Daten sollten in eine eigene Tabelle, die dann mit der Tabelle Erfassung über eine Adress_ID verknüpft sind.
Das hat dann auch den Vorteil, dass über eine eindeutige Adress_ID die Gruppierung im Bericht leichter wird. Ohne diese ID müssten die Unterscheidungsfelder im Kopf einzeln aufgeführt werden und man erreicht dann schnell die maximal mögliche Zahl an Gruppierungen.
Im Bericht habe ich die nicht vorhandenen Felder getauscht in:
"Empfaenger" => "Empfaenger_Name"
"Lief_Datum" => "Entlade_Datum"
"Land" => "Empfaenger_Land"
Das betrifft die zu druckenden Steuerelemente und z.T. die Gruppierung/Sortierung.
"Spedition_Name_ID" habe ich in dieser "light"-Version nicht gefunden.
Wieso wird die Tour_Nr in zwei Tabellen erfasst?
Wieso ist in der Tabelle "Colli" zur "TourNr = 1" bei "DT_ID" 1 und 2 vorhanden?
Die TourNr ist mit LKW "A" bzw. "B" verknüpft. Wenn also nicht zufällig beide LKW's gleichzeitig ankommen, sind das doch verschiedene Lieferungen.
Wieso ist die LieferscheinNr auch in der Tabelle "Colli" vorhanden?
Wenn das notwendig ist: Warum ist dort das Feld nicht immer gefüllt?
Harald
[Anhang gelöscht durch Administrator]
Hi Harald,
danke ersteinmal.
Ok um ersteinmal ein paar Fragen zu beantworten.
ZitatDie Adress-Daten sollten in eine eigene Tabelle, die dann mit der Tabelle Erfassung über eine Adress_ID verknüpft sind.
Das hat dann auch den Vorteil, dass über eine eindeutige Adress_ID die Gruppierung im Bericht leichter wird. Ohne diese ID müssten die Unterscheidungsfelder im Kopf einzeln aufgeführt werden und man erreicht dann schnell die maximal mögliche Zahl an Gruppierungen
Die ganzen Adressen werden in Tabelle DT_Erfassung importiert. Es gibt leider keinen Adressstamm.
Hängt mit unserem Warenwirtschaftsprogramm zusammen. Die Lieferadresse aus diesme Programm wird meist manuell in den Auftrag eingetragen und nicht aus Adressstammdaten gezogen.
Du hast recht, sonst wäre eine Gruppierung eben auf eine Adress_Nr viel einfacher.
ZitatWieso wird die Tour_Nr in zwei Tabellen erfasst?
Ist eigentlich gar nicht nötig oder ? Eine Tour-Nr Erfassung in Tbl_DT_Erfassung reicht aus oder ?
ZitatWieso ist in der Tabelle "Colli" zur "TourNr = 1" bei "DT_ID" 1 und 2 vorhanden
Verstehe ich nicht ? Wie ist das gemeint ?
ZitatDie TourNr ist mit LKW "A" bzw. "B" verknüpft. Wenn also nicht zufällig beide LKW's gleichzeitig ankommen, sind das doch verschiedene Lieferungen.
Ja. Meine Spielzeugdaten enthalten im Prinzip eine Lieferung nach Stuttgart und eine nach Karlsruhe.
Diese 2 Lieferungen werden auf LKW A und B aufgeteilt.
Siehe Form "TOUREN"
Die Stuttgart Lieferung ist zu gross und passt nicht auf einen LKW
Das Ergebnis bei meinen Daten muss dann so ausssehen.Es soll ein Lieferschein gedruckt werden.
Absender Mustermann ect.
Empfänger Müller Stuttgart
.
.
dann die Colli datenColli_id DT_ID LieferscheinNr Colli Laenge TourNr
6 1 110 1 210 1
7 1 110 10 500 1
8 1 110 12 1000 1
9 1 110 1 1100 1
10 2 111 2 2222 1
11 3 112 1 222 1Das ist LKW A = nur ein Lieferschein
Bei LKW B müssen 2 Lieferscheine gedruckt werden.
einer nach Stuttgart
und einer nach Karlsruhe
Das Ergebnis in deinem Beispiel liefert aber 5 Lieferscheine zurück.
Gruss Bernie
Hi,
im Beispiel werden 5 Lieferscheine angeboten, da noch keine Einschränkung auf Lieferadresse, Datum, LieferNr, LKW oder was auch immer erfolgte.
Das sollte relativ leicht per Abfrage oder per openargs realisierbar sein.
Habe ich denn ansonsten das Datenmodell richtig verstanden?
Harald
Hallo Bernie,
ZitatOk was ist falsch daran ?
Empfänger und Absender sollten in eingenen Tabellen erfaßt sein und nicht mit ihren Eigenschaften in der 'tbl_DT_Erfassung' stehen - hier erscheinen
nur deren PKs als Fremdschlüssel sofern beide Informationen dort vorhanden sein müssen.
Die Tour_Nr steht in beiden Tabellen - was mir auch bedenkenswürdig erscheint - da sich, abgesehen von der verlorengegangenen Normalisierung,
die Collies auf die Tour beziehen sollten soferne eine Tour mit einem bestimmten Fahrzeug in Beziehung gesetzt ist.
ZitatDiese Daten werden in die Tabelle DT_Erfassung eingespielt
Dadurch hast du dann irgndwann z.B. den Empfänger Max Mustermann 100 mal samt seinen Adressdaten in ein und der selben Tabelle stehen,
was mal grundätzlich gegen jede Normalisierungsregel verstößt, gleich verhält es sich mit den Absendern ...
Mir ging es dabei nicht darum die Datenherkünfte in Frage zu stellen sondern grundsätzlich daruf hinzuweisen, dass die Daten an sich,
in einem nicht normalisierten Zustand in den Tabellen vorhanden sind.
Es wäre - wenn möglich - zu überlegen die Datenübernahme aus Navision so zu gestalten, dass genau diese Denormalisierung aufgehoben wird.
Zitat
Dann wird ein LS aus Navision gedruckt und wir erfassen die LS Nr in Tbl_DT_Erfassung und in einem UFo die jeweiligen Packstuecke mit Massen / Kg in Tbl_DT_Colli
Ein Datensatz aus Navision = ein Lieferschein.
Die Lieferscheinnummer - egal wie sie zusammengestellt wird - steht
für deine Bedürfnisse mit den Collies in Beziehung und sollte daher aus der Erfassung raus.
Was meinst du was passiert, wenn du ein einziges Mal bei der Eingabe der LS-Nummer einen Fehler machst und so in den beiden Tabellen unterschiedliche Nummern stehen hast ... :-\
Das gleiche gilt hier natürlich dann auch für die TourNr und einer Mischung aus beiden - Menschen machen Fehler (eine alte Weisheit, die sich nicht umgehen läßt)
ZitatSo und nun möchte ich eben einen HauptLieferschein ausgedruckt bekommen
Dann möcht ich hier zu bedenken geben, dass die LS-Nummer vom Warenwirtschaftsprogramm erstellt wird und dort wahrscheinlich auch zur Rechnungserstellung herangezogen wird.
Wenn du nun in einem externen Programm einen anderen, neuen Lieferschein erzeugst um gleiche Empfängerdaten zusammenzufassen - Hmmmm....
wie läßt sich das mit den Lieferdokumenten der Warenwirtschaft vereinbaren?
OK, das ist nicht Gegestand des Themas, geht mich auch nichts an und ich maße mir auch ganz bestimmt nicht an deine Abläufe zu kritisieren - es ist mir nur aufgefallen.
Ich würde jedoch eher dazu neigen eine Lieferung (PK) aus mehreren Lieferscheinen (FK) zusammenzufassen - was du damit erreichen kannst, wenn du die LS-Nummer den Collies zuordnest und nicht der Erfassung.
Somit entspricht ein DS in der tbl_Erfassung genau einer Lieferung an einen bestimmten Empfänger - und die kann unterschiedliche LS-Nummern aufweisen wenn den zugehörigen Collies die
richtige LS-Nummer mitgegeben wird.
Bestimmst du dann den Absender der einzelnen Collies in der entsprechenden Tabelle (tbl_DT_Colli) hast du auch diese Unterscheidung in normalisierter Form vorliegen und kommst nicht in Konflikt wenn du was auswerten möchtest.
Die TourNr ordnest du ebenfalls den Collies zu - somit kannst du auch unterscheiden welche Collies mit welchen Fahrzeugen versandt wurden und verlierst nicht den Überblick welche Lieferungen an
'Max Mustermann' raus gingen und wie die Lieferungen zusammengesetzt wurden.
Ich hoffe du kannst meinen Gedanken gut folgen und erkennst die Problematik einer redundanten Datenspeicherung, die durch deinen Tabellenaufbau zwangsläufig gegeben ist.
Anbei Bericht mit weniger Lieferscheinen: 3
Noch ein Nachtrag zur obigen Version mit "zu vielen" ??? Seiten:
Seite 1: enthält Daten, die keine Tournummer in der Tabelle "Colli" haben
Seite 2: entspricht Deinem obigen Zahlenbeispiel zum LKW A
Seite 3: ist die Tournummer 2, d.h. LKW B
Seite 4: ist ein von mir hinzugefügter neuer Termin, um zum selben Empfänger an einem anderen Datum einen neuen Lieferschein zu generieren
Seite 5: ist die Tournummer 2, d.h. LKW B mit einem anderen Empfänger als bei Seite 3
Wennn also das Datenmodell angepaßt wird, fallen die falschen Daten aus 1 weg und wenn die hinzugefügten Daten außer Acht gelassen werden (Seite 4) , so werden 3 Lieferscheine erhalten, was Deiner Erwartung entspricht.
Harald
[Anhang gelöscht durch Administrator]
Hi Harald,
ja, ich denke du hast das Datenmodell richtig verstanden.
Ich meinte nur damit, also ohne Berücksichtigung von deinem Datensatz, dass es sich um 3 Lieferscheine handeln sollte.
ZitatDas sollte relativ leicht per Abfrage oder per openargs realisierbar sein
per openargs ?
Gruss
Bernie
Hi Data,
ZitatEs wäre - wenn möglich - zu überlegen die Datenübernahme aus Navision so zu gestalten, dass genau diese Denormalisierung aufgehoben wird.
Interessanter Vorschlag. Wie darf ich mir das Vorstellen ?
ZitatWas meinst du was passiert, wenn du ein einziges Mal bei der Eingabe der LS-Nummer einen Fehler machst und so in den beiden Tabellen unterschiedliche Nummern stehen hast ...
Für meine Zwecke ersteinmal kein Problem. Die LS Nr hat keine Auswirkung auf die Abwicklung
ZitatDann möcht ich hier zu bedenken geben, dass die LS-Nummer vom Warenwirtschaftsprogramm erstellt wird und dort wahrscheinlich auch zur Rechnungserstellung herangezogen wird.
Wenn du nun in einem externen Programm einen anderen, neuen Lieferschein erzeugst um gleiche Empfängerdaten zusammenzufassen - Hmmmm....
wie läßt sich das mit den Lieferdokumenten der Warenwirtschaft vereinbaren?
Und ? es gibt aus dem WW eben 5 Lieferscheine mit jeweils einer anderen LieferscheinNr an ein und den selben Empfänger. Diese Lieferscheine beinhalten lediglich Artikelbezeichnungen und die Menge .
Auf meinen Scheinen stehen keine Artikel oder ähnliches. Auf meinen Scheinen stehen Sendungsdaten = Anzahl Packstücke und deren Masse. Die wiederum stehen nicht auf den LS aus dem WW.
ZitatIch würde jedoch eher dazu neigen eine Lieferung (PK) aus mehreren Lieferscheinen (FK) zusammenzufassen - was du damit erreichen kannst, wenn du die LS-Nummer den Collies zuordnest und nicht der Erfassung.
Somit entspricht ein DS in der tbl_Erfassung genau einer Lieferung an einen bestimmten Empfänger - und die kann unterschiedliche LS-Nummern aufweisen wenn den zugehörigen Collies die richtige LS-Nummer mitgegeben wird.
Bestimmst du dann den Absender der einzelnen Collies in der entsprechenden Tabelle (tbl_DT_Colli) hast du auch diese Unterscheidung in normalisierter Form vorliegen und kommst nicht in Konflikt wenn du was auswerten möchtest.
Die TourNr ordnest du ebenfalls den Collies zu - somit kannst du auch unterscheiden welche Collies mit welchen Fahrzeugen versandt wurden und verlierst nicht den Überblick welche Lieferungen an 'Max Mustermann' raus gingen und wie die Lieferungen zusammengesetzt wurden
Also wenn ich das richtig verstehe, dann stehen in der Tabelle Colli alle Daten, oder ? Also Empfänger/Absender/Auftraggeber/LSNr. ect ect
ZitatOK, das ist nicht Gegestand des Themas, geht mich auch nichts an und ich maße mir auch ganz bestimmt nicht an deine Abläufe zu kritisieren - es ist mir nur aufgefallen.
Keine Sorge, deshalb poste ich hier ja meine Proleme und nicht wo anders...Ich finde es super, wenn jemand sagt, überleg dir mal dein Datenmodell.. oder ähnliches... das erweitert den Horizont hehe :-)
Lg Bernie
@Harald, sorry hatte dein letzte Beispiel übersehen. Danke..sieht gut aus. Brauch nur ein bisschen ob ich das hinbekomme :-)
Gruss
Bernie
Zitat von: Bernie110 am Februar 28, 2012, 08:12:00
per openargs ?
Me.OpenArgs (siehe auch Hilfe zu DoCmd.OpenReport) ist einer von mehreren Parametern, der einem Bericht (oder auch einem Formular) übergeben und dort ausgewertet werden kann.
Deine DT_ID bietet sich an, einen bestimmten Lieferschein für das Ausdrucken zu selektieren.
Harald
Hallo Harald,
interessanter Vorschlag. Komme auf das gerne nochmal zurück.
Muss ersteinmal meine Abfrage hinbekommen :-)
Vielen Dank du hast mir sehr geholfen !
Gruss
Bernie