Hallo Freunde,
hab 'ne Blokade
ich möchte lange Zahlenreihen wie folgt darstellen
Ausgangssituation: Ziel Ausgabe:
Reihe Bereich
3466 3466 bis 3467
3467
3515 3515 bis 3519
3516
3517
3518
3519
3550 3550 bis 3550
3596 3596 bis 3599
3597
3598
3599
heißt aus einer Reihe von Zahlen sollen jeweils Anfang und Ende eines Bereiches dargestellt werden ohne die Zahlen dazwischen. In der Datenbank sind diese Zahlenreihen sequentiell gespeichert. Um die Ausgabe nicht unnötig lang werden zu lassen sollen diese in Bereichen zusammengefaßt werden.
Hab schon mal Schleifen gebaut mit move next previous etc. aber hänge in bischen fest was die Logik angeht.
Hat jemand eine Idee wie man das realisieren kann?
LG
Klaus
ACCESS 2010
Hallo,
vielleicht hilft dies (prinzipiell) weiter:
http://dbwiki.net/wiki/VBA_Tipp:_Liste_per_SQL_aufbauen
wenn Du die "Logik" der Bereichsgrenzen genau bestimmen kannst.
Kannst Du auch noch den Sinn dieser Geschichte erläutern?
Hallo Franz,
herzlichen Dank für Deine Antwort,
eigentlich simpel aber doch tricky
es handelt sich um eine Tabelle mit 2 Feldern
Feld 1 = Adressennummer
Feld 2 = Vertragsnummer
jetzt soll eine 2te Tabelle erstellt werden in der die Vertragsnr. als Bereich angegeben wird
wie in meinem Beispiel von 3515 bis 3519. Da es Adressen mit bis zu 10.000 Vertragsnummern gibt macht solch eine nicht datenbanktypische Struktur ausnahmsweise mal Sinn, widerstrebt mir zwar auch aber eine Angabe z.B.: 8970 bis 16700 ist etwas schlanker als Datensätze in Listenform
8970
...
...
...
16700
Beispiel: |Adressnr.|Vertagsnr. von|Vertragsnr. bis|
100 8970 16700
dient zum Ausdruck und zur Übersicht in einem Formular
wenn Änderungen an den Daten erfolgen wird diese Tabelle upgedatet.
Es gibt verschiedene Situationen in der Bereits vorh. Liste
a. Bereiche= fortlaufende Nummern von bis
b. Sprünge und einzelne Nummern siehe in meinem Beispiel Nr. 3550
nun bin ich auf der Suche nach einer Schleifenstruktur die mir diese Zahlen von der einen Tabelle in die Übersichtstabelle schaufelt.
Besten Gruß zum Wochenende
Klaus
Zitatnun bin ich auf der Suche nach einer Schleifenstruktur
Ach so. Ich würde es mit einer Abfrage umsetzen, da braucht man auch keine zweite Tabelle.
Ansatz: Ein Von-Wert ergibt sich, wenn es dazu keinen Vorgänger gibt
(Vertragsnummer - 1). Ein Bis-Wert hat entsprechend keinen Nachfolger.
Zitatjetzt soll eine 2te Tabelle erstellt werden in der die Vertragsnr. als Bereich angegeben wird
wie in meinem Beispiel von 3515 bis 3519. Da es Adressen mit bis zu 10.000 Vertragsnummern gibt macht solch eine nicht datenbanktypische Struktur ausnahmsweise mal Sinn
Wenn die Bereichsgrenzen nicht in einem Ausdruck zusammengefasst sind ("3515 bis 3519" oder Ergebnis aus SQL-Liste), sondern in getrennten Feldern gespeichert werden, ist diese Form der Erfassung durchaus datenbanktypisch, sinnvoll und üblich. Einen Bereich in Einzelwerte auflösen ist einfacher als der umgedrehte Weg, siehe auch Grundlagen - SQL ist leicht (1) - Hilfstabellen (http://www.ms-office-forum.net/forum/showthread.php?t=298414)
Hallo Eberhard,
auch Dir herzlichen Dank für Deine Antwort
wäre toll wenn man das mit einer Abfrage realisieren könnte
erster/letzter Wert sehen erst einmal gut aus. Nur schade das es innerhalb der Gruppierung die von der Adressnummer kommt größere Sprünge zwischen den Vertragsnummern gibt. Da wird die jeweils kleinste und größte Nummer ausgegeben. Wenn man jetzt noch nach zusammenhängenden gruppieren könnte wäre das prima. Oder hast Du einen Ansatz den ich nicht kenne.
Besten Gruß
Klaus
Als ungetesteter Versuch:
SELECT
T.Adressennummer,
T.Vertragsnummer AS UntereG,
(
SELECT
MIN(U.ObereG) AS ObereG
FROM
(
SELECT
T1.Adressennummer,
T1.Vertragsnummer AS ObereG
FROM
TabX AS T1
WHERE
NOT EXISTS
(
SELECT
NULL
FROM
TabX AS X
WHERE
X.Adressennummer = T1.Adressennummer
AND
X.Vertragsnummer = T1.Vertragsnummer + 1
)
) AS U
WHERE
U.Adressennummer = T.Adressennummer
AND
U.ObereG >= T.Vertragsnummer
) AS ObereG
FROM
TabX AS T
WHERE
NOT EXISTS
(
SELECT
NULL
FROM
TabX AS X
WHERE
X.Adressennummer = T.Adressennummer
AND
X.Vertragsnummer = T.Vertragsnummer - 1
)
wow
das sieht ja klasse aus
der sql-mann
damit werde ich mich jetzt mal 'ne Weile beschäftigen
ich sag Bescheid was draus geworden ist.
Nochmals vielen Dank
Klaus