Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
MsgBox, wenn Eingabe ID in Formular = ID in Tabelle
Gehe zu Seite 1, 2  Weiter
zurück: Prob mit Kombinationsfeld weiter: Endlosformular Datensätze ansprechen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Gast_Sven
Gast


Verfasst am:
28. Mai 2004, 10:17
Rufname:

MsgBox, wenn Eingabe ID in Formular = ID in Tabelle - MsgBox, wenn Eingabe ID in Formular = ID in Tabelle

Nach oben
       

Hallo,

erstmal ein dickes Lob. Das Forum ist echt Weltklasse und hat mir schon oft weitergeholfen.
Aber jetzt zu meinem Problem und ich hoffe, ihr könnt mir dabei helfen:

In meinem Formular1 lege ich neue Datensätze in Tabelle1 an. Dabei muß ich manuell die Id eingeben, die als "indiziert ohne Duplikate" definiert ist. Autowert kann nicht verwendet werden, da z.b. durch Datenimporte mit verschiedenen Nummernkreisen gearbeitet wird.
Ich hätte nun gerne eine Fehlermeldung , wenn ich in das Feld Id im Formular1 einen Wert eingebe, der bereits in der Tabelle 1 angelegt ist. Bisher kann ich weiterhin Daten eingeben und beim Schließen des Formulars wird der neue Datensatz ohne Meldung nicht abgespeichert (so soll es sein, aber eine Fehlermeldung bereits beim Verlassen des Feldes Id wäre einfach sinnvoller, um dann schon darauf hingewiesen zu werden, daß der Datensatz nicht abgespeichert wird, weil Id schon vorhanden ist).

Lösen wollte ich das mit folgendem Code:
Code:
Private Sub ID_Exit(Cancel As Integer)
    If Me!ID = Tabelle1!ID Then
        MsgBox "ID already exists!", vbOKOnly + vbCritical, "Error"
        Cancel% = True
    End If
End Sub

Nur leider funzt das nicht, egal wie ich den Code (mit meinen Anfängerkenntnissen) umändere.
Habt ihr da ne andere Idee oder mir sagen, ob ich irgendwo einen Denkfehler mache?

Gruß
Sven
Nachtrag: Gast_Sven am 28. Mai 2004 um 10:26 hat folgendes geschrieben:
Ey Sorry,

Könnte bitte jemand die anderen beiden Beiträge von mir löschen?
Internet/Server in der Firma hatte sich aufgehängt beim klicken auf absenden. Habe daher nciht gesehen, ob jetzt Beitrag los geschickt wurde oder nicht.

War echt keine Absicht!!!

Nochmals Sorry
Sven

{So nun hätten wir wieder aufgeräumt Very Happy } Lothi
TomK
VBA-Programmierer


Verfasst am:
28. Mai 2004, 10:30
Rufname:


AW: MsgBox, wenn Eingabe ID in Formular = ID in Tabelle - AW: MsgBox, wenn Eingabe ID in Formular = ID in Tabelle

Nach oben
       

Um auf die Werte in der Tabelle zuzugreifen arbeitest du am besten mit ADO und einem Recordset. Folgende Funktion überprüft, ob schon eine ID, die als String formatiert ist, vorhanden ist:
Code:
Private Function CheckExistingID(ByVal ID As String) As Boolean
    Dim con As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Set con = CurrentProject.Connection
   
    Dim sql As String

    If ID <> "" Then
        sql = "SELECT * FROM Tabelle1 WHERE ID = '" & ID & "'"
        rs.Open sql, con, adOpenStatic
           
            If rs.EOF = True Or rs.BOF = True Then 'wurde kein Eintrag gefunden
                CheckExistingFall = False
            Else 'es wurde ein Eintrag gefunden
                CheckExistingFall = True
            End If
           
        rs.Close
        Set rs = Nothing
        Set con = Nothing
    End If
End Function

Die Funktion gibt dir FALSE zurück, falls kein Eintrag gefunden wurde.
Versuchs mal mit folgendem Code:
Code:
Private Sub ID_Exit(Cancel As Integer)
    If CheckExistingID(Me.ID) Then
        MsgBox "ID already exists!", vbOKOnly + vbCritical, "Error"
        Cancel% = True
    End If
End Sub

_________________
A00, WINXP
lothi
c#, .Net


Verfasst am:
28. Mai 2004, 10:45
Rufname:
Wohnort: Birgisch

AW: MsgBox, wenn Eingabe ID in Formular = ID in Tabelle - AW: MsgBox, wenn Eingabe ID in Formular = ID in Tabelle

Nach oben
       

Hallo

Ich habe dir inzwischen im anderen Beitrag auch eine Lösung geschrieben. Dies ist jetzt schon 3. Eröfnete Thema:
Lothi hat folgendes geschrieben:
Hallo

In VBA kannst du so nicht auf die Daten einer Tabelle zugreifen das geht über die Funktion DLookUp oder über ein Recordset.

Nehmen wir hier mal einfachheitshalber DLookUp.
Code:
Private Sub ID_Exit(Cancel As Integer)
    If DLookup("ID", "Tabelle1", "ID = " & Me!id) Then
         If MsgBox("ID already exists!", vbOKCancel + vbCritical, _
                   "Error") = vbOK Then   'So das du das Feld verlassen kannst
            Cancel% = True
          Else
            Me.Undo              'Zurücksetzen sämtlicher Eingaben im Formular
        End If
    End If
End Sub

_________________
Gruss Lothi, der Bastler
Feedback ist die beste Möglichkeit mir zu sagen ob die Antwort geholfen hat!
AC2002, WinXP, Office XP
Gast_sven
Gast


Verfasst am:
28. Mai 2004, 12:07
Rufname:

Laufzeitfehler - Laufzeitfehler

Nach oben
       

Hi,

Danke schon mal.

@TomK: Bei Anwendung der Deiner Lösung kriege ich die Meldung: Fehler beim Kompilieren und der Ausdruck "con As New ADODB.Connection " ist unbekannt oder so ähnlich. Habe die Meldung nicht mehr vor Augen, weil ich Lothis Lösung umgesetzt habe.

@Lothi: funzt wunderbar, nur leider gibt es noch ein kleines Problem mit einem Laufzeitfehler. wenn ich nämlich nach der Meldung "Id exists" oder genrell das Feld Project-ID (Mein richtiger Feldname) leer lasse bzw. den eingegeben Wert lösche und ein anderes Feld, button oder exit klicke kriege ich den Laufzeitfehler 3075: Syntaxfehler (fehlender Operator) in Abfrageausdruck '[Project-ID]='.

Wie kann man den Fehler beheben? Habe ich bei der Umsetzung was falsch gemacht? Anbei der angewandte Code.
Code:
Private Sub Project_ID_Exit(Cancel As Integer)
    If DLookup("[Project-ID]", "[Project]", _
               "[Project-ID] = " & Me![Project-ID]) Then
        If MsgBox("ID already exists!", vbOKCancel + vbCritical, _
                  "Error") = vbOK Then    'So das du das Feld verlassen kannst
            Cancel% = True
          Else
            Me.Undo              'Zurücksetzen sämtlicher Eingaben im Formular
        End If
    End If
End Sub

Gruß
Sven
Willi Wipp
Moderator


Verfasst am:
28. Mai 2004, 12:54
Rufname:
Wohnort: Raum Wiesbaden


Re: MsgBox, wenn Eingabe ID in Formular = ID in Tabelle - Re: MsgBox, wenn Eingabe ID in Formular = ID in Tabelle

Nach oben
       

Hi Sven,

das kannst Du vorher abfangen, z.B. so
Code:
Private Sub Project_ID_Exit(Cancel As Integer)
    If IsNull(Me![Project-ID]) Then
'    If Nz(Me![Project-ID], 0) = 0 Then 'oder so
        'MsgBox "[Project_ID] ist leer!"
        Exit Sub
    End If
    If DLookup("[Project-ID]", "[Project]", _
               "[Project-ID] = " & Me![Project-ID]) Then
        If MsgBox("ID already exists!", vbOKCancel + vbCritical, _
                  "Error") = vbOK Then    'So das du das Feld verlassen kannst
            Cancel% = True
          Else
            Me.Undo              'Zurücksetzen sämtlicher eingaben im Formular
        End If
    End If
End Sub

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)


Zuletzt bearbeitet von Willi Wipp am 11. Jul 2005, 15:54, insgesamt einmal bearbeitet
Gast_sven
Gast


Verfasst am:
28. Mai 2004, 13:09
Rufname:

funzt - funzt

Nach oben
       

Vielen Dank!

Jetzt funzt alles einwandfrei!

Gruß
Sven
Denianer
Access-Kenner (ohne VBA)


Verfasst am:
11. Jul 2005, 15:15
Rufname:
Wohnort: Denia - Alicante

gleiche Fehlermeldung - gleiche Fehlermeldung

Nach oben
       

Ich habe das gleiche Probelm wie Sven.
Ich möchte in meinem Formular, in welchem Versicherungspolicen eingegeben werden, erreichen, dass ich eine Meldung bekomme, wenn ein Kennzeichen eingegeben wird, das schon vorhanden ist. Mein Code:
Code:
Private Sub kennzeichen_Exit(Cancel As Integer)
   If DLookup("[kennzeichen]", "[ABFclientescontratos]", _
              "[kennzeichen] = " & Me![kennzeichen]) Then
        If MsgBox("Kennzeichen schon vorhanden!", vbOKCancel + vbCritical, _
                  "Error") = vbOK Then    'So das du das Feld verlassen kannst
            Cancel% = True
        End If
    End If
End Sub

Ich bekomme aber auch die Meldung:
Zitat:
Laufzeitfehler 3075.
Syntaxfehler (fehlender Operator) bei [kennzeichen] = 9485 BKX.

Was habe ich übersehen?

_________________
Wer nicht fragt lernt nichts
Willi Wipp
Moderator


Verfasst am:
11. Jul 2005, 16:01
Rufname:
Wohnort: Raum Wiesbaden

Re: MsgBox, wenn Eingabe ID in Formular = ID in Tabelle - Re: MsgBox, wenn Eingabe ID in Formular = ID in Tabelle

Nach oben
       

Hi Denianer,

Bei Dir handelt es sich bei kennzeichen offensichtlich um ein Feld vom Datentyp Text.
=> Man muss Das Kriterum anders zusammenbauen
Code:
Private Sub kennzeichen_Exit(Cancel As Integer)
   If DLookup("[kennzeichen]", "[ABFclientescontratos]", _
              "[kennzeichen] = '" & Me![kennzeichen] & "'") Then
        If MsgBox("Kennzeichen schon vorhanden!", vbOKCancel + vbCritical, _
                  "Error") = vbOK Then    'So das du das Feld verlassen kannst
            Cancel% = True
        End If
    End If
End Sub

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
Denianer
Access-Kenner (ohne VBA)


Verfasst am:
12. Jul 2005, 18:51
Rufname:
Wohnort: Denia - Alicante

AW: MsgBox, wenn Eingabe ID in Formular = ID in Tabelle - AW: MsgBox, wenn Eingabe ID in Formular = ID in Tabelle

Nach oben
       

Hallo Willi,
Beim Feld "kennzeichen" handelt es sich tatsächlich um ein Textfeld. Aber jetzt bekomme ich die Meldung: "Typen unverträglich."

Gruss Denianer

_________________
Wer nicht fragt lernt nichts
Willi Wipp
Moderator


Verfasst am:
12. Jul 2005, 18:53
Rufname:
Wohnort: Raum Wiesbaden

Re: MsgBox, wenn Eingabe ID in Formular = ID in Tabelle (II) - Re: MsgBox, wenn Eingabe ID in Formular = ID in Tabelle (II)

Nach oben
       

Hi Denianer,

sorry hatte ich nicht bedacht, aber vielleicht so
Code:
Private Sub kennzeichen_Exit(Cancel As Integer)
   If DCount("*", "[ABFclientescontratos]", _
             "[kennzeichen] = '" & Me![kennzeichen] & "'") Then
        If MsgBox("Kennzeichen schon vorhanden!", vbOKCancel + vbCritical, _
                  "Error") = vbOK Then    'So das du das Feld verlassen kannst
            Cancel% = True
        End If
    End If
End Sub

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
Denianer
Access-Kenner (ohne VBA)


Verfasst am:
12. Jul 2005, 19:03
Rufname:
Wohnort: Denia - Alicante

AW: MsgBox, wenn Eingabe ID in Formular = ID in Tabelle - AW: MsgBox, wenn Eingabe ID in Formular = ID in Tabelle

Nach oben
       

So klappts. Vielen Dank Willi

Gruss aus Spanien

Denianer

_________________
Wer nicht fragt lernt nichts
Uli
Einsteiger


Verfasst am:
22. Nov 2005, 14:41
Rufname:
Wohnort: Niederbayern

AW: MsgBox, wenn Eingabe ID in Formular = ID in Tabelle - AW: MsgBox, wenn Eingabe ID in Formular = ID in Tabelle

Nach oben
       

Hallo zusammen,

Ich habe den letzten Code von Willi Wipp verwendet. Das klappt so weit sehr gut, nur kommt jetzt die "erwünschte Fehlermeldung " immer wenn ich das Feld verlasse, wenn die Nummer bereits vorhanden ist ( So steht es ja auch in dem Code ).
Ich benötige die Fehlermeldung aber nur bei der Neueingabe oder bei der Änderung des Datensatzes, wenn die Nummer doppelt ist.

Kann mir jemand helfen Question

Gruß Uli
magicsource
Im Profil kannst Du frei den Rang ändern


Verfasst am:
24. Nov 2005, 01:14
Rufname:
Wohnort: 51°17'33.79''N, 6°49'39.31''E, 45NN

AW: MsgBox, wenn Eingabe ID in Formular = ID in Tabelle - AW: MsgBox, wenn Eingabe ID in Formular = ID in Tabelle

Nach oben
       

Der Code enthält nur die Abfrage, ob der Wert schoon vorhanden ist; zusätzlich muss gecheckt werden, ob der Wert in einem anderen Datensatz als dem aktuellen vorhanden ist (Wenn Du in Deiner Tabelle einen Auto-Wert hast, nimm den zur eindeutigen Unterscheidung):
Code:
Private Sub kennzeichen_Exit(Cancel As Integer)
    If DCount("*", "[ABFclientescontratos]", _
              "[kennzeichen] = '" & Me![kennzeichen] & "' AND " & _
              "ID <> " & Me!id) Then
        If MsgBox("Kennzeichen schon vorhanden!", vbOKCancel + vbCritical, _
                  "Error") = vbOK Then    'So das du das Feld verlassen kannst
            Cancel% = True
        End If
    End If
End Sub

_________________
mfg Dirk
doc007
Gast


Verfasst am:
28. Nov 2009, 04:15
Rufname:

AW: MsgBox, wenn Eingabe ID in Formular = ID in Tabelle - AW: MsgBox, wenn Eingabe ID in Formular = ID in Tabelle

Nach oben
       

Läßt sich der Code auch erweitern das zwei Felder kombiniert überprüft werden:
Bsp:
Es gibt im Formular 2 Felder: "Weisung" und "Nr"
Erst wird Feld "Weisung" ausgefüllt und dann "Nr", beim verlassen von dem Feld "Nr" soll die Fehlermeldung kommen, wenn die Kombination aus beiden schon existiert.
(Erläuterung: Die Nr. kann es ja mehrmals geben zu verschiedenen Weisungstypen -> Weisung: SI-P Nr: 2009/005 und Weisung: BA-HE Nr: 2009/005)

Hoffe es ist verständlich wie ich es meine.

Danke schon mal.

Diesen Code habe ich schon von oben, geht aber nur mit dem einen Feld.
Code:
Private Sub Nr_Exit(Cancel As Integer)
   If DCount("*", "Weisungen", _
             "Nr = '" & Me!Nr & "'") Then
        If MsgBox("Weisung schon vorhanden!", vbOKCancel + vbCritical, _
                  "Error") = vbOK Then    'So das du das Feld verlassen kannst
            Cancel% = True
        End If
    End If
End Sub
MiLie
kein Office- VBA- Programmierer


Verfasst am:
28. Nov 2009, 11:26
Rufname: Micha
Wohnort: Chemnitz


AW: MsgBox, wenn Eingabe ID in Formular = ID in Tabelle - AW: MsgBox, wenn Eingabe ID in Formular = ID in Tabelle

Nach oben
       

Hallo,

dann musst du aber den code in beiden Feldern hinterlegen
Code:
   If DCount("*", "Weisungen", _
             "Nr = '" & Me!Nr & "' AND Weisung = '" & Me.Weisung & "'") Then
        If MsgBox("Weisung schon vorhanden!", vbOKCancel + vbCritical, _
                  "Error") = vbOK Then    'So das du das Feld verlassen kannst
            Cancel% = True
        End If
    End If

_________________
Viele Grüße

Micha

Schreibfehler die Ihr findet, könnt Ihr behalten
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Gehe zu Seite 1, 2  Weiter
Diese Seite Freunden empfehlen

Seite 1 von 2
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Suchen in Formular 1 Sumo_Racer 1093 28. Mai 2004, 21:59
lothi Suchen in Formular
Keine neuen Beiträge Access Tabellen & Abfragen: Access Formular 2 Mielke 951 06. Mai 2004, 21:49
Hausmeister Access Formular
Keine neuen Beiträge Access Tabellen & Abfragen: Tabelle sichern 5 alfikoe 946 05. Mai 2004, 20:26
lothi Tabelle sichern
Keine neuen Beiträge Access Tabellen & Abfragen: Eingabe eines Parameterwertes 2 Drachenlord 470 03. Mai 2004, 13:07
Drachenlord Eingabe eines Parameterwertes
Keine neuen Beiträge Access Tabellen & Abfragen: Autowert in bestehende Tabelle 1 Gingi 729 23. Apr 2004, 11:45
mabe38 Autowert in bestehende Tabelle
Keine neuen Beiträge Access Tabellen & Abfragen: neue Tabellen erstellen aus vorhandener Tabelle 6 moni 2010 29. März 2004, 15:39
moni neue Tabellen erstellen aus vorhandener Tabelle
Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten. Access Tabellen & Abfragen: einträge aus tabelle in formular anzeigen u. speichern 1 gast 1161 25. März 2004, 09:33
Willi Wipp einträge aus tabelle in formular anzeigen u. speichern
Keine neuen Beiträge Access Tabellen & Abfragen: ausgeblendete Tabelle wieder einblenden 2 Dana79 2758 24. März 2004, 11:54
Dana79 ausgeblendete Tabelle wieder einblenden
Keine neuen Beiträge Access Tabellen & Abfragen: Dynamische Tabelle erstellen? 1 trabifant 1341 11. März 2004, 17:12
Willi Wipp Dynamische Tabelle erstellen?
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage aus zwei Tabellen in einem Formular ohne Unterformul 4 Hippolytus 749 09. März 2004, 15:07
Hippolytus Abfrage aus zwei Tabellen in einem Formular ohne Unterformul
Keine neuen Beiträge Access Tabellen & Abfragen: Aus Listenfeld Datensatz auswählen --> in neuem Formular 1 access_Newbee 825 08. März 2004, 15:48
lothi Aus Listenfeld Datensatz auswählen --> in neuem Formular
Keine neuen Beiträge Access Tabellen & Abfragen: Daten aus Abfrage in Tabelle kopieren 7 Prummel 2569 04. März 2004, 10:36
Willi Wipp Daten aus Abfrage in Tabelle kopieren
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Expression Web