Office: (Office 2010) laufendeNummer neu um 1 erhöhen

Helfe beim Thema laufendeNummer neu um 1 erhöhen in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hi, in einer Tabelle -tbDoku- erfolgt ein Dokumentation zu unterschiedlichen Themen. Die Felder in der Tabelle heißen -DokID- (Nummer eines Themas),... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von jobee, 21. September 2015.

  1. laufendeNummer neu um 1 erhöhen


    Hi,
    in einer Tabelle -tbDoku- erfolgt ein Dokumentation zu unterschiedlichen Themen. Die Felder in der Tabelle heißen -DokID- (Nummer eines Themas), laufID (fortlaufende Nummer/Datensatz zu einem Thema) und -DokBeschreibung- (Text der Dokumentation).
    Dies sieht so aus:
    DokID-laufID-DokBeschreibung
    1-1-erste Info zum Thema 1
    1-2-zweite Info zum Thema 1
    2-1-erste Info zum Thema 2
    2-2-zweite Info zum Thema 2
    2-3-dritte Info zum Thema 2



    Die Daten werden in einem Unterformular angezeigt und können dort auch bearbeitet werden. Jetzt kann es sein dass zu einem Thema (DokID) schon mal ein Datensatz/Info dazwischen geschoben werden muss und so die -laufID- wieder neu fortlaufend nummeriert werden muss, z.B. DokID = 2, laufID neu = 2. Das bedeutet die frühere 2-2 soll nun 2-3, die alte 2-3 soll neu 2-4 usw. werden. Da die -laufID- zum Teil bis 20 geht, ist eine manuelle Korrektur aufwendig und können auch schnell Falscheingaben entstehen. Könnte man dies auch automatisieren? Das man z.B. im Formular den Datensatz/laufID markiert ab der um 1 hochgezählt die laufID neu eingefügt werden soll um anschließend dann den neuen Datensatz passend einzufügen?

    :)
     
  2. Hallo!

    Du kannst mittels DMax & Co. die höchste laufID zur DokID ermitteln und um 1 ergänzen.

    Prinzip:
    Code:
    Wann du das machst, hängt davon ab, wie die User arbeiten. *wink.gif*

    * LaufID nach dem Eintrag dern DokID ermitteln
    oder
    * LaufID als Standardwert für neue Datensätze vorgeben, falls man z. B. die DokID in einem Haupftformular auswählt und mehrere Infos je DokID in einem Unterformular einträgt.

    mfg
    Josef
     
  3. Hallo Josef,
    ich bin mir jetzt nicht ganz sicher ob wir das Gleiche meinen.
    Über ein Kombinationsfeld im Formular wählt man das Thema aus, z.B. = 2. Im Unterformular werden dann alle Datensätze zum diesem Thema (DokID) = 2 angezeigt. Die einzelnen Datensätze sind mit einer fortlaufenden Nummer (laufID, im Moment 1-21) versehen. Jetzt möchte ich zwischen dem Datensatz 2 und 3 einen neuen Datensatz dazwischen schieben und der neue Datensatz soll dann 3 heißen. Die alte Nr 3 wird zu 4, die alte Nr4 zu 5 usw…
    Ich dachte mir jetzt im Unterformular den Datensatz 2 zu markieren und dann die Nummerierung ab/inklusive 3 hochzuzählen und in der Tabelle entsprechend zu aktualisieren.
     
  4. laufendeNummer neu um 1 erhöhen

    Hallo!

    Jetzt verstehe ich was du willst. *wink.gif*

    Du markierst einen Datensatz im UF.
    Dann klickst du irgendwo so etwas wie "Neuen DS einfügen" .. das bedeutet an diese Stelle die lfd. Nummer zwischenschieben.

    Mögliche Vorgehensweise:
    1. Nr des aktiven DS auslesen (Beispiels DokID =2, laufID = 3)
    2. Aktualisierungsabfrage erstellen, die alle Nr. ab 3 erhöht.

    Code:
    3. neuen Datensatz mittels Insert-Anweisung und passender laufID einfügen

    4. Unterformular aktualisieren

    5. zum neuen DS springen

    mfg
    Josef
     
  5. Hallo,

    bei richtigem Datenmodell DokID- (Nummer eines Themas) 1:n laufID und Definition der laufID als Autowert würde Access das komplett übernehmen und du brächtest keine Zeile Code.
     
    el_gomero, 23. September 2015
    #5
  6. Hallo Jürgen,
    das Problem war dass eine nachträgliche Änderung erfolgt und damit auch die Reihenfolge der Datensätze.
    Teste gleich den Vorschlag vom Josef.
     
  7. Hallo Josef,
    der Ablauf an sich funktioniert, nur dummerweise wurde das Feld DokID und LaufID zu einem Indizes zusammengefasst so das nach Starten der Abfrage ein Fehlerhinweis erscheint, dass ein Datensatz wegen Schlüsselverletzung nicht aktualisiert werden konnte. Nach Entfernen des zusammengesetzten Indizes funktioniert es jedoch. Was kann ich da machen?
     
  8. laufendeNummer neu um 1 erhöhen

    Hallo!

    Das Problem wird vermutlich ein doppelter Index sein.

    Mögliche Lösungen:

    extra PK-Feld (z. B. Autowert) ergänzen und DokID+LaufID als Index, aber nicht als Unique Index verwenden (Das würde dann allerdings doppelte LaufID je DokID erlauben.)

    Oder:
    Die betroffenen Datensätze per VBA von hinten (mit größter LaufID beginnend) nach Vorne datensatzweise umschreiben

    Oder:
    2 Update-Anweisungen durchführen:
    Code:
    mfg
    Josef
     
  9. Jetzt funktioniert es richtig. Noch eine Frage, schreib ich den Wert von DokID und laufID in eine globale Variable um sie dann in der Abfrage einzusetzen oder wie wäre die beste Vorgehensweise?
     
  10. Hallo!

    Es gibt mehrere Möglichkeiten:
    z. B.:
    a) Text der SQL-Anweisung mittels VBA zusammenstellen und dann ausführen.
    b) Parameterabfrage verwenden und die Parameterwerte per VBA übergeben und die Abfrage ausführen


    zu a):
    Code:
    zu b)
    Code:
    mfg
    Josef
     
  11. Hi Josef,
    sorry wenn ich mich jetzt erst melde, habe es aber nicht früher geschafft.
    Ich erhalte bei a.) die Fehlermeldung: 1. Parameter erwartet, aber es werden zu wenige Parameter übergeben.
    Hier meine Anweisung:
    Code:
    Was ist da nicht richtig?
     
  12. Hallo!

    Hast du dir den SQL-Text in der Variable strSQL1 schon angesehen?

    mfg
    Josef
     
    Josef P., 20. Oktober 2015
    #12
  13. laufendeNummer neu um 1 erhöhen

    Jetzt ja, folgendes Ergebnis wird angezeigt:
    Code:
     
  14. Code:
    ergibt
    Code:
    .. das glaube ich dir nicht. *wink.gif*

    Aber egal:
    Stimmen die Tabellen- und Feldnamen?
    Was passiert, wenn du diese SQL-Anweisung in eine neue Access-Abfrage (in der SQL-Ansicht) einfügst und ausführst?


    mfg
    Josef
     
    Josef P., 21. Oktober 2015
    #14
  15. Hi Josef,
    hab den Fehler nach langem Suchen gefunden. Zum einen gab es eine Abweichung beim Zuweisen des Wertes zur Globalen Variablen und andererseits ist ein Feld ist ein Textfeld (Hochkomma setzen).
    Hätte noch eine Frage zur Variante b.)
    Was ist 'DokIDParam' ? Ein Feld in der Abfrage?
     
Thema:

laufendeNummer neu um 1 erhöhen

Die Seite wird geladen...
  1. laufendeNummer neu um 1 erhöhen - Similar Threads - laufendeNummer erhöhen

  2. Autowert per VBA erhöhen und speichern

    in Microsoft Access Hilfe
    Autowert per VBA erhöhen und speichern: Hallo, ich möchte beim Öffnen eines Formulars gerne einen Datensatz erzeugen. Hierzu verwende ich folgenden VBA-Code: CurrentDb.Execute "insert into tbl_Autowert (ID, User, Datum, Uhrzeit) " &...
  3. Zellen nach rechts kopieren und dabei eine Nummer fortlaufend erhöhen

    in Microsoft Excel Hilfe
    Zellen nach rechts kopieren und dabei eine Nummer fortlaufend erhöhen: Hallo Liebe Community, ich brauche mal wieder Eure Hilfe. Ich habe in Excel eine Tabelle und will folgenden Zelleninhalt von Spalte B bis Spalte JP (Anzahl der Zellen kann variieren) kopieren,...
  4. Anzahl AutoVervollständigen Liste erhöhen

    in Microsoft Outlook Hilfe
    Anzahl AutoVervollständigen Liste erhöhen: Mir persönlich gefällt die alte Version mit bis zu 50 Einträgen in der AutoVervollständigen Liste besser, als nur die 5 Einträge mit Bild gemäß der Standardeinstellung. Für die Umsetzung habe ich...
  5. Zellenwert um +1 erhöhen

    in Microsoft Excel Hilfe
    Zellenwert um +1 erhöhen: Hallo, Meine Frage bezieht sich auf ein Zahlenwert welcher in einer Zelle steht, diese Zelle ist mit einem Diagramm verknüpft und beschreibt eine Parabel. Nun würde ich gerne wissen ob es möglich...
  6. Maximalen Wert von Zellenbezug um 12 erhöhen

    in Microsoft Excel Hilfe
    Maximalen Wert von Zellenbezug um 12 erhöhen: Hallo Zusammen Ich möchte eine Tabelle erstellen, aber meine Werte sind in alle 5 Sekunden angegeben. Weil meine Werte bis zu 8h gehen, wollte ich diese in Minuten kürzen. So habe Ich den Bezug...
  7. Verschiedene Werte durch Button erhöhen

    in Microsoft Excel Hilfe
    Verschiedene Werte durch Button erhöhen: Hallo, ich habe mir in Excel einen Trainingsplan erstellt, dieser ist durch verschiedene Phasen (Woche 1 - 5) und Gewichte aufgeteilt. Spricht Übung 1 Woche 1 Gewicht X1, Übung 1 Woche 2 Gewicht...
  8. Maximale Anzahl Suchorder erhöhen?

    in Microsoft Outlook Hilfe
    Maximale Anzahl Suchorder erhöhen?: Hallo Forum, da immer wieder die Regeln versagen, bzw. nicht sehr dynamisch sind, möchte ich möglichst meine Mails ausschließlich im Posteingang belassen. Entsprechend benutze ich die...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden