Nummer aus Abfrage generieren

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Marco Schade
**
Beiträge: 42
Registriert: Mi, 08.03.2017 20:46

Nummer aus Abfrage generieren

Beitrag von Marco Schade »

Hallo Forum,

ich habe es geschafft anhand der ID eine zusätzliche Nummer in einer Abfrage zu generieren (RG.NR)
besteht denn die Möglichkeit das diese RG.Nr noch den Zusatz bekommt aus Spalte "Datum " und zwar nur das Jahr .

Es soll hinterher so aussehen RG-0038/2017
RG-0041/2017


Liebe Grüße

Marco
Dateianhänge
RG-Nr.jpg
RG-Nr.jpg (264.66 KiB) 9007 mal betrachtet
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Nummer aus Abfrage generieren

Beitrag von F3K Total »

Moin,
wenn du die Abfrage hier im SQL Mode gepostet hättest, wäre es einfacher gewesen:

Code: Alles auswählen

'RG-'||REPEAT(0,4-LENGTH("ID"))||"recID"||' / '||YEAR("Datum") AS "RG.Nr"
sollte funktionieren.
Gruß R
Marco Schade
**
Beiträge: 42
Registriert: Mi, 08.03.2017 20:46

Re: Nummer aus Abfrage generieren

Beitrag von Marco Schade »

Hallo R
perfekt, macht was es soll.
Kann man das auch so einstellen , das er im nächsten Jahr wieder bei 1 anfängt
z.Bsp RG-0001/2018

Vielen Dank nochmal

Gruß
Marco
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Nummer aus Abfrage generieren

Beitrag von F3K Total »

Marco Schade hat geschrieben: Di, 11.04.2017 20:39 Kann man das auch so einstellen , das er im nächsten Jahr wieder bei 1 anfängt
Ja, das geht, du kannst von der aktuellen ID die Maximale des Vorjahres abziehen.
Gruß R
Marco Schade
**
Beiträge: 42
Registriert: Mi, 08.03.2017 20:46

Re: Nummer aus Abfrage generieren

Beitrag von Marco Schade »

Hallo R,

danke für die Antwort.
Ich kann die Maximale ID der Jahre auslesen, aber ich bekomm es einfach nicht die Maximale ID des Vorjahres einzeln auszulesen.
Hast Du da einen Tip.

LIebe Grüße Marco
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Nummer aus Abfrage generieren

Beitrag von F3K Total »

Alle MAX_IDs aller Jahre:

Code: Alles auswählen

SELECT MAX( "ID" ) "MAX_ID", YEAR( "Datum" ) "MAX_YEAR" FROM "Tabelle1" GROUP BY YEAR( "Datum" )
Gruß R
Marco Schade
**
Beiträge: 42
Registriert: Mi, 08.03.2017 20:46

Re: Nummer aus Abfrage generieren

Beitrag von Marco Schade »

Hallo R,


das habe ich schon hinbekommen nur den Vorschlag von dir von der aktuellen ID die Maximale des Vorjahres abziehen , das will nicht funktionieren

Marco Schade hat geschrieben: ↑
Di, 11.04.2017 20:39
Kann man das auch so einstellen , das er im nächsten Jahr wieder bei 1 anfängt
Ja, das geht, du kannst von der aktuellen ID die Maximale des Vorjahres abziehen.
Liebe Grüße

Marco
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Nummer aus Abfrage generieren

Beitrag von F3K Total »

Marco Schade hat geschrieben: Do, 13.04.2017 17:59 ... das will nicht funktionieren
Tja, das ist ja blöd, geht aber.
Vielleicht läßt du uns an deinen Versuchen teilhaben, und lädst sie hier hoch, dann mag dir vielleicht jemand einen weiteren Tipp geben?
Ohne erkennbare Eigeninitiative deinerseits, bin ich wenig motiviert.
Gruß R
Marco Schade
**
Beiträge: 42
Registriert: Mi, 08.03.2017 20:46

Re: Nummer aus Abfrage generieren

Beitrag von Marco Schade »

Hallo R ,

Ja ich kann dich verstehen,

Ich habe die Beispieldatei mal angehangen in Abfrage Rechnung2 Habe ich die höchste ID des Jahres ausgelesen, ab er ich weis nicht, wie ich die ID des Vorjahres absprechen soll und die in die Formel

Code: Alles auswählen

'RG-' || REPEAT( 0, 4 - LENGTH( "ID" ) ) || "ID" || ' / ' || YEAR( "Datum" )
einbauen soll .

Liebe Grüße Marco
Dateianhänge
Datenbank 14.04.2017.odb
(249.15 KiB) 152-mal heruntergeladen
Marco Schade
**
Beiträge: 42
Registriert: Mi, 08.03.2017 20:46

Re: Nummer aus Abfrage generieren

Beitrag von Marco Schade »

Hallo zusammen,

ich habe es jetzt geschafft die höchste ID des Vorjahres auszulesen , jetzt habe ich nur leider keine Idee , wie ich die höchste Id des Vorjahres abziehen kann in Abhängigkeit vom Datum. Damit die Rechnungsnummer im neuen Jahr wieder bei 1 beginnt.

Über eure Hilfe würde ich mich sehr freuen

Liebe Grüße Marco
Dateianhänge
Datenbank 15.04.2017.odb
(249.54 KiB) 135-mal heruntergeladen
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Nummer aus Abfrage generieren

Beitrag von F3K Total »

Es geht schrittweise:
1. Abfrage für das Vorjahr 01_RECHNUNGEN

Code: Alles auswählen

SELECT "ID", "Datum", YEAR( "Datum" ) - 1 AS "LAST_YEAR" FROM "Rechnung"
2. Abfrage für die höchste Rechnungsnummer je Jahr 02_MAX_YEAR_ID

Code: Alles auswählen

SELECT MAX( "ID" ) "MAX_ID", YEAR( "Datum" ) "MAX_YEAR" FROM "Rechnung" GROUP BY YEAR( "Datum" )
3. Erzeugung der Rechnungsnummern 03_RECHNUNGSNUMMERN

Code: Alles auswählen

SELECT 
    "ID",
    'RG-' || REPEAT( 0, 4 - LENGTH( "ID" - IFNULL( "MAX_ID", 0 ) ) ) || "ID" - IFNULL( "MAX_ID", 0 ) || '/' || YEAR( "Datum" ) AS "RG.Nr."
FROM 
    "01_RECHNUNGEN"
LEFT OUTER JOIN 
    "02_MAX_YEAR_ID" 
ON
"LAST_YEAR" = "MAX_YEAR"
4. Beschreibbare Abfrage der Rechnungen mit Rechnungsnummer 04_RECHNUNGSNUMMERN_BESCHREIBBAR

Code: Alles auswählen

SELECT 
    "ID", 
    "Datum", 
    "KundeID", 
    "ZahlDatum", 
    "Gedruckt", 
    "Rechnungsbetrag", 
    "Rabatt%", 
    ( SELECT "RG.Nr." FROM "03_RECHNUNGSNUMMERN" WHERE "ID" = "Rechnung"."ID" ) AS "RG.Nr" 
FROM 
    "Rechnung"
Damit das ganze funktioniert, darf keine ID fehlen, wie in deiner DB, in der nach der 16 die 82 kommt. Das passiert wenn man bereits erzeugte Datensätze löscht, die Auto ID zählt weiter hoch.
Korrigieren kann man das über Extras/SQL... z.B. so:

Code: Alles auswählen

ALTER TABLE "Rechnung" ALTER "ID" RESTART WITH 20
wobei die 20 die nächste ID ist, und genau eins größer als die letzte ID.
Ausserdem sollte die ID bei 1 beginnen, damit die erste Rechnungsnummer auch die 0001 ist.

Code: Alles auswählen

UPDATE "Rechnung" SET ID = ID+1
so werden alle IDs um eins erhöht.
Gruß R
Dateianhänge
Datenbank 15.04.2017.odb
(23.39 KiB) 140-mal heruntergeladen
Marco Schade
**
Beiträge: 42
Registriert: Mi, 08.03.2017 20:46

Re: Nummer aus Abfrage generieren

Beitrag von Marco Schade »

Hallo R,

vielen lieben Dank, es funktioniert wiedereinmal perfekt.

Danke

Liebe Grüße


Marco
Antworten