AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Mehrere Datensätze zwischenspeichern
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere Datensätze zwischenspeichern

Ein Thema von Luckner · begonnen am 26. Apr 2017 · letzter Beitrag vom 28. Apr 2017
Antwort Antwort
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.371 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Mehrere Datensätze zwischenspeichern

  Alt 27. Apr 2017, 06:40
Die Lösung sind Objekte.
Theoretisch ja, praktisch Nein. (Natürlich ist es richtig, GUI und Daten zu trennen, aber darum geht es hier ja nicht.)
Auftrags-Positionen erfordern oft, dass Bestände reserviert werden müssen, damit andere Erfasser den Bestand nicht ins Minus fahren.
Das kann man sicher auch lösen, aber wozu? Es sind in jedem Fall DB-Zugriffe notwendig. Dann kann man auch gleich den Auftrag speichern und bastelt sich keinen Zwitter.
Abgesehen davon möchte ich nicht das Geschrei eines Anwenders sehen, der einen großen Auftrag bereits 2 Stunden erfasst und dann das Programm oder Rechner abschmiert. Alles nochmal Erfassen? Scheiß Programm

Fortlaufende Auftragsnummern sind doch kein Problem. Stornierte Aufträge sind auch wichtige Infos (z.B. für das Qualitätsmanagement). Ansonsten kann man einen Auftrag auch einfach inhaltlich komplett wieder ändern/leeren. Dann steht die Nummer wieder zur Verfügung. Oder man lässt eine manuelle Korrektur der Auftragsnummer zu. Die Prüfung im Programm ist doch Kleinkram. Rechtlich sind fortlaufende Nummern nur für Rechnungen und Gutschriften relevant.
Peter
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
1.002 Beiträge
 
#2

AW: Mehrere Datensätze zwischenspeichern

  Alt 27. Apr 2017, 07:19
Ich mache das immer so:

Da die Vorgansnummern immer fortlaufend sein soll (bei Aufträgen nicht zwangsläufig, bei Rechnungen aber definitiv) lege ich mir also eine Tabelle für die Nummernkreise an (vonNr, bisNr, istNr).
Aber eben nicht die Nummern für Rechnung, Auftrag, etc. sondern auch für Rechnungsentwurf, Auftragsentwurf, usw.
Bei erstellen eines Auftrags/Rechnung erhält dieser also erst einmal die nächste Nummer aus dem jeweiligen Entwurfsnummernkreis und erhöht dessen istNr.
Erst bei Fakturierung/Auftragerteilung wird für diesen Vorgang dann eine Nummer auf dem eigentlichen Nummernkreis gezogen und ausgetauscht.

Da die Nummernkreise aber in meinen Fällen umlaufend sind, werden die eigentlichen Datensätze / Positionen
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Mehrere Datensätze zwischenspeichern

  Alt 27. Apr 2017, 10:08
Hallo an Alle,

danke für die Beiträge. Haben mir Gedanken gemacht und die Lösung von Hobbycoder finde ich passend für mich. Meine Idee ist jetzt eine zusätzliche Positionstabelle zu erstellen, die mit den aktl. Positionen gefüllt wird. Diese bekommt auch ein zusätzliches "Kennung". Das kann eine automatisch generierte Zahl sein, oder z.B. auch eine Userkennung. Wenn der Auftrag fertig ist, wird der Inhalt dieser Tabelle, selectiert nach der Kennung, in die Positionstabelle kopiert. Danach die alle Positionen mit der entsprechenden Kennung in dieser Tabelle gelöscht. So, dass jeder Anwender diese Tabelle mit der eigenen Kennung benutzen wird. Es muß nur ausgeschlossen sein, dass eine Anwender an mehreren Arbeitsplätzen gleichzeitig arbeiten kann.

Danke und Gruß,
Luckner
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

AW: Mehrere Datensätze zwischenspeichern

  Alt 27. Apr 2017, 11:10
Wenn ein Nutzer (theoretisch) an mehreren Arbeitsplätzen arbeiten kann, dann kommt halt in die Nutzerkennung der Arbeitsplatz mit rein (z. B. Rechnername oder was ihr sonst so eindeutiges habt).
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
1.002 Beiträge
 
#5

AW: Mehrere Datensätze zwischenspeichern

  Alt 27. Apr 2017, 13:38
Hallo an Alle,

danke für die Beiträge. Haben mir Gedanken gemacht und die Lösung von Hobbycoder finde ich passend für mich. Meine Idee ist jetzt eine zusätzliche Positionstabelle zu erstellen, die mit den aktl. Positionen gefüllt wird. Diese bekommt auch ein zusätzliches "Kennung". Das kann eine automatisch generierte Zahl sein, oder z.B. auch eine Userkennung. Wenn der Auftrag fertig ist, wird der Inhalt dieser Tabelle, selectiert nach der Kennung, in die Positionstabelle kopiert. Danach die alle Positionen mit der entsprechenden Kennung in dieser Tabelle gelöscht. So, dass jeder Anwender diese Tabelle mit der eigenen Kennung benutzen wird. Es muß nur ausgeschlossen sein, dass eine Anwender an mehreren Arbeitsplätzen gleichzeitig arbeiten kann.

Danke und Gruß,
Luckner
Warum willst du das in verschiedene Tabellen halten?
Lass die Positionen doch gleich in endgültigen Tabelle, und mach dir ein Feld hinzu welches dann diese Kennung enthält, von der du spricht. Wofür brauchst du die überhaupt? Vielleicht damit die Entwürfe nur an dem einen Arbeitsplatz angezeigt werden? Dann speichere dir halt die Benutzerkennung in einem Feld ab.
Wird dann der Auftrag/Rechnung festgeschrieben, brauchst du nur die Nr austauschen und die Kennzeichen für Entwurf löschen.

Was das verhindern der Bearbeitung durch einen anderen Benutzer angeht, so mache ich das so, dass ich mir im Kopfsatz des Vorgangs eine Feld "InBearbeitung" anleget. In diesem Feld steht entweder gar nichts, dann kann jeder der Vorgang öffnen, oder der Benutzer, der ihn gerade in Bearbeitung hat. In dem Fall wird einem anderen Benutzer dann angezeigt, dass Vorgang gerade bearbeitet wird und vor allen Dingen von wem (ich hasse das, wenn Programme mir melden, dass irgendwas in Benutzung ist und ich suchen muss von wem).
beim Öffnen des Vorgang den Benutzer eintragen und hinterher wieder löschen.
Beim Beenden werden für den Fall der Fälle alle Datensätze des Benutzers freigegeben und bei Starten auch (ein Programm kann ja auch mal abstürzen, ein Rechner auch).

Man könnte das auch in eine separate Tabelle auslagern, die dann Vorgangsnummer und Benutzer vorhält. Dann muss man sich halt um die Konsistenz kümmern.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Mehrere Datensätze zwischenspeichern

  Alt 28. Apr 2017, 13:26
[QUOTE=Hobbycoder;1369313]
Es muß nur ausgeschlossen sein, dass eine Anwender an mehreren Arbeitsplätzen gleichzeitig arbeiten kann.
Dann muss man sich halt um die Konsistenz kümmern.
Hätte man dafür gesorgt, daß niemand die Welt umrundet, dann wüßte man noch heute, daß die Welt eine Scheibe ist.

Solche Lösungen sind Scheinlösungen, nach dem Motto wenn die Welt schon nicht so ist wie ich sie gerne hätte, dann bastele ich sie mir eben.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
1.002 Beiträge
 
#7

AW: Mehrere Datensätze zwischenspeichern

  Alt 28. Apr 2017, 13:33
Dann muss man sich halt um die Konsistenz kümmern.
Hätte man dafür gesorgt, daß niemand die Welt umrundet, dann wüßte man noch heute, daß die Welt eine Scheibe ist.

Solche Lösungen sind Scheinlösungen, nach dem Motto wenn die Welt schon nicht so ist wie ich sie gerne hätte, dann bastele ich sie mir eben.
Aus dem Zusammenhang gerissen trifft das zwar zu, aber ich habe ja auch dazu geschrieben: "Man könnte". Ist nicht gleich bedeutend mit "empfehlenswert".
Es ging mir in dem Zusammenhang darum, darauf hinzuweisen, dass man es in dem Fall tun muss.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Mehrere Datensätze zwischenspeichern

  Alt 28. Apr 2017, 14:09
nichts für ungut aber "Nan könnte" wird viel zu gerne als Synonym für "das geht und ist nicht falsch" genommen. Der Nachsatz "aber dann.." fällt leider zu gerne unter den Tisch.

Gruß
K-H

P.S.
Und ich habe schon zu oft erlebt, daß das was nicht hätte sein dürfen, doch passiert ist.
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz