Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Autom. Kontrolle der Eingabe??





Frage

Hallo ! Ich möchte so etwas ähnliches wie eine Ersatzteilliste anlegen. Nun hab ich das Problem das ich bereits ca. 350 Datensätze eingegben habe und es mir immer wieder passiert das ich die Angaben Doppelt mache. Gibt es eine automatische Kontrolle die sofort aufzeigt wenn in einer Spalte dieselbe Nummer bereits vorhanden ist ? Danke Andreas P.S.: Das mit der Anmeldung klappt offensichtlich nicht ich hab mich angemeldet trotzdem kommt "Dein Nickname ist schon vergeben" Grummel, grummel

Antwort 1 von Koebi

Grüezi
Versuch es mal mit einem Kombinationsfeld. Dieses darf aber nicht nur Listeneinträge zulassen, sondern auch neue. Zudem braucht es für das Ereignis "Nach Aktualisierung" folgende Ereignisprozedur:
"Me!Titel.Requery".

Sollte klappen.

Gruss
Köbi

Antwort 2 von struppi

Hallo
Hier im Forum wurde auch schon diese Methode vorgeschlagen:

Sub DoppelTest()
Dim rsProjekt As Recordset

Set rsProjekt = Me.RecordsetClone
rsProjekt.MoveFirst
rsProjekt.FindFirst "[Ersatzteilliste]=" & "`" & Me.Teilenummer & "`"
If Not rsProjekt.NoMatch Then
MsgBox "Der Eintrag: " & Me.Teilenummer & " existiert schon", vbInformation
rsProjekt.Close
Exit Sub
End If
Me.Meldung = "OK!"
End Sub
-----------------------------------
Button anlegen mit Functionsaufruf:
Private Sub Befehl1_Click()
DoppelTest
End Sub
-----------------------------------
Feld anlegen mit Namen: Meldung
-----------------------------------
Wenn Du einen Eingabe in dein Nummernfeld im Beispiel "Teilenummer" gemacht hast und willst prüfen ob der Eintrag existiert drückst du den Button.

Gruß struppi
PS: Die Zeichen ` müssen durch Hochkommas ersetzt werden. Der Tabellenname "Ersatzteilliste" muß durch Deinen tatsächlichen Tabellenname ersetzt werden.


Antwort 3 von PotzBlitz

Hallo struppi,

es sieht so aus, als ob sich der Fehlerteufel in deinen letzten Satz eingeschlichen hat. :-)

"Ersatzteilliste" ist nicht der Name der Tabelle, sondern der Name des Feldes aus der Tabelle, die diesem Formular hinterlegt wurde.

Gruss
PotzBlitz

Antwort 4 von draack

Oh heiliger Codd!
Wie wäre es mit der Verwendung dieser Nummer als Primärschlüssel?

Ciao!
Volker.

Antwort 5 von struppi

Hallo PotzBlitz
Du hast recht ,das habe ich durcheinander gebracht.

Also sollte an Stelle von Ersatzteilliste das Wort Teilenummer stehen. Und der Feldname Teilenummer muß angepasst werden.

Danke für Deinen Hinweis.
Gruß Struppi



Antwort 6 von PotzBlitz

Hallo Volker,

es macht durchaus Sinn, die von struppi vorgeschlagene Variante zu verwenden.

1. In einer Tabelle sollte der Primärschlüssel immer ein Autowert sein. Nur so ist bis in alle Ewigkeit eine Eindeutigkeit garantiert, auch über die Löschung des Datensatzes hinaus.

2. Tabellen sollten möglichst liberal gehalten werden, denn die Feld-Regeln können genausogut im Programmteil verwirklicht werden. So kann später flexibel auf neue Anforderungen reagiert werden, indem nur das Programm selbst geändert wird (vorausgesetzt, Programm und Daten sind voneinander getrennt in unterschiedlichen Datenbanken).

3. Wenn der Primärschlüssel einmal geändert werden muss, dann muss er mittels Aktualisierungsweitergabe in sämtlichen Detailtabellen ebenfalls geändert werden, denn schliesslich verwendet man ja den Primärschlüssel für Beziehungen. Je nach Datenbankgrösse kann das ein beträchtlicher Aufwand und in einer Mehrbenutzerumgebung ein nicht zu unterschätzender Stolperstein sein. Dagegen ist ein Primärschlüssel vom Datentyp Autowert (bleibt auch so), kombiniert mit einer einzigen Änderung in einem einzigen Feld (Teilenummer) viel effektiver. Daten sollten auch in Datenbanken eingebettet sein und sie nicht zusammenhalten wie Klebstoff.

4. Wenn du Daten für den Primärschlüssel heranziehst, dann hast du früher oder später einen Mischmasch aus verschiedenen Datentypen wie dbText und dbLong beim Handling des Primärschlüssels. Das macht die Nutzung von wiederverwendbaren Code schwieriger, denn es muss dank unterschiedlichen Datentypen zweigleisig gefahren werden.

5. Der Datentyp Text ist langsamer als Autowert/Long Integer. Bei einem Primärschlüssel/Index wirkt sich das nachteilig aus.

6. Änderungen im Code sind billiger als Änderungen an der Datenstruktur, insbesondere dann, wenn sich die Daten bereits im Einsatz beim Kunden befinden. Wenn von vornherein Programm und Daten in getrennten Datenbanken aufbewahrt wurden, dann müsste nur der korrigierte Code zugeschickt werden.

7. Und das Beste zum Schluss: Sich wiederholende Daten ist Redundanz in Reinstform und damit ein Frevel in einem relationalen Datenbanksystem. ;-)

Gruss
PotzBlitz