cyberkey
Goto Top

Dublikate Verhindern

Abfangen von Dublikaten.

Hallo,
hat jemand eine Idee wie man diese Fehlermeldung abfangen kann?
Hab versucht dublikate mit nem Index zu verhindern aber das sieht etwas unschön aus...
vll. gibt es ja eine elegantere Lösung.

Vor aktualisierung prüfen...
und dann wenn vorhanden Cancel.. oder so..


Die Spalte nennt sich IP_ID
und dort sind eben Nummern von 1-> 999

Das Problem ist das jenes Feld intern mehrere Spalten hat... ich weiß nicht wie man das in der Konstelation handhabt.


28944f305b5f02a585272c144a33f6e4

1a67392eaff1dacfcdf30681274c962c

[edit: 8.4.10]
Es geht um eine Access Datenbank richtig =)
Aber die "Lösung" liegt im VBA Code...
Soweit so gut... habe es notdürftig mit nem Index gelöst das die Nummern in "PI_ID" nicht doppelt vorhanden sein können. Aber die unwissendlichen Büroarbeitskräfte kennen sich damit nicht aus und sollen die tabelle nur befüllen deshalb. Sollte eine andere Lösung her... die Diese Fehlermeldung abfängt.

Content-Key: 140065

Url: https://administrator.de/contentid/140065

Printed on: April 19, 2024 at 19:04 o'clock

Member: RedWraith
RedWraith Apr 07, 2010 at 19:53:31 (UTC)
Goto Top
Ich verstehe nicht ganz.

Du hast also eine Tabelle, die eine Spalte IP_ID hat. Diese Spalte soll UNIQUE INDEX sein.

Und du möchtest jetzt, dass die Fehlermeldung unterdrückt wird, bzw besser behandelt wird und durch deine eigene ersetzt wird, wenn du neue Spalten per INSERT hinzufügst ?

Geht es hier um eine selbsterstelle Maske, eine Abfrage, ein VB Skript ?


Ein paar mehr Details wären schön.
Member: Logan000
Logan000 Apr 08, 2010 at 07:28:21 (UTC)
Goto Top
Moin Moin

@RedWraith
Du hast also eine Tabelle, die eine Spalte IP_ID hat. Diese Spalte soll UNIQUE INDEX sein.
Warum? Evtl hat er schon einen PK. Darüber hinaus geht es hier offenbar um ein Feld das Benutzereingaben enthällt.
Ein Index ist da genau das richtige.

Geht es hier um eine selbsterstelle Maske, eine Abfrage, ein VB Skript ?
Es handelt sich wohl um eine Access DB.

Ein paar mehr Details wären schön.
Das sehe ich auch so.

@Cyberkey
Vor aktualisierung prüfen...und dann wenn vorhanden Cancel oder so.
Genau So.
Ist natürlich Arbeit. Aber wie sagt man: Wer schön sein will muß leiden. face-wink

Gruß L.
Member: Cyberkey
Cyberkey Apr 08, 2010 at 13:37:54 (UTC)
Goto Top
Gab nen Edit oben... hoffe es ist so etwas verständlicher.

[EDIT] So ca. hab ich mir das gedacht:

If DCount("*", "Hardware_????", "[IP_ID]='" & Me!IP_eingabe & "'") > 0 Then  
MsgBox "Wert ist schon da "  
Cancel = True
End If
End Sub

Datentyp Fehler ???


Meine Vermutung:
ergebnis = DCount("*", "Hardware_????", "[IP_ID]='" & Me!IP_eingabe & "'")

Beide Werte sind 30 in meinem Beispiel test. Da ME!IP_eingabe 2 spalten hat wie oben zu sehen wird es irgendwie in text convetiert und dieser kann natürlich nicht mit IP_ID (zahl) abgeglichen werden... owohl beides zahlen sind.. wie löst man das?
Member: Logan000
Logan000 Apr 09, 2010 at 12:05:37 (UTC)
Goto Top
Moin Moin

Das Formularfeld IP_Eingabe ist doch ein Kombinationsfeld.
Dies hat die Eigenschaft "gebundene Spalte". Das ist bei mehrspaltigen Kombinationsfeldern genau die, deren Wert mit Me!IP_eingabe ausgegeben wird.
D.h. ein deinen Fall: setz die gebundenen Spalte auf 2 und Me!IP_eingabe hat den Wert Ohne "Punkt"
(Kannst du dir ja mal in einer msgbox ausgeben lassen.)
Darüber hinaus solltest Du im DCount die Hochkommas um Me!IP_eingabe weglassen.
If DCount("*", "Hardware_????", "[IP_ID]="& Me!IP_eingabe) > 0 Then   
..
Damit machst du aus deiner Zahl wieder einen String.

Gruß L.
Member: Cyberkey
Cyberkey Apr 09, 2010 at 15:16:20 (UTC)
Goto Top
Danke für die Anregung,.. ich werde es sobald wie möglich mal ausprobieren =)... grad Feierabend ^^

Also zurück aus dem Wochenende:
Problem ist Gelöst ;)
Danke

Gruß Cyberkey