Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Generator fuer Position verwalten ? (https://www.delphipraxis.net/49657-generator-fuer-position-verwalten.html)

FrankBKK 14. Jul 2005 06:25

Datenbank: Firebird • Zugriff über: IBO

Generator fuer Position verwalten ?
 
Ich verwende zwei Tabellen: Orders und Orderdetails

Wird ein neuer Order generiert, wird vom Generator fuer
diesen Auftrag ein Wert abgeholt. Der Generator fuer
die Orderdetails soll dann auf 1 zurueckgesetzt werden und
beui Eingabe der entsprechenden Positionen hochgezaehlt werden.

Wie ist das nun aber wenn mehrere Benutzer unabhaengig von
einander gleichzeitig neue Auftrage eingeben ?

Wie kann ich hier fuer die Details einen Generator verwenden
der nur fuer die Detailpositionen EINES Benutzers und eines
Auftrags hochzaehlt geht das ueberhaupt oder muss ich den
Positionszaehler programmintern verwalten ?

BrunoT 14. Jul 2005 06:38

Re: Generator fuer Position verwalten ?
 
Hi Frank,

Ich würde eigentlich gar keinen Zähler für Orderdetails verwenden. Ich würde bei den Orderdeteils die OrderNr hinterlegen und danach bei Auswahl des Auftrages mit Filter selektieren. Die Anzahl der Order-Deteils ergibt sich automatisch aus der Anzahl der Datensätze, Damit ist es auch möglich, einen Datensatz aus den Orderdeteils zu löschen und neue dazwischen einzufügen, weil ja die zeilennummer nicht im datensatz steht, sondern nur in der Anzeige. Damit gibt es überhaupt gar kein Problem mit dem Multi-User-Zugriff.

Es gibt auch die Möglichkeit, Primär- und Sekundär-Tabelle mit einander direkt zu verknüpfen, dann würde sich das manuelle Filtern erübrigen( in Paradox, Access z.B.).

Ich hoffe, ich konnte helfen.


mfg

BrunoT

FrankBKK 14. Jul 2005 06:53

Re: Generator fuer Position verwalten ?
 
Zitat:

Zitat von BrunoT
Ich würde eigentlich gar keinen Zähler für Orderdetails verwenden. Ich würde bei den Orderdeteils die OrderNr hinterlegen und danach bei Auswahl des Auftrages mit Filter selektieren. Die Anzahl der Order-Deteils ergibt sich automatisch aus der Anzahl der Datensätze, Damit ist es auch möglich, einen Datensatz aus den Orderdeteils zu löschen und neue dazwischen einzufügen, weil ja die zeilennummer nicht im datensatz steht, sondern nur in der Anzeige. Damit gibt es überhaupt gar kein Problem mit dem Multi-User-Zugriff.

Das macht absolut Sinn was Du da sagst, so aehnlich hab ich das bisher auch gehandhabt, allerdings sollen die Positionen kuenftig vom User sortiert werden koennen (willkuerlich), daher muss ich ne Art Zaehler einbauen,
der zunaechst beim Erfassen hochzaehlt und spaeter vom Anwender innerhalb gewisser Grenzen veraendert werden kann.

marabu 14. Jul 2005 07:04

Re: Generator fuer Position verwalten ?
 
Hallo Frank,

in der Client Table solltest du trotz allem den Generator nur für einen Primärschlüssel einsetzen. Die Positionsnummer muss der Benutzer nicht eingeben. Beim Hinzufügen enspricht die Positionsnummer der Anzahl der bereits gespeicherten Positionen, beim Löschen werden die Folgepositionen herabgesetzt und beim Einfügen hinaufgesetzt. Schau mal hier

Grüße vom marabu

FrankBKK 14. Jul 2005 07:25

Re: Generator fuer Position verwalten ?
 
Zitat:

Zitat von marabu
Hallo Frank,

in der Client Table solltest du trotz allem den Generator nur für einen Primärschlüssel einsetzen. Die Positionsnummer muss der Benutzer nicht eingeben. Beim Hinzufügen enspricht die Positionsnummer der Anzahl der bereits gespeicherten Positionen, beim Löschen werden die Folgepositionen herabgesetzt und beim Einfügen hinaufgesetzt. Schau mal hier

Grüße vom marabu

Passt ! Vielen Dank fuer den Hinweis.

Jasocul 14. Jul 2005 07:51

Re: Generator fuer Position verwalten ?
 
Wir haben uns für die Speicherung der Positionsnummer entschieden (zusätzlich zum Primärschlüssel). Der Grund ist relativ einfach:
Der Kunde bestellt etwas und bekommt Teillieferungen. Damit er weiß, welche Positionsnummer des Lieferscheins (oder auch der Rechnung) zu welcher Position in der Auftragsbestätigung gehört.
Oder der Kunde storniert eine Position und möchte eine neue Bestätigung haben. Dann ist es doch evtl. sinnvoll, eine Lücke in den Nummern zu lassen.
Wenn für einen Auftrag noch was bestellt wird, kann man in der Bestellung mitdrucken, für welche Auftragsposition das ist.
Oder der Kunde möchte gerne seine eigenen Positionsnummern in der Auftragsbestätigung sehen (na gut. das lösen wir auch anders -> zusätzliche Felder).

Es gibt durchaus Gründe, Positionsnummern zusätzlich zu Primärschlüsseln zu verwalten. Es hängt alles ein bisschen davon ab, was damit evtl. noch gemacht werden muss/soll.

marabu 14. Jul 2005 08:30

Re: Generator fuer Position verwalten ?
 
Hallo Peter,

auch ich speichere Positionsnummern. In erster Linie stellen solche Nummern für mich ein Ordnungskriterium dar. Solange der Vorgang in der internen Bearbeitung ist, sollte die Herstellung einer lückenlosen Ordnung vom System unterstützt werden. Deine Anforderungen zähle ich zu den business rules und würde sie durch ein Steuerungsattribut umsetzen. Das kann zum Beispiel das Druckdatum der Auftragsbestätigung sein, in Verbindung mit der Anzahl der Positionen (Auftragsumfang) zu diesem Zeitpunkt. Sobald das Datum existiert ist eine Umstellung der betroffenen Positionsnummern verboten. Stornierte Positionen erhalten ein Storno-Flag, neue Positionen werden hinten angefügt und können in ihrem Bereich solange beliebig umgeordnet werden, bis Druckdatum und Auftragsumfang aktualisiert werden. Ich würde in einer überarbeiteten Auftragsbestätigung auch stornierte Positionen ausgeben.

Die Bedeutung einer konstanten Positionsnummer für die externe Kommunikation sehe ich differenzierter. Für die Vollständigkeitskontrolle bei der Warenannahme ist eine lückenlose Nummerierung wertvoller, als der direkte Bezug auf den Auftrag durch konstante Positionsnummern. Die Semantik einer Positionsnummer wechselt mitunter von Dokument zu Dokument. Da, wo Warenannahme und Bestellwesen nicht in Personalunion erledigt werden, wäre das eine Anforderung von mir.

Freundliche Grüße vom marabu

Jasocul 14. Jul 2005 08:40

Re: Generator fuer Position verwalten ?
 
Hi marabu,
datenbanktechnisch stimme ich dir voll zu. "Leider" haben unsere Kunden keinen Zugriff auf unsere Datenbank. Daher zählt für die nur das, was auf Papier gedruckt wurde (oder eMail).

Ich wollte auch gar nichts schlechtreden. Ich hatte nur den Eindruck, dass man auch ein paar Schritte weiter denken sollte, wenn man solche Überlegungen anstellt. Oft genug wird das vergessen.
Das war durchaus konstruktiv gemeint. Ich sehe oft genug Entwickler, die nicht über die eigene Nasenspitze sehen können und dann völlig an der Praxis vorbei programmieren.

Also nicht als Vorwurf auffassen.

marabu 14. Jul 2005 09:26

Re: Generator fuer Position verwalten ?
 
Ich halte das hier für eine wohltuend sachliche Diskussion - ein Schelm, wer anderes denkt. Ich musste bei diesem Thema sofort an ein Angebot zur Fassadenrenovierung denken, dass ich kürzlich erhielt - mit den Positionsnummern 1 bis 3, 5 - 8, 10 und 11. Da ich sicher sein wollte, habe ich telefonisch nachgefragt und erhielt die Antwort, dass die fehlenden Nummern gelöscht wurden, da die Teilleistung in den anderen Nummern enthalten sei. Das zur Untermauerung meiner Forderung nach automatisiert lückenloser Nummerierung in der Bearbeitungsphase.

marabu

Jasocul 14. Jul 2005 09:32

Re: Generator fuer Position verwalten ?
 
Das hätte mich auch irritiert.
Bei einem Angebot Lücken in den Positionsnummern ???
So was macht man doch mit Ordnungsstrukturen (im einfachsten Fall Unterpositionen), wenn das in Teilleistungen aufgeteilt ist. Ich habe auch mal für die Baubranche programmiert. Da wird doch immer mit strukturierten Positionsnummern gearbeitet. Du solltest die genau überlegen, ob du das Angebot annimmst. :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:24 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz