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-Key: 243844

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

Printed on: April 23, 2024 at 23:04 o'clock

Member: drobskind
drobskind Jul 16, 2014 at 12:54:18 (UTC)
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ß
Member: badni12
badni12 Jul 16, 2014 at 12:58:09 (UTC)
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
Member: badni12
badni12 Jul 16, 2014 at 13:00:30 (UTC)
Goto Top
hallo

kann nicht gehen weil von den alten Daten nicht alle befüllt sind.. (sind über 3000 DS ;))
Member: colinardo
colinardo Jul 16, 2014 updated at 17:13:29 (UTC)
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
Member: badni12
badni12 Jul 17, 2014 updated at 05:43:20 (UTC)
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
Member: colinardo
colinardo Jul 17, 2014 at 05:52:43 (UTC)
Goto Top
dann machst du irgendwas falsch, geht hier seit eh und je so ... sorry.
Member: badni12
badni12 Jul 17, 2014 at 06:04:44 (UTC)
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
Member: colinardo
Solution colinardo Jul 17, 2014 updated at 06:32:36 (UTC)
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
Member: badni12
badni12 Jul 17, 2014 updated at 09:01:03 (UTC)
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
Member: evolution
evolution Nov 05, 2014 at 12:01:37 (UTC)
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
Member: colinardo
colinardo Nov 05, 2014 updated at 12:11:34 (UTC)
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