AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Wie Update mit max() pro Gruppe

Wie Update mit max() pro Gruppe

Ein Thema von BlueStarHH · begonnen am 28. Okt 2017 · letzter Beitrag vom 29. Okt 2017
Antwort Antwort
Seite 2 von 2     12
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#11

AW: Wie Update mit max() pro Gruppe

  Alt 29. Okt 2017, 10:12
Hmm..

Mal eine andere Frage:
Könnten Positionen mit der Nummer 999 nicht stornierte, somit ungültige Rechnungs-Positionen sein?

Deshalb stellt sich hier eher die Frage, ob diese überhaupt gelistet werden oder sowieso keine 'echte' Positionsnummer haben, da storniert.

Ansonsten müsstest Du eine temporäre Tabelle per z.B. Select insert anlegen, dort per die Position anfügen und immer die PosNr neu anhand der letzten Pos aus der Temptable vergeben.

Da diese Temptable immer die höchste PosNr enthält, würde auch der Insert immer die richtige nächste PosNr verwenden.

Zum Schluss würde diese TempTable als Record zurück gegeben werden oder dann als Datenquelle für den Update dienen.

Hab leider kein Beispiel zur Hand..
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hannover-Hainholz
801 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Wie Update mit max() pro Gruppe

  Alt 29. Okt 2017, 10:23
Das geht aber schief, wenn es mehr als eine PositionsNr = 999 zu einer RechnungsNr gibt, die bekommen dann alle die Max(PositionNr)+1. Man erhält dann Dubletten, die ggfls. nicht mehr so leicht zu erkennen sind, wie die 999.
In den Daten hier gibt es die 999 maximal ein mal je RechnungsNr. Insofern lößt der Code von TigerLilly aus Post #9 mein Problem. Danke an alle!
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hannover-Hainholz
801 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Wie Update mit max() pro Gruppe

  Alt 29. Okt 2017, 10:26
Könnten Positionen mit der Nummer 999 nicht stornierte, somit ungültige Rechnungs-Positionen sein?
In den Daten, die ich hier bekommen habe, sind mit 999 Positionen markiert, die immer am Ende stehen sollen. In diesem Fall hat das also nicht mit einem Ungültig-Flag zu tun.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#14

AW: Wie Update mit max() pro Gruppe

  Alt 29. Okt 2017, 14:34
Ist die 999 wirklich immer am Ende der Rechnungspositionsliste?
Und wenn ja und es geht bloß um Sortierung, warum soll sie dann geändert werden, die Sortierung ändert sich dadurch nicht. (außer es sind mehr als 999 Artikel)
Gruß, Jo
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hannover-Hainholz
801 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: Wie Update mit max() pro Gruppe

  Alt 29. Okt 2017, 15:04
Ist die 999 wirklich immer am Ende der Rechnungspositionsliste?
Die 999 gibt an, dass diese Position ans Ende der Liste bei der Ausgabe soll. Wie das intern in der DB sortiert ist, kann man nicht vorhersagen.

Und wenn ja und es geht bloß um Sortierung, warum soll sie dann geändert werden, die Sortierung ändert sich dadurch nicht. (außer es sind mehr als 999 Artikel)
Auf der gedrucken Rechnung werden auch die PositionsNr gedruckt. Dort soll keine 999 zu sehen sein sondern stattdessen die nächste freie Nummer. Auf dem Ausdruck ist nach der PositionsNr sortiert.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Wie Update mit max() pro Gruppe

  Alt 29. Okt 2017, 16:52
Oder bei der Abfrage

SQL-Code:
select
  <Felder ohne PosNr>,
  iif( PositionNr < 999; PositionNr; SELECT MAX(PositionNr) FROM RechnungPos ps WHERE ps. RechNr = p.RechNr ps.PositionNr < 999) +1 ) as PositionNr
from
  RechnungPos p
where
  <Bedingung>;
Markus Kinzler

Geändert von mkinzler (29. Okt 2017 um 17:12 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 18:43 Uhr.
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