badni12
Goto Top

MS Office Access, prüfen ob wert in einer anderen tabelle vorhanden

Hallo

Ich habe ein Insert Into Programm geschrieben, dass die Werte vom Formular x (basierend auf die Tabelle x) in die Tabelle gesamt überträgt, funktioniert einwandfrei
nun möchte ich aber, wenn ein gewisser Wert schon vergeben ist, dass das Programm eine MsgBox mit "Bereits Vorhanden" ausgibt

Das eindeutige Feld in der Tabelle x heißt "Muster_Nr", in der Tabelle gesamt "Musternummer"

Habe es mit dieser Methode probiert:
If DCount("[Muster_Nr]", "x" = Forms!gesamt!Musternummer) Then  
MsgBox "Bereits Vorhanden"  
Else
DoCmd.RunSQL "INSERT INTO gesamt...  
End If
auch habe ich diese Methode probiert:
If DCount("*","gesamt", Musternummer='" & Me!Muster_Nr & "'") > 0 Then  
MsgBox "Bereits Vorhanden", vbOKOnly, "Achtung!"  
Else
DoCmd.RunSQL "INSERT INTO gesamt...  
End If
Funktionieren beide nicht..

Jemand Tipps bzw kann mir jemand helfen?

Danke im Voraus

lg

Content-ID: 243844

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

Ausgedruckt am: 26.11.2024 um 12:11 Uhr

drobskind
drobskind 16.07.2014 um 14:54:18 Uhr
Goto Top
Hallo badni12,

ich schieße mal ins blaue...
Wenn du die Möglichkeit hast, die Spalte in deiner Tabelle als Unique zu kennzeichnen, bekommst du automatisch einen Fehler.
Ist bei MS-SQL-Server ohne weiteres möglich.
Oder wo willst du reinschreiben?

Gruß
badni12
badni12 16.07.2014 um 14:58:09 Uhr
Goto Top
hallo

danke schon mal für die Antwort

versuche deinen Ratschlag mal umzusetzen

zur weiteren Erklärung
ich gebe die Daten im Formular x(basierend auf die Tabelle x) ein, drücke auf den Button "in gesamt speichern" und er schreibt mir den Datensatz in die Tabelle gesamt

lg
badni12
badni12 16.07.2014 um 15:00:30 Uhr
Goto Top
hallo

kann nicht gehen weil von den alten Daten nicht alle befüllt sind.. (sind über 3000 DS ;))
colinardo
colinardo 16.07.2014 aktualisiert um 19:13:29 Uhr
Goto Top
Moin,
Die richtige Variante für DCount lautet:
DCount("[Musternummer]","gesamt","[Musternummer] = " & Me!Muster_Nr)  
http://office.microsoft.com/de-de/access-help/dcount-funktion-HA0012288 ...

wenn die Spalte "Musternummer" im Zahlenformat angelegt ist, darfst du keine einfachen Anführungszeichen um den Wert setzen, ansonsten schon.

Grüße Uwe
badni12
badni12 17.07.2014 aktualisiert um 07:43:20 Uhr
Goto Top
Hallo Uwe

wenn ich das jetzt mit dieser Methode probier geht es auch nicht..

If DCount("[Musternummer]", "gesamt", "[Musternummer] = " & Me![Muster_Nr]) Then  
MsgBox "Schon vergeben"  
Else
DoCmd.RunSQL "INSERT INTO gesamt...  
End If

er zeigt mir immer die MsgBox an..

gibt es vlt eine andere Möglichkeit das zu prüfen?

Lg
colinardo
colinardo 17.07.2014 um 07:52:43 Uhr
Goto Top
dann machst du irgendwas falsch, geht hier seit eh und je so ... sorry.
badni12
badni12 17.07.2014 um 08:04:44 Uhr
Goto Top
hallo

kannst du mir vlt noch tipps geben auf was ich achten muss, dass es möglicherweiße funktioniert?

namen und so sind alle korrekt geschrieben..

lg
colinardo
Lösung colinardo 17.07.2014 aktualisiert um 08:32:36 Uhr
Goto Top
Bei Angabe von Formulartextfeldern solltest du immer zwischen "Value" und "Text" unterscheiden (das kann einen Unterschied machen!) deshalb gebe mal Text als abzufragende Eigenschaft an.
Wenn die Spalte Musternummer als Zahl formatiert ist so:
If DCount("[Musternummer]", "gesamt", "[Musternummer] = " & Me.Muster_Nr.Text) > 0 Then  
   MsgBox "Schon vergeben"  
Else
   DoCmd.RunSQL "INSERT INTO gesamt...  
End If
Wenn Leerzeichen in Musternummer vorkommen können und das Feld bzw. Spalte im Textformat ist, muss es natürlich so aussehen:
If DCount("[Musternummer]", "gesamt", "[Musternummer] = '" & Me.Muster_Nr.Text & "'") > 0 Then  
   MsgBox "Schon vergeben"  
Else
   DoCmd.RunSQL "INSERT INTO gesamt...  
End If
badni12
badni12 17.07.2014 aktualisiert um 11:01:03 Uhr
Goto Top
vielen dank!!
der zweite code hat mir geholfen

der richtige code lautet

If DCount("[Musternummer]", "gesamt", "[Musternummer] ='" & Me![Muster-Nr] & "'") > 0 Then  

lg
evolution
evolution 05.11.2014 um 13:01:37 Uhr
Goto Top
also ungefär so?
Private Sub check_lks_vorhhanden()
    If DCount("*", "test_id" & Me.Test.Text & "' AND lks_id'" & Me.Kunde.Text & "'") > 0 Then  
       MsgBox "Schon vergeben"  
    Else
       MsgBox "Gibt es noch nicht"  
       'Cmd.RunSQL "INSERT INTO sys_lks_noten ( kunden_id, test_id, punkte, max_punkte, datum ) SELECT [Formulare]![lks_erfassen]![ID] AS Ausdr1, [Formulare]![lks_erfassen]![Test] AS Ausdr2, [Formulare]![lks_erfassen]![Punkte] AS Ausdr3, [Formulare]![lks_erfassen]![erreichbare_punkte] AS Ausdr4, [Formulare]![lks_erfassen]![Datum] AS Ausdr5;"  
    End If
End Sub
colinardo
colinardo 05.11.2014 aktualisiert um 13:11:34 Uhr
Goto Top
Zitat von @evolution:

also ungefär so?
bitte in deinem Thread posten, merci ...
If DCount("*", "sys_lks_noten","[test_id] = '" & Me.Test.Text & "' AND [lks_id] = '" & Me.Kunde.Text & "'") > 0 then  
....
....
End if