Korbinian Bachl: VBA - spalte auf einzigartigkeit des Datensatztes Prüfen

Hi Forum...

Hat jemand Ahnung von Access ? - ich habe dort ein Problem, ich möchte dass er in einem Formular nach Fokusverlust checkt ob diese daten doppelt vorhanden sind (in der Tabelle) - bin aber an VBA dran zu scheitern da ich die syntax nich ganz kapier - und anlaufstellen die ohne viel knete helfen kenne ich bisher nicht im MS bereich...

im allgemeine ist mein ansatz so ala: Formular - Eigenschafte, nach Fokusverlust -> VBA code ... soweit so gut aber das wars auch da ich das ganz in PHP in 5 mins gelöst hätte in VBA es aber net hinbekomme...

wäre toll wenn jemanden was wüsste,

grüße

Korbinian Bachl

  1. Moin Korbinian,

    so auf die Schnelle kann ich dir zwar jetzt auch nicht helfen, aber im Spotlight-Access-Forum (http://www.spotlight.de/foren/msa/forum_msa.htm) findest du bestimmt jemanden, der's kann...

    Gruss
    Dirk

  2. Hallo Korbinian

    Versuchs mal mit folgendem Code:

    Private Sub Formularfeldname_LostFocus()
        
           If Me!Formularfeldname.Value = DLookup("Spaltename", "Tabellename", "irgendeinFeld=10") Then
               MsgBox "Achtung: Wert ist doppelt"
          End If
        
       End Sub

    Mit 'Me!Formularfeldname.Value' (.Value könnte auch weggelassen werden) liesst Du den aktuellen Feldwert in Deinem Formular aus.
    Mit DLookup (entspricht im Funktionsassistent "DomWert") ermittelst Du einen Wert aus einer Domäne. Die Domäne ist die Tabelle (2. Argument), der Wert ist der Spaltenname der Tabelle (1.Argument). Mit dem 3. Argument kannst Du optional die Domäne (Menge der Datensätze) einschränken, wie bei einer WHERE-Klausel ohne "WHERE". Mehr dazu in der Access-Hilfe unter DLookup, bzw. DomWert.

    Der Syntax ist ok, sonst ist der Code aber nicht weiter getestet.
    Problematisch könnte hier die Rehenfolge der Ereignisse sein.
    Tritt das Ereigniss "LostFocus" vor oder nach dem Aktualisieren des Datensatzes in der Tabelle auf?
    Entsprechend müsste man die Prüfung ins Ereignis "Vor Aktualisieren" (BeforeUpdate) legen.

    Grüsse
    Tom