Office: (Office 2016) manuell vergebener Primärschlüsselwert

Helfe beim Thema manuell vergebener Primärschlüsselwert in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, Hat jemand einen Implementierungsvorschlag (evtl. eine Beispiel-DB) wo der jeweilige Wert für ein Primärschlüsselfeld händisch vergeben werden... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Stephan_2019, 26. September 2020.

  1. manuell vergebener Primärschlüsselwert


    Hallo,

    Hat jemand einen Implementierungsvorschlag (evtl. eine Beispiel-DB) wo der jeweilige Wert für ein Primärschlüsselfeld händisch vergeben werden kann, aber im Hintergrund verhindert wird das eine Nummer fälschlich doppelt vergeben wird?

    Die Bedienung sollte so sein das in einem Formular in einem Kombinationsfeld die nächsten 50 freien Nummern stehen, aus welcher ich jeweils die Nummmer für den nächsten, neu anzulegenden Datensatz auswählen kann.

    Jede 'benutze' Nummer entfällt dann bei jeweils nächsten neuen Datensatz und eine weitere Nummer kommt in der Auswahl 'hinten' hinzu.

    (Weil ich die Nummern frei wählen kann sind die im Kombinationsfeld angezeigten Nummern natürlich nur anfangs fortlaufend und weisen später jeweils Lücken auf.)


    Ich kann mir im Grund vorstellen wie ich das löse, nur weiß ich nicht ob ich mich nicht 'verheddere' und so wäre ich interressiert mir eine bereits existierende Lösung anzusehen bzw. erfreut Implementierungs-Hinweise zu hören.



    Gruß
    Stephan

    :)
     
    Stephan_2019, 26. September 2020
    #1
  2. Hallo,
    ein Primärschlüssel kann unmöglich doppelt vergeben werden, das wird im Hintergrund von Access wirksam und automatisch verhindert.

    Wenn Du den Fehler vermeiden willst, so zähle mit DCount die Anzahl der Datensätze mit dem ausgewählten Wert.
    Du kannst auch die Datenherkunft des Kombifeldes so anlegen, dass nur Werte angeboten werden, die noch nicht angelegt sind.
     
    gpswanderer, 28. September 2020
    #2
  3. Dann musst Du nur die Datenherkunft des Kombinationsfeldes so setzen, dass tatsächlich nur FREIE Nummern angeboten werden: Datensätze aus A, die nicht in B sind
     
  4. manuell vergebener Primärschlüsselwert

    das ist prima

    und das es so ist hätte ich wohl selbst wissen sollen (zumindest vermuten und dann ggf. prüfen um mich zu überzeugen)


    Gruß
    Stephan
     
    Stephan_2019, 29. September 2020
    #4
  5. mmh ... mich stört die Notwendigkeit der zweiten Tabelle.

    Ich habe das jetzt per VBA so gelöst (das ist auch schnell genug für meine Zwecke):

    Code:
    Gruß
    Stephan
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    Stephan_2019, 29. September 2020
    #5
  6. Da hat jeder so seine Meinung. In einer Datenbank sind Tabellen das native Futter für Verarbeitungen - so wie ein Fisch im Wasser schwimmt.

    In der Schleife über AddItem wird auch nur quasi eine Tabelle gebaut, nur sehr viel umständlicher.
    Ich hätte so etwas wie die T999 (Grundlagen - SQL ist leicht (1) - Hilfstabellen) und käme sehr schnell zu einer mehrfachen Nutzung einer solchen Tabelle.

    Und: Was ich habe, muss ich nicht bei jedem Anfassen neu gleich berechnen (Ältere bewegen sich nicht mehr gerne unnötig und gönnen das auch ihrem Rechner.)
     
  7. Ja. Der Vorteil für mich ist das ich bei dem VBA verstehe was ich tue.

    Ideal ist das VBA im Übrigen nicht weil die Generierung der Listen-Einträge in die Do-Loop-Schleife gehören würde, damit abgebrochen werden kann ohne das ganze Recordset durchlaufen zu müssen.
    Ich habe das nur spontan nicht zu laufen bekommen und weil das Interieren durch immer das komplete Recordset bei meiner Datenmenge schnell genug läuft habe ich das so gelassen.


    Gruß
    Stephan
     
    Stephan_2019, 29. September 2020
    #7
  8. manuell vergebener Primärschlüsselwert

    Bau Dir doch eine Funktion, die ermittelt ob der Wert schon vergeben ist. Dafür muss keine neue Tabelle erstellt werden.

    Da reicht eine einfache SQL Abfrage
    z.B.

    "SELECT Deine Tabelle.ID_Feld _
    FROM Deine Tabelle _
    WHERE (((Tabelle.ID_Feld)= " & neuer Wert & "));"

    Frage die Anzahl der Datensätze ab , und Du siehst, ob die Zahl oder die Eingabe schon vergeben ist

    Die Funktion rufst Du nach der Eingabe des Wertes auf und kannst dann ggf. zur neuen Eingabe auffordern.
     
  9. \@Fahrer01
    Das macht doch DCount in einer Zeile, - siehe #2.
     
    Beaker s.a., 30. September 2020
    #9
  10. Ja das stimmt. Ich habe halt nur gezeigt, wie man sowas im Ansatz programmieren kann.

    Es ist sowieso die Frage, warum nicht mit einer Autowertfunktion gearbeitet wird. Eine geordnete Reihenfolge sollte schon gegeben sein. Bei Zahlen ermittel man den höchsten Wertaddiert eins dazu und hat so den nächsten freien Wert.

    Das hat vor allem den Vorteil, dass man die Datensätze so besser sortieren kann.
    Das würde bei willkürlich vergebenen Werten nicht funktionieren.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  11. Der Ansatz ist nun gerade so gewählt, dass er sich möglichst weit von der Einfachheit und Direktheit entfernt, und das bei Nichtbeherrschen von schon einigen Basisfertigkeiten.

    Spannend, wie das ausgehen soll, wenn mal richtige Anforderungen zu lösen sind ...
     
  12. Beaker s.a., 1. Oktober 2020
    #12
  13. manuell vergebener Primärschlüsselwert

    Ich würde hier auch eher zu einer Lösung mit Hilfe einer T999 tendieren,
    aber wenn ich das mit VBA lösen würde, dann doch eher so:
    Code:
     
    CatboyJones, 1. Oktober 2020
    #13
  14. Die Vergabe eines doppelten Wertes kann man doch dadurch verhindern, indem man in der Tabelle das betreffende Feld als indiziert aber ohne Duplikate einstellt.
    Dann braucht man keine Überprüfung , ob Werte doppelt vergeben sind. Das macht dann Access automatisch und meckert, wenn man eine schon vergebene Zahl eingibt.

    Frage. Warum wird kein Autowert verwendet ?
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    Fahrer01, 1. Oktober 2020
    #14
  15. Wenn man sich wie in #2 an den Thementitel hält: Einen Primärschlüssel muss man mit Sicherheit nicht extra indizieren, weil er es per Definition bereits ist.
    Also würde man sein Tun dahin richten, einen Fehler des Users und somit eine unverständliche Meldung an ihn zu vermeiden.
     
Thema:

manuell vergebener Primärschlüsselwert

Die Seite wird geladen...
  1. manuell vergebener Primärschlüsselwert - Similar Threads - manuell vergebener Primärschlüsselwert

  2. CSV-Daten per Makro einbinden - manuelle Wahl der Quelldatei

    in Microsoft Excel Hilfe
    CSV-Daten per Makro einbinden - manuelle Wahl der Quelldatei: Liebe Excel-Gemeinde, ich möchte CSV-Daten in eine bereits geöffnete Arbeitsmappe laden. Sie sollen nach jedem Laden eines Datensatzes auf einem anderen Arbeitsblatt dargestellt werden, das den...
  3. Aktualisierbare Tabelle um manuelle Werte erweitern

    in Microsoft Excel Hilfe
    Aktualisierbare Tabelle um manuelle Werte erweitern: Guten Morgen, ich habe eine Kundenliste aus CSV über PQ importiert, die täglich aktualisiert wird, da neue Kunden hinzukommen. Diese Tabelle soll um mehrere Spalten für zusätzliche manuelle Werte...
  4. Einzelnes Tabellenblatt manuell berechnen per Button

    in Microsoft Excel Hilfe
    Einzelnes Tabellenblatt manuell berechnen per Button: Hallo zusammen, ich habe eine Excel-Datei mit mehreren Tabellenblättern. Hierbei möchte ich allerdings lediglich ein Blatt manuell per Button berechnen lassen, während die anderen Tabellenblätter...
  5. Archivierung von Outlook Elementen

    in Microsoft Outlook Hilfe
    Archivierung von Outlook Elementen: Hallo zusammen, ich habe für einen Unterordner in meinem Postfach einen Ordner erstellt, dessen Inhalt auf der Festplatte archiviert werden soll um das Postfach etwas zu entlasten. Dabei bin ich...
  6. Code unterscheidet manuell eingetragenes Datum von VBA-Eintrag

    in Microsoft Excel Hilfe
    Code unterscheidet manuell eingetragenes Datum von VBA-Eintrag: Hallo ihr da draußen, ich habe einen kleinen VBA-Code, mit dem ich ein Datum (17.05.2020) in Zelle J20 eintrage und darunter bis Zeile J30 immer einen Tag weiter (18.05.2020, 19.05.2020 usw.)...
  7. Planner innerhalb eines "Teams" kopieren/ vorrollen nur manuell möglich

    in Microsoft Teams Hilfe
    Planner innerhalb eines "Teams" kopieren/ vorrollen nur manuell möglich: Hallo, wir nutzen MS Planner in Teams für Monatsabschlüsse im Accouting. Für diese Zwecke fallen mehrheitlich die gleichen Aufgaben jeden Monat an. Aus diesem Grund wollten wir den Planner aus...
  8. Word Mac 2011 Manuelle Seitenzahlen

    in Microsoft Word Hilfe
    Word Mac 2011 Manuelle Seitenzahlen: Ich weiß leider nicht, wie ich bei einem Word-Dokument auf Mac (2011) mit Bildelementen manuell Seitenzahlen eingeben kann. Dabei sollen die ersten 3 Seiten frei bleiben und die Seite 3 mit der...
  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