Anzeige

Unique Wert bei Spalte VBA


nchristoph

Erfahrenes Mitglied
#1
Hallo zusammen,

ich habe folgendes Problem bei einem Programm:

Der Wert im Feld PartieNr soll immer unique sein, darf also nicht doppelt vergeben werden.

Wenn jetzt mehrere Personen mit dem Programm arbeiten, kann es vorkommen, das dies allerdings passiert.

Mit folgendem Code hole ich mir die letzte PartieNr

Code:
Function holeNaechstePartieNR()
On Error GoTo hNPnr_err
   
    Dim sql As String
    Dim myDb As DAO.Database, rstRekl As DAO.Recordset
   
    sql = "SELECT DISTINCT Max(PartieNr) AS Errg FROM Ubernahmeliste "

    Set myDb = DBEngine.Workspaces(0).Databases(0)
    Set rstRekl = myDb.OpenRecordset(sql, dbOpenDynaset)

    holeNaechstePartieNR = Nz(rstRekl!Errg + 1, 1)

    rstRekl.Close
    myDb.Close
   
hNPnr_ende:
    Exit Function
hNPnr_err:
    MsgBox Err.Description
    Resume hNPnr_ende
End Function
Das die einzelnen "Sessions" werden anhand der Lieferscheinnummer unterschieden. Würde es was bringen wenn ich eine WHERE Klausel anfüge?

Braucht Ihr noch mehr Infos?

Das Programm kann ich leider nicht hochladen, ist zu gross.

mfg
Christoph
 

Yaslaw

n/a
Moderator
#2
Es scheint sich um MS Access zu handeln.
Warum nicht einfach das Feld in der Tabelle auf Unique setzen?

Dein Problem ist, dass die sie berechnest und erst später speicherst.
Es gibt da 2 Möglichkeiten:
1) Die Nummer erst beim Insert lösen. Nachteil: Man sieht sie nicht beim Erfassen der Daten
2) Eine eigene Sequenz-Tabelle anlegen. In dieser die neue Neue Nummer gleich Eintragen. Nachteil. Wird eine EIngabe verworfen, ist die Nummer trotzdem vergeben.

Ich hatte vor Jahren mal eine Sequence-Klasse geschrieben, um mit Sequenzen umgehen zu können
http://wiki.yaslaw.info/doku.php/vba/access/classes/sequence
 

nchristoph

Erfahrenes Mitglied
#3
Danke für die Antwort Yaslaw.

Ja es handelt sich hier um MSAccess, habe ich vergessen zu erwähnen.

Wie setze ich in Access ein Feld auf Unique?

Ich habe schon gegooglet aber nur Funktionen für Arrays gefunden.

Eine eigene Sequenz-Tabelle anlegen. In dieser die neue Neue Nummer gleich Eintragen. Nachteil. Wird eine EIngabe verworfen, ist die Nummer trotzdem vergeben.
Das wäre egal, eine Nummer soll auf jeden Fall nur einmal genommen werden können!
 
Anzeige

Neue Beiträge

Anzeige