Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Gültigkeitsregel für nicht doppelte Kundennummern

Begonnen von Accessfreund, Oktober 06, 2010, 14:58:08

⏪ vorheriges - nächstes ⏩

Accessfreund

Guten Morgen,

Da steht "Kundennummer", nur wo kommt das her?
In der Tabelle wo die Daten gespeichert werden steht "Kundennr:"

Ich habe das Feld aus der Tabelle KUNDEN entnommen und da werden auch die Daten gespeichert.

Gruß
Gaby


[Anhang gelöscht durch Administrator]
Der Computer ist nur so schlau wie der, der ihn bedient :-)
Liebe Grüße Gaby

MzKlMu

Hallo,
ich kann auf Deinen Bildern nirgends ein Feld "Kundennummer" endecken.
Kannst Du mal verraten, wo Du ein solches Feld siehst?
Gruß Klaus

Accessfreund

Hay,

Bild 3:
Formularentwurf

      Feld anklicken
      Feldeigenschaften anzeigen lassen
      Register 'Andere'
      was steht neben Name?    KUNDENNUMMER

Bei mir steht auf Bild 4 zu sehen ist Kundennumme, ich habe das da aber nicht hineingeschrieben und in meinen Tabellen und Formular ect. steht überall KUNDENNR:

wie auf Bild 5 zusehen ist.
Gruß Gaby
Der Computer ist nur so schlau wie der, der ihn bedient :-)
Liebe Grüße Gaby

Accessfreund

Sorry habe ich doch hinein geschrieben, dachte aber nicht dass es eine wirkung hat sonst würde da z.B. Text67 stehen.

Wie meine Signatur sagt, ist der Computer nur so schlau wie der der Ihn edient. Gell ich weiß kann man mir noch helfen?

Muss der Code jetzt nur umgeschrieben werden?
Der Computer ist nur so schlau wie der, der ihn bedient :-)
Liebe Grüße Gaby

database

Hallo Gaby,

tja wieso das Feld anders heißt müsstest DU wissen, schließlich hast DU ja die DB geschnitzt oder?  ;D
Wahrscheinlich hat es ursprünglich Kundennummer geheißen und du hast es umbenannt, im Formular ist es beim alten Namen geblieben hier wurden nur die Bindung aktualisiert.
Ist aber jetzt egal.

Jetzt machst du Folgendes:

Im Formularentwurf das Feld Kundennummer anklicken und in den Feldeigenschaften unter Ereignisse 'Vor Aktualisierung' auswählen
Hier sollte eigentlich schon [Ereignisprozedur] eingetragen sein - stimmts?
Wenn du nun wieder auf die drei Punkte rechts davon klickst gelangst du direkt in die betreffende Ereignisprozedur,
in der folgender Code stehen müsste:


Private Sub Kundennummer_BeforeUpdate(Cancel As Integer)
   If Nz(DLookup("Kundennummer", "Kunden", "Kundennummer=" & Me!Kundennummer), 0) = Me!Kundennummer Then
       MsgBox "Kundennummer gibt es schon"
       Cancel = True
       Me.Undo
   End If
End Sub


Diese Zeile ----  If Nz(DLookup("Kundennummer", "Kunden", "Kundennummer=" & Me!Kundennummer), 0) = Me!Kundennummer Then

Tausche nun bitte gegen diese aus:

If Nz(DLookup("[Kundennr:]", "Kunden", "[Kundennr:]=" & CLng(Me!Kundennummer)), 0) = CLng(Me!Kundennummer) Then

und wenn das jetzt nicht funktioniert ..... :'(

Grüße
Peter

MzKlMu

Hallo,
das ist der Name des Feldes, das hat mit dem Feld wo hingeschrieben wird nichts zu tun.
Geschrieben wird in den Steuerelementinhalt. Und der ist "Kundennr:".
Ändere den Code wie folgt:

Private Sub Kundennummer_BeforeUpdate(Cancel As Integer)
   If Nz(DLookup("[Kundennr:]", "Kunden", "[Kundennr:]=" & Me!Kundennummer), 0) = Me!Kundennummer Then
       MsgBox "Kundennummer gibt es schon"
       Cancel = True
       Me.Undo
   End If
End Sub

Denn Doppelpunkt solltest Du entfernen, im Tabellenentwurf. Code aber dann anpassen. Auch den Steuerelementinhalt.
Gruß Klaus

Accessfreund

Hallo Ihr zwei,

@database
ich habe den Code probiert funktioniert nicht, da kommt keine Meldung wenn ich eine schon vergebene Nummer eingebe.
Da steht nichts im oberen Formular, aber im Unterformular stehen die Daten vom ersten Kunden, der die Nummer schon hat.

@MzKIMu
Ich habe dann den Doppelpunkt in den Tabellen bei Kundennr entfent, habe es im Code auch entfernt, funktioniert auch nicht
ich kann eine Nummer die ich schon habe eingeben, es stehen weder Daten im Formular noch im Unterformular
und wenn ich ins Unterformular springen möchte kommt eine Fehlermeldung (siehe Bild6)
Bin ich wirklich so blöd was mache ich falsch?

[Anhang gelöscht durch Administrator]
Der Computer ist nur so schlau wie der, der ihn bedient :-)
Liebe Grüße Gaby

MzKlMu

Hallo,
die Fehlermeldung resultiert aus dem Index ohne Duplikate. Wobei Du ja schon geschrieben hast, es würden doppelte Nummern in der Tabelle eingetragen. Was aber völlig unmöglich ist.

Zeige bitte mal den aktuellen Code und wie heist das Feld jetzt in der Tabelle und auf dem Formular.
Bitte nachsehen und den Code hier rein kopieren, nicht abschreiben.
Gruß Klaus

Accessfreund

Hay
Code kopiert nicht geschrieben:

Private Sub Kundennummer_BeforeUpdate(Cancel As Integer)
    If Nz(DLookup("[Kundennr]", "Kunden", "[Kundennr]=" & Me!Kundennummer), 0) = Me!Kundennummer Then
        MsgBox "Kundennummer gibt es schon"
        Cancel = True
        Me.Undo
    End If
End Sub


Private Sub Kundennr__AfterUpdate()

End Sub


In der Tabelle steht:
Kundennr
Im Formular steht (Steuerelementinhalt):
Kundennr

Der Computer ist nur so schlau wie der, der ihn bedient :-)
Liebe Grüße Gaby

MzKlMu

Hallo,
der Steuerelementinhalt war nicht die Frage, der Name des Feldes im Formular wird gebraucht.

Und was steht in der Zeile im Ereignis "Vor Aktualisierung" im Formularentwurf.
Gruß Klaus

Accessfreund

Hay
da steht auch Kundennr

es steht überall Kundennr nirgends Kundennummer mehr
Der Computer ist nur so schlau wie der, der ihn bedient :-)
Liebe Grüße Gaby

database

#41
Hallo Gaby,

Bitte ---  ist das noch aktuell  ----  Private Sub Kundennummer_BeforeUpdate(Cancel As Integer)

oder steht da jetzt ---- Private Sub Kundennr_BeforeUpdate(Cancel As Integer)

wenn die 2. Varriante zutreffend ist,
ändere das da ---   & Me!Kundennr), 0) = Me!Kundenr Then

nochmal auf  ---    & CLng(Me!Kundenr)), 0) = CLng(Me!Kundennr) Then

Wenn die 1. Variante noch gültig ist,

ändere das da ---   & Me!Kundennummer), 0) = Me!Kundennummer Then

nochmal auf  ---    & CLng(Me!Kundennummer)), 0) = CLng(Me!Kundennummer) Then


Der Grund - Du hast das Formularfeld nicht aus der Datenherkunft geholt sondern extra als Textfeld erstellt (Textfeld67) wodurch das Feld nicht die Information erhalten hat, dass Zahlen drin stehen
Durch obige Änderung wird das behoben (auch)

Dann sollte es laufen!

MzKlMu

#42
Hallo,
dann musst Du natürlich auch die Prozedurkopfanpassen und den Formularbezug.
Private Sub Kundennr_BeforeUpdate(Cancel As Integer)
   If Nz(DLookup("[Kundennr]", "Kunden", "[Kundennr]=" & Me!Kundennr), 0) = Me!Kundennr Then
       MsgBox "Kundennummer gibt es schon"
       Cancel = True
       Me.Undo
   End If
End Sub


@Database
Ich glaube nicht, dass Clng erforderlich ist.
Außerdem hat Sie ja auch den Namen im Formular geändert.
Gruß Klaus

database

#43
Hallo Klaus,

CLng ist nicht erforderlich, wenn das Feldformat auf mindestens 'Standardzahl' eingestellt ist,
Durch das Hinzufügen des Textfeldes (nicht aus der Datenherkunft) ist diese Info nicht vorhanden daher ...

Ich hab's grad ausprobiert - es sei denn ich hätt da was übersehen --  nein :)

Ohne CLng läuft der Code OHNE den True-Zweig anzuspringen durch

Accessfreund

Hallo Ihr zwei,

@MzKlMu
ich habe den Code genommen und eingefügt, habe dann das Feld im Formular gelöscht und aus
der Liste - Vorhandene Felder hinzu fügen - genommen
Kunden => Kundennr

Und Jungs es funktioniert

Viiiiiiiiiiiiiiiiiielen Dank Ihr seid spitze

Wo ist denn der Danke Button wo man anklicken kann
Der Computer ist nur so schlau wie der, der ihn bedient :-)
Liebe Grüße Gaby