Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Bernd Sowa am September 02, 2024, 14:18:22

Titel: Auf vorhandene Daten überprüfen
Beitrag von: Bernd Sowa am September 02, 2024, 14:18:22
Hallo zusammen,
ich habe mal wieder ein Problem und würde mich über Hilfe freuen.

Ich habe ein Formular über das ich Datensätze erzeugen kann.
Über eine Anfügeabfrage werden zum Beispiel fortlaufende Datensätze erzeugt zwischen [Zahlenfeld2] und [Zahlenfeld3].
Z.B. Eingabe [Zahlenfeld2]="3" und [Zahlenfeld3] ="6" erzeugt 4 Datensätze von 3 bis 6.
Klappt gut.

Wenn diese Liste erweitert werden soll erolgt das über ein ähnliches Formular wie die Ersteingabe.
Dabei möchte ich überprüfen ob es bereits entsprechende Werte gibt.

If IsNull(DLookup("Zahlenfeld1", "qry_Quelle", "Zahlenfeld1 = " & Me.Zahlenfeld2)) Then
 MsgBox "Die Nummer gibt es schon!"
 Exit Sub
 End If

Dieser Code funktioniert, fragt aber nur einen Wert ab.
Ich möchte aber eine Reihe von Werten überprüfen.

Ich habe es mit diesem Code versucht aber das funktioniert nicht:
If IsNull(DLookup("Zahlenfeld1", "qry_Quelle", "Zahlenfeld1 = " & BETWEEN Me.Zahlenfeld2 AND Me.Zahlenfeld3)) Then...

Ich komme gerade nicht weiter.
Kann mir jemand sagen was ich falsch mache?

LG


Titel: Re: Auf vorhandene Daten überprüfen
Beitrag von: MzKlMu am September 02, 2024, 15:17:44
Hallo,
wenn Du auf Zahlenfeld1 einen eindeutigen Index legst, ist es nicht mehr möglich doppelte Zahlen zu erzeugen.


Ansonsten musst Du jedes einzelne Feld prüfen ob schon vorhanden.
Deine Logik mit IsNull ist auch falsch. Wenn mit DLookUp nichts gefunden wird (IsNull) ist ja die Zahl nicht vorhanden. Du musst mit Not IsNull(.....) prüfen.
Titel: Re: Auf vorhandene Daten überprüfen
Beitrag von: Bernd Sowa am September 02, 2024, 15:33:47
Hallo und danke für die Antwort.
Mit Index meinst du wahrscheinlich, in der Tabelle...
Das geht nicht weil in der Tabelle durchaus in dem betreffenden Feld mehrmals die gleichen werte stehen können.
Die Abfrage ist gefiltert und dann ist jeder Wert wieder nur ein mal vorhanden.

Wie kann ich das denn umsetzen mit "jedes einzelne Feld prüfen"?

Wie gesagt, ich möchte prüfen ob irgendeiner der Werte zwischen Zahlenfeld2 und Zahlenfeld3 in der Abfrage bereits vorhanden ist.
Ich habe da keine Idee.
Titel: Re: Auf vorhandene Daten überprüfen
Beitrag von: MzKlMu am September 02, 2024, 15:41:09
Hallo,
ZitatMit Index meinst du wahrscheinlich, in der Tabelle...
Ja, einen Index gibt es nur in Tabellen.
ZitatDas geht nicht weil in der Tabelle durchaus in dem betreffenden Feld mehrmals die gleichen werte stehen können.
Das verstehe ich nicht. Du willst doch prüfen, ob die Zahl vorhanden ist, warum werden dann Duplikate zugelassen ?
Wie soll das geregelt werden ob anfügen oder nicht ?

Das musst Du mal genauer erklären.
Titel: Re: Auf vorhandene Daten überprüfen
Beitrag von: Bernd Sowa am September 02, 2024, 15:49:07
ich verwalte in der Tabelle mehrere "Projekte".
Jedes dieser Projekte hat Werte im Zahlenfeld1.

Wenn ich zum Anfügen in der Abfrage nur ein bestimmtes Projekt anzeigen lasse habe ich eindeutige Zahlen.
Das heißt, jeder Wert nur einmal.
Die Überprüfung soll verhindern, dass in einem Projekt doppelte Werte sind.
Titel: Re: Auf vorhandene Daten überprüfen
Beitrag von: MzKlMu am September 02, 2024, 16:08:28
Hallo,
dann lege über die ProjektID und das Zahlenfeld einen eindeutigen Index. Dann kann es automatisch keine Doppelungen je Projekt geben.

Wenn Du trotzdem prüfeb willst, versuche es so (ungetestet):
Dim Z As Long
    For Z = Me.Zahlenfeld2 To Me.Zahlenfeld3
        If DCount("Zahlenfeld1", "qry_Quelle", "Zahlenfeld1 = " & Z) > 0 Then
           MsgBox "Die Nummer " & Z & " gibt es schon!"
        Exit Sub
        End If
    Next Z
Titel: Re: Auf vorhandene Daten überprüfen
Beitrag von: Bernd Sowa am September 02, 2024, 16:20:57
Geht das denn?
Ich habe ja sehr oft die gleiche ProjektID in der Tabelle.
Es können mehrere hundert Datensätze zu einem Projekt sein.
Wenn ich darüber einen Index lege reduziere ich das auf einen Eintrag.
Vielleicht verstehe ich dich nicht richtig.


Meine Absicht ist es, dem Benutzer über eine MsgBox mitzuteilen, dass er Werte doppelt anlegen möchte und dann den Anfügeprozess zu stoppen.
Das alles soll direkt im Formular passieren.

Titel: Re: Auf vorhandene Daten überprüfen
Beitrag von: MzKlMu am September 02, 2024, 16:38:21
Hallo,
Du verstehst es nicht richtig.
ZitatWenn ich darüber einen Index lege reduziere ich das auf einen Eintrag.
Du musst einen eindeutigen zusammengesetzten Index über beide Felder (ProjektID und Zahlenfeld) legen. Dann kann es die Kombination aus Zahl und ProjektID nur ein mal geben. Und das ist ja das was Du willst.
ZitatDie Überprüfung soll verhindern, dass in einem Projekt doppelte Werte sind.
Genau das macht der vorgeschlagene Index.

Ansonsten habe ich Dir ja einen Vorschlag für eine Prüfung per VBA gemacht.
Titel: Re: Auf vorhandene Daten überprüfen
Beitrag von: Bernd Sowa am September 03, 2024, 09:12:21
Guten Morgen Klaus, der Code funktioniert prima.
Danke dafür.
Du hast mir sehr geholfen.