online 1
gast (50)

/ Forum / Datenbanken

DatenbankenDatenbanken

Fragevon BlackDaishi vom 19.02.2021, 13:55 Options

DAtensortierung nach defenierten muster in Access

Hallo
Ich habe ein "kleines" Problem bei dem ich irgendwie nicht weiterkommen:

Ich habe eine Tabelle mit Punktverläufen z.B.


    Beispiel 1
    Bez. - Von Punkt - nach Punkt
    WEG1 - LH114-001 - LH114-002
    WEG1 - LH114-002 - LH114-003
    WEG1 - LH114-003 - LH103-007
    WEG1 - LH103-007 - LH103-006
    WEG1 - LH103-006 - LH114-030
    WEG1 - LH114-030 - LH114-031

    Beispiel2
    Bez. - Von Punkt - nach Punkt - Abzweig
    WEG2 - LH114-001 - LH114-002
    WEG2 - LH114-002 - LH114-003
    WEG2 - LH114-003 - LH103-007
    WEG2a - LH114-003 - LH203-070 - Stich
    WEG2a- LH203-070 - LH203-071
    WEG2a - LH203-071 - LH203-072
    WEG2 - LH103-007 - LH103-006
    WEG2 - LH103-006 - LH114-030
    WEG2 - LH114-030 - LH114-031

Beim Beispiel1 geht es nur um eine reine Verbindung von Punkt A nach Punkt B.
Beim Beispiel2 geht es um eine Verbindung A nach B mit einem Abgang zu Punkt C. Der Abgang wird durch den "Stich" im Abzweig Feld gekennzeichnet.


Hier im Beispiel sind die Werte schon "leicht" sortiert. Leider sind sie in meiner Tabelle nicht geordnet und um sie per Hand zu Sortieren ist mit das bei über 100.000 Einträgen zu viel. Ich suche daher ne möglichkeit sie in Access per Abfrage so zu sortieren das sie sozusagen in Kette angeordnet werden. A-B-C-D-... Die Punkte ab Stich können gerne am Ende von WEG2 stehen. Wobei die Bezeichnung in meiner Tabelle für WEG2 und WEG2a identisch sind.
Ich hoffe ihr könnt mir helfen, da ich in ner Sackgasse stehe.


Antwort schreiben

Antwort 1 von Marie vom 20.02.2021, 07:56 Options

ich geh mal davon aus dass niemand hier verstanden hat was Du meinst, zumindest ich nicht :-(

Gruß marie

Antwort 2 von RaHi vom 23.02.2021, 15:29 Options

Hallo BlackDaishi,

ich habe mal deine Liste (Tabelle Punkteverlauf) etwas "unsortiert":

    Bez vonPunkt nachPunkt
    WEG1 LH114-001 LH114-002
    WEG1 LH114-002 LH114-003
    WEG1 LH114-003 LH114-007
    WEG1 LH114-007 LH114-006
    WEG2 LH114-003 LH114-007
    WEG2 LH114-007 LH114-006
    WEG2 LH114-006 LH114-030
    WEG2 LH114-030 LH114-031
    WEG1 LH114-006 LH114-030
    WEG1 LH114-030 LH114-031
    WEG2 LH114-002 LH114-003
    WEG2 LH114-001 LH114-002
und darauf die Prozedure "sortPunktverlauf" angewandt. Sie schreibt die Tabelle sortiert in die neue Tabelle "punktverlauf_sort" (gleiche Struktur)
Dein "stich"-Problem läßt sich da integrieren, probiere es selbst mal aus. Die Wege sollten "wohlgeformt" sein, also keine Wege die zusammenführen, sonst kommt mehr heraus, als man rein steckt!

Public Sub sortPunktverlauf()

Dim reca As New ADODB.Recordset
Dim rec1 As New ADODB.Recordset
Dim rec2 As New ADODB.Recordset
Dim bez As String
Dim p1 As String

DoCmd.RunSQL "DELETE * FROM punktverlauf_sort"

reca.Open "SELECT *  FROM Punktverlauf WHERE vonPunkt Not In (SELECT nachpunkt from Punktverlauf)", CurrentProject.Connection, adOpenStatic, adLockReadOnly
rec1.Open "SELECT * FROM Punktverlauf", CurrentProject.Connection, adOpenDynamic, adLockReadOnly
rec2.Open "SELECT * FROM Punktverlauf_sort", CurrentProject.Connection, adOpenDynamic, adLockOptimistic

If Not reca.EOF Then

    While Not reca.EOF
        p1 = reca!nachPunkt
        bez = reca!bez
        rec2.AddNew
        rec2!bez = bez
        rec2!vonpunkt = reca!vonpunkt
        rec2!nachPunkt = reca!nachPunkt
        rec2.Update
        While p1 <> ""
            rec1.Filter = "vonPunkt = '" & p1 & "' and bez = '" & bez & "'"
            If rec1.EOF Then
                p1 = ""
               Else
                
                rec2.AddNew
                rec2!bez = bez
                rec2!vonpunkt = rec1!vonpunkt
                rec2!nachPunkt = rec1!nachPunkt
                rec2.Update
                
                p1 = rec1!nachPunkt
            End If
            
        Wend
        reca.MoveNext
    Wend
End If
reca.Close
rec1.Close
rec2.Close

End Sub
Mein Ergebnis sieht so aus:
    Bez vonPunkt nachPunkt
    WEG1 LH114-001 LH114-002
    WEG1 LH114-002 LH114-003
    WEG1 LH114-003 LH114-007
    WEG1 LH114-007 LH114-006
    WEG1 LH114-006 LH114-030
    WEG1 LH114-030 LH114-031
    WEG2 LH114-001 LH114-002
    WEG2 LH114-002 LH114-003
    WEG2 LH114-003 LH114-007
    WEG2 LH114-007 LH114-006
    WEG2 LH114-006 LH114-030
    WEG2 LH114-030 LH114-031

Gruß
Ralf

Antwort 3 von BlackDaishi vom 24.02.2021, 11:13 Options

Hallo RaHi,

Vielen Dank für deine Lösung.

Was meinst du mit die Wege sollten wohlgeformt sein?
Das einzige Problem würde ich in den Stich wegen sehen, da sich der Weg ja in 2 Richtungen trennt. Meinst du das damit??

Gruß
Dirk

Antwort 4 von RaHi vom 24.02.2021, 17:45 Options

Hallo Dirk,

ich habe mal zwei Beispiele kontruiert.

Beispiel 1 der Trivialfall:
    Bez vonPunkt nachPunkt
    WEG1 LH114-001 LH114-001/list]
    --> liefert zur Zeit kein Ergebnis, da reca leer ist

    Beispiel 2 zwei unterschiedliche Anfänge, ein Ende:
      Bez vonPunkt nachPunkt
      WEG1 LH114-999 LH114-002
      WEG1 LH114-001 LH114-002
      WEG1 LH114-002 LH114-003
      WEG1 LH114-003 LH114-007
      WEG1 LH114-007 LH114-006

    liefert über 001 und über 999 den Weg nach 006
    Bez vonPunkt nachPunkt
    WEG1 LH114-001 LH114-002
    WEG1 LH114-002 LH114-003
    WEG1 LH114-003 LH114-007
    WEG1 LH114-007 LH114-006
    WEG1 LH114-999 LH114-002
    WEG1 LH114-002 LH114-003
    WEG1 LH114-003 LH114-007
    WEG1 LH114-007 LH114-006

Weiterhin gehe ich davon aus , dass die Bezichnung "WEG1" einen zusammenhängenden Weg darstellen soll oder kann es auch zwei Teilwege dazu geben? Eine Mischung der Wege habe ich ausgeschlossen. Da gehe ich davon aus, dass dies auch so gemeint war.

Gruß
Ralf

Antwort 5 von BlackDaishi vom 17.03.2021, 12:06 Options

Ja so habe ich das gemeint.

Dein Ansattz hat mir sehr weitergeholfen. Funktioniert auch nach kleinen Startschwierigkeiten super.

Vielen Dank für die kompetente Hilfe.

Ähnliche Themen

Access
KRD  24.08.2007 - 60 Hits - 3 Antworten

Access, import Access-Tabellen
KRD  02.09.2007 - 265 Hits - 1 Antwort

Read-Only-Verknüpfung von Access zu Access Tabelle
Emil  28.08.2007 - 61 Hits - 3 Antworten

access
Coco1  21.09.2007 - 56 Hits - 1 Antwort

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026