Kontrolle ob Wert in einer Tabelle vorhanden sind

Moderator: ModerationP

Kontrolle ob Wert in einer Tabelle vorhanden sind

Beitragvon uA-ch » 14. Aug 2019, 06:56

Hallo Werte Profis

Ich brauche Deine Hilfe..
Ich habe in einem Formular [frm_003_Datenerfassung] ein Textfeld [txt_ID]

Ich muss den Wert des Textfeld [txt_ID] prüfen ob es in einer anderen Tabelle [tbl_Probepunkt Verwaltung] in der Spalte [Objekt ID] vorhanden ist.
Wenn nicht, soll eine MsgBox kommen mit "ID existiert nicht!"und anschliessend das Textdeld [txt_ID] wieder "leeren"

Ich hab mal versucht..

Code: Alles auswählen
Private Sub txt_ID_Change()
If DCount([tbl_Probepunkt Verwaltung]![Objekt ID] = Me.txt_ID) <> 0 Then  MsgBox "ID existiert nicht!"
Me.txt_ID = ""
Else
   DoCmd.RunSQL "INSERT INTO gesamt..."
End If
End Sub
Urs

Windows 7
Microsoft Office Professional Plus 2010
Benutzeravatar
uA-ch
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 324
Registriert: 16. Sep 2005, 17:58
Wohnort: Luzern

Re: Kontrolle ob Wert in einer Tabelle vorhanden sind

Beitragvon KlausMz » 14. Aug 2019, 08:18

Hallo,
Du muss DCount schon richtig anwenden. Ein Blick in die Hilfe wäre auch gut gewesen.
Das Ereiegnis ist auch ungünstig, verwende "Nach Aktualisierung".
Versuche es mal so:
Code: Alles auswählen
Private Sub txt_ID__AfterUpdate()
    If DCount("*", "[tbl_Probepunkt Verwaltung]", "txt_ID) = " & Me.txt_ID) = 0 Then
        MsgBox "ID existiert nicht!"
        Me.txt_ID = Null
    Else
       DoCmd.RunSQL "INSERT INTO gesamt..."
    End If
End Sub
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Benutzeravatar
KlausMz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 39104
Registriert: 06. Okt 2003, 15:09
Wohnort: Irgendwo in der Pfalz

Re: Kontrolle ob Wert in einer Tabelle vorhanden sind

Beitragvon benny66 » 14. Aug 2019, 08:33

Hallo Urs,
nimm am besten txt_ID_BeforeUpdate
Falls deine [Objekt ID] ein inkrementeller Autowert ist, versuch dies:
Code: Alles auswählen
Private Sub txt_ID_BeforeUpdate(Cancel As Integer)
If Not IsNull(DLookup("[Objekt ID]", "[tbl_Probepunkt Verwaltung]", _
    "[Objekt ID] = " & Me!txt_ID)) _
    And Me!txt_ID <> Nz(Me!txt_ID.OldValue) Then
  MsgBox "Gibt es schon."
  Me.Undo
  Cancel = True
Else
'...
End If
End Sub


PS
Tipp: verwende zukünftig keine Leerzeichen (Sonderzeichen) in Objektnamen, dann kannst du die Klammern weglassen
Gruß Benny
benny66
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 733
Registriert: 22. Nov 2015, 21:56

Re: Kontrolle ob Wert in einer Tabelle vorhanden sind

Beitragvon uA-ch » 14. Aug 2019, 08:55

Hallo Klaus & Benny
Danke für eure Hilfe

@Klaus, Ich habe versucht mich "schlau" zu machen in den Hilfen nur habe ich es nicht verstanden
Der Code funktioniert nicht. Kommt keine Meldung noch bleibt der Code stehen.
@Benny, kommt ein Fehler beim Kompilieren!

Es sollte eine Meldung kommen wenn die Nummer NICHT in der Tabelle ist. Die Tabelle [tbl_Probepunkt Verwaltung] ist nicht am Formular angehängt wo das [txt_ID] ist.

DANKE
Urs

Windows 7
Microsoft Office Professional Plus 2010
Benutzeravatar
uA-ch
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 324
Registriert: 16. Sep 2005, 17:58
Wohnort: Luzern

Re: Kontrolle ob Wert in einer Tabelle vorhanden sind

Beitragvon KlausMz » 14. Aug 2019, 09:09

Hallo,
bitte zeige den Code wie Du es versucht hast, komplett.
Und lasse mal mit einer MsgBox den Wert von Me.txt_ID ausgeben.

Welcher Datentyp (in der Tabelle) ist denn txt_ID ?
Wie heißt das Feld genau in der Tabelle ?

Zu was wird das überhaupt benötigt ?
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Benutzeravatar
KlausMz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 39104
Registriert: 06. Okt 2003, 15:09
Wohnort: Irgendwo in der Pfalz

Re: Kontrolle ob Wert in einer Tabelle vorhanden sind

Beitragvon uA-ch » 15. Aug 2019, 11:06

Hallo Klaus
Ich will damit Prüfresultate von erfassen. Wenn dieser Probepunkt nicht existiert, darf unter diese Nummer nichts erfasst werden. Die Probepunktestamm ist in der Tabelle tbl_Probepunkt Verwaltung.
Nun will ich im Formular frm_003_DatenErfassen Daten erfassen. Die erste Eingabe ist der Probepunkt txt_ID . Nach Eingabe muss dringend geprüft werden, ob diese Probepunkt auch tatsächlich in der Tabelle tbl_Probepunkt Verwaltung Feld Objekt ID existiert.
Wenn nicht soll eine Meldung erscheinen mit der Mitteilung "Probepunkt existiert nicht!" und anschliessend das Feld txt_ID wieder leeren um dem Benutzer die Möglichkeit geben eine vorhandener Punkt zu erfassen.

tbl_Probepunkt Verwaltung Feld Objekt ID ist eine Zahl
frm_003_DatenErfassen Feld Das txt_ID ist eine Zahl
frm_003_DatenErfassen besitzt die Datenquelle tbl_Daten

Anbei herzlichen Dank für deine Antworten

Code: Alles auswählen
Private Sub txt_ID__AfterUpdate()
    If DCount("*", "[tbl_Probepunkt Verwaltung]", "txt_ID) = " & Me.txt_ID) = 0 Then
        MsgBox "ID existiert nicht!"
        Me.txt_ID = Null
    Else
       DoCmd.RunSQL "INSERT INTO gesamt..."
    End If
End Sub
Urs

Windows 7
Microsoft Office Professional Plus 2010
Benutzeravatar
uA-ch
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 324
Registriert: 16. Sep 2005, 17:58
Wohnort: Luzern

Re: Kontrolle ob Wert in einer Tabelle vorhanden sind

Beitragvon KlausMz » 15. Aug 2019, 11:16

Hallo,
es muss der Name des Feldes in der Tabelle verwendet werden.
Code: Alles auswählen
    If DCount("*", "[tbl_Probepunkt Verwaltung]", "[Objekt ID] = " & Me.txt_ID) = 0 Then
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Benutzeravatar
KlausMz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 39104
Registriert: 06. Okt 2003, 15:09
Wohnort: Irgendwo in der Pfalz

Re: Kontrolle ob Wert in einer Tabelle vorhanden sind

Beitragvon knobbi38 » 15. Aug 2019, 11:30

OT:

Hallo,
die Erfassung des Probepunktes könnte man auch einfacher mit einer Kombobox gestalten, die nur mit den verfügbaren (und noch nicht ausgefüllten Daten) geladen wird anstatt aufwendig eine ID-Eingabe zu Validieren.

Gruß Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1302
Registriert: 02. Jul 2015, 14:23

Re: Kontrolle ob Wert in einer Tabelle vorhanden sind

Beitragvon uA-ch » 15. Aug 2019, 11:44

Danke Klaus ... so funktioniert es.
Urs

Windows 7
Microsoft Office Professional Plus 2010
Benutzeravatar
uA-ch
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 324
Registriert: 16. Sep 2005, 17:58
Wohnort: Luzern

Re: Kontrolle ob Wert in einer Tabelle vorhanden sind

Beitragvon uA-ch » 15. Aug 2019, 12:06

Hallo Klaus

ich nochmals,
möchte anschliessend den Focus wieder auf das Textfeld txt_ID setzen.
Ich versuche es mit
Code: Alles auswählen
Me.txt_ID.SetFocus
funkt. nicht...

Code: Alles auswählen
Private Sub txt_ID_AfterUpdate()
   If DCount("*", "[tbl_Probepunkt Verwaltung]", "[Objekt ID] = " & Me.txt_ID) = 0 Then
        MsgBox "ID existiert nicht!"
        Me.txt_ID.SetFocus
        Me.txt_ID = Null
    Else
    Me.Refresh
    End If

End Sub
Urs

Windows 7
Microsoft Office Professional Plus 2010
Benutzeravatar
uA-ch
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 324
Registriert: 16. Sep 2005, 17:58
Wohnort: Luzern

Re: Kontrolle ob Wert in einer Tabelle vorhanden sind

Beitragvon uA-ch » 15. Aug 2019, 13:25

ich habs, muss den Fokus zuerst auf ein anderes Steuerelement setzten
im Code zum txt_Datum.SetFocus



Code: Alles auswählen
Private Sub txt_ID_AfterUpdate()
   If DCount("*", "[tbl_Probepunkt Verwaltung]", "[Objekt ID] = " & Me.txt_ID) = 0 Then
        txt_Datum.SetFocus
        MsgBox "Probepunkt existiert nicht!"
        Me.txt_ID.SetFocus
        Me.txt_ID = Null
    Else
    Me.Refresh
    End If

End Sub

Urs

Windows 7
Microsoft Office Professional Plus 2010
Benutzeravatar
uA-ch
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 324
Registriert: 16. Sep 2005, 17:58
Wohnort: Luzern

Re: Kontrolle ob Wert in einer Tabelle vorhanden sind

Beitragvon KlausMz » 15. Aug 2019, 13:47

Hallo,
üblicherweise erfasst man solche Daten mit gebundenen Forumlaren in einem Hauptformular mit Unteformular.
Im Hafo die Daten der Tabelle "tbl_Probepunkt Verwaltung" und im Ufo die Erassung die Resultate.
Hafo und Ufo sind über die Schlüsselfelder zu verknüpfen.
Dann entfällt der komplette VBA Code zur Prüfung ersatzlos , weil es technisch gar nicht möglich ist Prüfresultate zu erfassen zu dem es keine "Objekt ID" gibt.

Du solltest das Vorhaben überdenken, es geht viel einfacher.
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Benutzeravatar
KlausMz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 39104
Registriert: 06. Okt 2003, 15:09
Wohnort: Irgendwo in der Pfalz

Re: Kontrolle ob Wert in einer Tabelle vorhanden sind

Beitragvon knobbi38 » 15. Aug 2019, 13:56

Hallo,

für eine Validierung wird normalerweise das Before_Update Event verwendet, wie Benny es schon vorgeschlagen hatte. Mit Cancel und Undo wird eine fehlerhafte Eingabe zurückgesetzt und dann wird auch kein "spezielles" Fokushandling notwendig. Das wäre die standard Behandlung.
Man kann natürlich auch von "Hinten durch die Brust ins Auge" ...

Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1302
Registriert: 02. Jul 2015, 14:23

Re: Kontrolle ob Wert in einer Tabelle vorhanden sind

Beitragvon KlausMz » 15. Aug 2019, 14:07

Hallo,
ja, das gehört in "Vor Aktualisierung" habe ich übersehen.
Aber, wie gesagt mit Hafo und Ufo wird das komplett überflüssig.
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Benutzeravatar
KlausMz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 39104
Registriert: 06. Okt 2003, 15:09
Wohnort: Irgendwo in der Pfalz

Re: Kontrolle ob Wert in einer Tabelle vorhanden sind

Beitragvon uA-ch » 16. Aug 2019, 09:27

Besten Dank Ulrich und Klaus :)
Ich werde mir das "Hinten durch die Brust ins Auge" ... annehmen und Eure Tipps nutzen und den Weg "....direkt ins Auge....." nutzen

Sonniger Gruss aus der Schweiz
Urs

Windows 7
Microsoft Office Professional Plus 2010
Benutzeravatar
uA-ch
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 324
Registriert: 16. Sep 2005, 17:58
Wohnort: Luzern


Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste