Suche | Statistiken | Benutzerliste | Access-FAQ | Datenschutz Foren
donkarl Forum
donkarl Forum ->  Themen -> Access -> Diskussion ansehen

Du bist als Gast eingelogt. ( Anmelden | Registrieren )
  • Einladung zum 35. Access-Stammtisch Hannover am 15...
  • KlausWerther14.05.19 19:52
  • Datensätze mit einander vergleichen und bearbei...
  • BamBam14.05.19 13:30
  • Mehr Datenbanken können nicht geöffnet werden :(
  • Lorenz12.05.19 19:44
       └ RE: Mehr Datenbanken können nicht geöffnet werde... Kontex13.05.19 08:40
          └ RE: Mehr Datenbanken können nicht geöffnet wer... Lorenz13.05.19 21:43
  • Crash im Editmode Access 2007
  • HansP08.05.19 20:25
       └ RE: Crash im Editmode Access 2007 PeterDoering09.05.19 12:30
          └ RE: Crash im Editmode Access 2007 HansP09.05.19 19:34
             └ RE: Crash im Editmode Access 2007 sks10.05.19 09:45
  • Access Stammtisch München am 09.05.2019 (Do)
  • StefanWirrer07.05.19 13:50
  • Problem bei ausführen der Runtime meiner Datenbank
  • DomiDi05.05.19 09:28
       └ RE: Problem bei ausführen der Runtime meiner Dat... Marzer07.05.19 11:28
  • Access Stammtisch München am 11.04.2019 (Do)
  • StefanWirrer09.04.19 14:01
  • Access Kontektmenüs
  • sks30.03.19 09:23
       └ RE: Access Kontektmenüs sks30.03.19 09:34
       └ RE: Access Kontektmenüs Karl Donaubauer31.03.19 21:52
          └ RE: Access Kontektmenüs sks01.04.19 18:44
  • Tabelle wird dupliziert!
  • lohfra21.03.19 17:29
       └ RE: Tabelle wird dupliziert! PeterDoering26.03.19 13:53
  • Hat jmd. Erfahrung mit Unterschriften Pads?
  • StefanWirrer18.03.19 10:17
  • Access Stammtisch München am 14.03.2019 (Do)
  • StefanWirrer14.03.19 07:54
  • Funktion ASC
  • Marzer13.03.19 09:42
       └ RE: Funktion ASC Marzer13.03.19 16:04
  • Laufzeitfehler 70 beim Löschen von csv Datei
  • Greiff08.03.19 15:31
       └ workaround: Laufzeitfehler 70 beim Löschen von c... Greiff08.03.19 16:14
  • nur ein Datensatz wird aktualisiert
  • Dreho5227.02.19 14:53
       └ RE: nur ein Datensatz wird aktualisiert Karl Donaubauer27.02.19 18:15
          └ RE: nur ein Datensatz wird aktualisiert Dreho5227.02.19 18:49
             └ RE: nur ein Datensatz wird aktualisiert Karl Donaubauer28.02.19 19:23
  • Neues Verzeichnis anlagen
  • Dreho5224.02.19 12:36
       └ RE: Neues Verzeichnis anlagen Karl Donaubauer25.02.19 09:11
       └ RE: Neues Verzeichnis anlagen sks26.02.19 09:23
    BamBam
    Gesendet: 14.05.19 13:30
    Betreff: Datensätze mit einander vergleichen und bearbeiten


    Member

    Beiträge: 6

    Hallo zusammen, es ist schon ein weilchen her aber ich habe mich wieder mit meiner Accessdatenbank beschäftigt und stelle euch mal mein Problem vor.

    Ich habe in einer Tabelle Datensätze hinterlegt, die zusammen ein Kabel beschreiben. Dieses Kabel besteht aus vielen Abschnitten. Jeder Datensatz enthält also Einträge über einen Abschnitt.

    Datensatz 1: Hersteller / Kabel 1 / Eintrag(Datum) / Messung(Nein) / Abschnitt 1 / Baujahr / Kabeltyp / usw...
    Datensatz 2: Hersteller / Kabel 1 / Eintrag(Datum) / Messung(Nein) / Abschnitt 2 / Baujahr / Kabeltyp / usw...
    ...
    Datensatz 8: Hersteller / Kabel 2 / Eintrag(Datum) / Messung(Nein) / Abschnitt 1 / Baujahr / Kabeltyp / usw...


    Jetzt gibt es zusätzlich neue Einträge die Messwerte der Kabel enthalten aber nicht mehr unbedingt die Kabeltypen (sie sind also unvollständig).

    Datensatz 83: Hersteller / Kabel 1 / Eintrag(Datum) / Messung(ja) / Abschnitt 1 / Baujahr / Kabeltyp / usw...
    Datensatz 84: Hersteller / Kabel 1 / Eintrag(Datum) / Messung(ja) / Abschnitt 2 / Baujahr / Kabeltyp / usw...

    Ich würde gerne (weil das die gleichen Kabel sind) diese beiden Kabel vergleichen und gegeben falls (nach Prüfung ob die Abschnitte tatsächlich noch identisch sind) die Daten der Messung mit den vorherigen Daten ergänzen.


    Das spannende kommt jetzt noch. Es kann auch sein, dass sehr alte Daten ergänzt werden. Das bedeutet wenn diese Einträge nach Datum sortiert werden könnte es beispielsweise so aussehen(natürlich je Abschnitt).

    Kabel 1:
    Kabeleintrag 1983
    Messung 1985
    Kabeleintrag 1995
    Kabeleintrag 2000
    Messung 2005
    Kabeleintrag 2018

    Ich würde jetzt quasi zuerst Messung 1985 mit Eintrag 1983 vergleichen und gegeben falls Daten von Kabeleintrag in Messung schreiben und danach würde ich Messung 1985 mit Eintrag 1995 vergleichen, weil die aus der Sicht "aktueller sind", und dann gegeben falls Daten von Kabeleintrag in Messung schreiben. Das ganze dann nochmal mit Messung 2005 / Eintrag 2000 und Messung 2005 / Eintrag 20108. Also Messung als Ausgangspunkt und dann das nächst vorherige Jahr und das nächst nachfolgende Jahr aber nur der Einträge. Sollte es keine Einträge davor oder danach geben, dann wird das ignoriert, genauso wie Messung auf Messung.

    Ich hoffe das Prinzip ist soweit klar geworden.



    Ich habe mir gedacht, es wäre einfach eine temporäre Abfrage zu generieren die mir je Hersteller die Kabel auslesen kann. Danach müsste ich eine Schleife laufen lassen mit dem Parameter der Kabelnummer (Also zuerst Kabel 1). Erst jetzt muss die Messung gefunden werden und mit dem (wenn vorhanden) vorherigen Kabeleintrag (nach Datum sortiert) verglichen werden und ergänzt werden. Und danach mit dem darauffolgenden. Das ganze natürlich je Abschnitt, da die Datensätze ja die Abschnitte widerspiegeln.

    Ich habe das ganze so angefangen:

    Dim dbsCurrentDB As DAO.Database
    Dim rstAbschnitt As DAO.Recordset
    Dim qdfAbfrage As DAO.QueryDef

    Dim n As Byte

    Set dbsCurrentDB = CurrentDb()
    Set qdfAbfrage = dbsCurrentDB.CreateQueryDef("")

    For n = 1 To 9 Step 1 'Hersteller als Index angegeben.
    With qdfAbfrage
    .SQL = "Select Messung.Hersteller, Messung.Streckennamen, Messung.MessungOderEintrag, Abschnitt.IDAbschnittsnamen, Abschnitt.StammStrecke, Abschnitt.Kabeltyp, Abschnitt.Länge, Abschnitt.Querschnitt, Abschnitt.Aderanzahl, Abschnitt.Baujahr, Abschnitt.Inbetriebnahme" & vbCrLf _
    & "FROM (Messung INNER JOIN StammStrecke ON Messung.StammStrecke = StammStrecke.IDStammStrecke) INNER JOIN Abschnitt ON StammStrecke.IDStammStrecke = Abschnitt.StammStrecke WHERE Hersteller = " & n & "" & vbCrLf
    End With


    Set rstAbschnitt = qdfAbfrage.OpenRecordset(dbOpenDynaset)

    With rstAbschnitt
    Do Until .EOF
    'Felder aus dem aktuellen Datensatz ausgeben
    Debug.Print !Netzbetreiber _
    & vbTab _
    & !IDAbschnittsnamen _
    & vbTab _
    & !Streckennamen _
    & vbTab _
    & !StammStrecke _
    & vbTab _
    & !Kabeltyp _
    & vbTab _
    & !Länge _
    & vbTab _
    & !Querschnitt _
    & vbTab _
    & !Aderanzahl _
    & vbTab _
    & !Baujahr _
    & vbTab _
    & !Inbetriebnahme _

    'Zum naechsten Datensatz gehen
    .MoveNext
    Loop

    .Close
    End With

    Next n

    qdfAbfrage.Close
    dbsCurrentDB.Close

    ExitProc:
    Set rstAbschnitt = Nothing
    Set qdfAbfrage = Nothing
    Set dbsCurrentDB = Nothing

    End Sub


    Es funktioniert soweit so gut, dass erstmal alle Einträge Hersteller n gefunden werden.

    Jetzt müsste ich je Kabel (also eine Schleife) die erste Messung suchen (wahrscheinlich die Abfrage nach Datum sortieren) und die Vergleiche programmieren.

    Jetzt kommen die Probleme:
    - Die Kabel haben unterschiedliche Namen, also kann man nicht einfach eine Laufzahl als Variabel nehmen für die Schleife.
    - Wie kann ich elegant diese Vergleiche einrichten?

    Wahrscheinlich geht das ganze mit der Find-Methode aber ich denke dafür muss erst einmal richtig sortiert werden. Aber bevor ich mir jetzt weiter den Kopf zerbreche wollte ich nur wissen, ob es auch andere Möglichkeiten gibt, sogar eventuell bessere.

    Ich hoffe ich habe mein Anliegen ausführlich geschildert

    Liebe Grüße

    Top of the page Bottom of the page


    Seite: < 1 2 3 4 5 6 7 8 9 ... >
    Suche in diesem Forum
    Druckfreundliche Version
    (Alle Cookies von dieser Seite löschen.)