2.7k Aufrufe
Gefragt in Datenbanken von
Hallo!

Ich habe eine Datenbank und ein Formular.
Im Formular sind 14 Checkboxen.

Die Checkboxen sollen die Werte 0 oder 1 in die Tabelle schreiben
bei Mausklick.

Ich habe folgendes als Code für die ersten 3 Checkboxen:

Private Sub Check_Fensterbank_Click()
If Check_Fensterbank.Value = True Then
SQL_txt = "UPDATE Gewerkeliste " & _
"SET Gew_Fensterbänke = 1;"
CurrentDb.Execute SQL_txt
Else
SQL_txt = "UPDATE Gewerkeliste " & _
"SET Gew_Fensterbänke = 0;"
CurrentDb.Execute SQL_txt
End If
End Sub

Private Sub Check_Sektionalgaragentor_Click()
If Check_Sektionalgaragentor.Value = True Then
SQL_txt = "UPDATE Gewerkeliste " & _
"SET Gew_Sektionalgaragentor = 1;"
CurrentDb.Execute SQL_txt
End If
If Check_Sektionalgaragentor.Value = False Then
SQL_txt = "UPDATE Gewerkeliste " & _
"SET Gew_Sektionalgaragentor = 0;"
CurrentDb.Execute SQL_txt
End If
End Sub

Private Sub Check_Wäscheschacht_Click()
If Check_Wäscheschacht.Value = True Then
SQL_txt = "UPDATE Gewerkeliste " & _
"SET Gew_Wäscheschacht = 1;"
CurrentDb.Execute SQL_txt
End If
If Check_Wäscheschacht.Value = False Then
SQL_txt = "UPDATE Gewerkeliste " & _
"SET Gew_Wäscheschacht = 0;"
CurrentDb.Execute SQL_txt
End If
End Sub


Ich bekomme aber immer wieder folgenden Hinweis:

"Die Daten wurden geändert - Ein anderer Benutzer hat diesen
Datensatz bearbeitet .... Bearbeiten Sie den Datensatz erneut"

Wo ist der Fehler? Zu schnelles klicken? Oder stimmt was an dem
Code nicht?

16 Antworten

0 Punkte
Beantwortet von
Hier der richtige Code... ich hatte bei dem oberen was probiert:

Private Sub Check_Fensterbank_Click()
If Check_Fensterbank.Value = True Then
SQL_txt = "UPDATE Gewerkeliste " & _
"SET Gew_Fensterbänke = 1;"
CurrentDb.Execute SQL_txt
End If
If Check_Sektionalgaragentor.Value = False Then
SQL_txt = "UPDATE Gewerkeliste " & _
"SET Gew_Fensterbänke = 0;"
CurrentDb.Execute SQL_txt
End If
End Sub

Private Sub Check_Sektionalgaragentor_Click()
If Check_Sektionalgaragentor.Value = True Then
SQL_txt = "UPDATE Gewerkeliste " & _
"SET Gew_Sektionalgaragentor = 1;"
CurrentDb.Execute SQL_txt
End If
If Check_Sektionalgaragentor.Value = False Then
SQL_txt = "UPDATE Gewerkeliste " & _
"SET Gew_Sektionalgaragentor = 0;"
CurrentDb.Execute SQL_txt
End If
End Sub

Private Sub Check_Wäscheschacht_Click()
If Check_Wäscheschacht.Value = True Then
SQL_txt = "UPDATE Gewerkeliste " & _
"SET Gew_Wäscheschacht = 1;"
CurrentDb.Execute SQL_txt
End If
If Check_Wäscheschacht.Value = False Then
SQL_txt = "UPDATE Gewerkeliste " & _
"SET Gew_Wäscheschacht = 0;"
CurrentDb.Execute SQL_txt
End If
End Sub
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo,

Kann es sein , dass der selbe Datensatz in einem anderen Formular bearbeitet wurde, aber noch nicht abgeschlossen ist.

An den Makros kann es nach meinem Dafürhalten nicht liegen, da würde eine Fehlermeldung anders lauten.

Mehr kann ich aus der Ferne nicht dazu sagen.


Gruß

Paul1
0 Punkte
Beantwortet von
Hi!

Danke für die Antwort. Ich habe ein Formular und eine Tabelle. Die
Fehlermeldung kommt nicht bei jedem Klicken.

Sind das Makros? Ich dachte VBA Code...

Access 2010 unterscheidet das.

Ich wüßte jetzt nicht was da nicht abgeschlossen sein sollte...

Ich habe in dem selben Formular noch Optionsfelder, die vorher die
Tabelle befüllen. Kann das daran liegen?
0 Punkte
Beantwortet von
Hi!

Danke für die Antwort. Ich habe ein Formular und eine Tabelle. Die
Fehlermeldung kommt nicht bei jedem Klicken.

Sind das Makros? Ich dachte VBA Code...

Access 2010 unterscheidet das.

Ich wüßte jetzt nicht was da nicht abgeschlossen sein sollte...

Ich habe in dem selben Formular noch Optionsfelder, die vorher die
Tabelle befüllen. Kann das daran liegen?
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo,

Mit Deinem letzten Satz kannst Du recht haben, irgendwas blockiert bzw. schränkt die Bearbeitung ein.

VBA-Fehler schließe ich aus, zumal es einmal funktioniert und dann wieder nicht.

Unter abgeschlossen verstehe ich, wenn ein Datensatz (Feld) bearbeitet und mit "Enter" bestätigt wurde.


Gruß

Paul1
0 Punkte
Beantwortet von
Nun die Optionsfelder werden per Macro bearbeitet und zwar "nach
Aktualisierung" --> Refresh des Datensatzes.

Das habe ich gemacht, damit direkt nach der Auswahl ein
"Endergebniss" sichtbar ist.

Das sollte aber sofort auch wieder beendet sein. Vorher habe ich noch
Eingabefelder wie Name Adrese usw... da wird aber eine andere
Tabelle angesprochen.

Ich komm einfach nicht dahinter wie ich das Problem löse... Kann ich
nicht alle laufenden zugriffe auf die Tabelle per VBA beenden und das
quasi bei jedem klick auf eines der 14 Kontrollfelder ausführen
lassen?
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo,

Wahrscheinlich stehen die Tabellen in Beziehung zueinander, da wird es kompliziert.

ad hoc fällt mir dazu noch nichts ein.


Gruß

Paul1
0 Punkte
Beantwortet von
Hi!

Ja, der Primärschlüssel aus Tabelle 1 ist als Wert in Tabelle 2 und
darüber auch in Beziehung.

Ich habe eine Tabelle "Kundendaten" und eine Tabelle "Gewerke".

Der Kunde entscheidet in dem Formular welche Gewerke er wünscht
und daraus ergibt sich ein Angebot für den Kunden. Die Kunden ID wird
in die Gewerketabelle übertragen, damit KundenID und
Gewerkeangebot eine identische ID haben.
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo,

Wieviele Optionsfelder gibt es und was sollen die bewirken.
Sind die Checkboxen gebundene oder ungebundene Felder Ja =1, Nein =0 und warum.
Wurde das Formular aus einer Abfrage oder aus einer oder beiden Tabellen erstellt.

Leider sehe ich die Datenbank nicht, um mir ein Gesamtbild machen zu können, das ganze nachzubauen ist sehr viel Arbeit!

Welche Felder konkret beinhaltet das Formular-Unterformular und aus welchen Tabellen.

also Fragen über Fragen um Nägel mit Köpfen machen zu können.

Gruß

Paul1
0 Punkte
Beantwortet von
Ich hab 14 Kontrollfelder... und es könnten in Zukunft noch welche
dazu kommen.

ich will nichts weiter als einen Wert für True und einen Wert für False
in eine Tabelle schreiben und das ganze soll sofort im Formular
aktualisiert werden.

Beispiel:

Bestellung bei Burgerking...
"Ich hätte gerne einen BigKing"
1) Als Menü oder Einzeln? --> TRUE FALSE
2.) Cola oder Wasser? --> TRUE FALSE
3.) Majo oder Ketchup? --> TRUE FALSE

Die Werte für True und False sollen in die Tabelle Bestellung und
dort in die Felder "Menü", "Getränk" und "Sauce" geschrieben
werden.

Gleichzeitig wird dann auf dem Bildschirm angezeigt:
- Menü Cola Majo
wenn diese Werte ausgewählt worden sind. In diesem Fall wären
alle Werte TRUE.

Ich muss nur wissen:
- Wie übertrage ich den Werte TRUE bzw False (0 oder -1) an das
Feld in der Tabelle bei Mouseklick
- Wie wird das Formular bei jedem Klick aktualisiert damit die True
oder False sofort zu sehen sind.

In meinem Fall
-> Möchte der Kunde eine Gaube haben? JA/NEIN
-> Bei ja --> Mehrkosten von 50€ bei Nein 0€

Im Formular soll neben Hacken rein und Hacken raus entweder 0€
oder 50€ stehen.

Das Formular besteht aus beiden Tabellen. Die über den
Primärschlüssel verbunden sind.

Tabelle: Gewerkeliste
Tabelle: Kunden

Felder: Gew_Gaube usw...

Private Sub Check_Gaube_Click()
If Check_Gaube.Value = True Then
SQL_txt = "UPDATE Gewerkeliste " & _
"SET Gew_Gaube = 1;"
CurrentDb.Execute SQL_txt
End If
If Check_Gaube.Value = False Then
SQL_txt = "UPDATE Gewerkeliste " & _
"SET Gew_Gaube = 0;"
CurrentDb.Execute SQL_txt
End If
End Sub

Im Formular würde dann im Feld neben der Checkbox stehen:
=WENN([Gew_Gaube]="1";wert(50);WENN([Gew_Gaube]="0";wert(0
)))

Im Formular steht denn bei aktiviertem Hacken 50€ und ohne
Hacken 0€.

Wie die Lösung aussieht... ist völlig egal, solange es das tut was ich
will *g*
...