Tabelle UPDATE über ein Formular

Hallo und HILFE,

ich habe eine Tabelle mit mehreren Spalten, u.a. eine Spalte „Projekt“ und eine Spalte „Status“.

In der Spalte „Projekt“ kommen die Projektnamen öfters vor.

Nun möchte ich über ein Formular den Status der Projekte ändern. Ich habe zwei Listenfelder eingefügt, die mir die Projektnamen auflisten und versucht, über eine Mehrfachauswahl und einem Makro (SQL Befehl à Update) den Status in der Tabelle einzutragen.

Beispiel:

Projekt 1, 2 und 3 sind markiert uns sollen auf Knopfdruck den Status „abgeschlossen“ in der Tabelle erhalten. Aber ich bekomme das nicht hin.

Habt ihr eine Idee, wie das funktionieren könnte?

PS:
es gibt die Status „abgeschlossen“, „aktuell“ und „offen“.

Hallo, Thilo!

ich habe eine Tabelle mit mehreren Spalten, u.a. eine Spalte
„Projekt“ und eine Spalte „Status“.

In der Spalte „Projekt“ kommen die Projektnamen
öfters vor.

Nun möchte ich über ein Formular den Status der Projekte
ändern. Ich habe zwei Listenfelder eingefügt, die mir die
Projektnamen auflisten und versucht, über eine Mehrfachauswahl
und einem Makro (SQL Befehl à Update) den Status in der
Tabelle einzutragen.

Beispiel:

Projekt 1, 2 und 3 sind markiert uns sollen auf Knopfdruck den
Status „abgeschlossen“ in der Tabelle erhalten.
Aber ich bekomme das nicht hin.

Habt ihr eine Idee, wie das funktionieren könnte?

Du brauchst eine Schleife, die überprüft, ob der Eintrag der Liste markiert wurde, und dann die SQL-Abfrage für diesen Eintrag aufruft. Also etwa so:

For i = 0 to Me.DeineListe.ListCount-1
 If Me.DeineListe.Selected(i) Then
 DoCmd.RunSql "UPDATE Tabelle SET Status='" Me.DeinStatusFeld \_
 &"' WHERE Projekt='"& Me.DeineListe.Column(0, i) &"'"
 End If
Next i

Gruß, Manfred

Hey Manfred,

danke für die schnelle Antwort. Allerdings bin ich nicht so der VB Profi.
Ich hab folgendes gemacht, ein Button und ein Ereignis beim Klick

Private Sub Befehl30_Click()
For i = 0 to
Me.Liste25.ListCount -1
If Me.Liste25.Selected(i) Then
DoCmd.RunSql „UPDATE Tabelle Mitarbeiter SET Status=aktuell“ Me.Status
_
&"’ WHERE Projekt=’"& Me.Liste25.Column(0, i) &"’"
End If
Next i

End Sub

Aber ich bekomme folgende Fehlermeldung:

Dieser Ausdruck hat einen Fehler verursacht

Was habe ich falsch gemacht?

Gruß

Thilo

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi, Thilo!

danke für die schnelle Antwort. Allerdings bin ich nicht so
der VB Profi.
Ich hab folgendes gemacht, ein Button und ein Ereignis beim
Klick

Private Sub Befehl30_Click()
For i = 0 to
Me.Liste25.ListCount -1
If Me.Liste25.Selected(i) Then
DoCmd.RunSql „UPDATE Tabelle Mitarbeiter SET
Status=aktuell“ Me.Status

Hier fehlt ein „&“ vor dem Me.Status. Und „Status=aktuell“ ist komisch. Ich nehme mal an, Du hast ein Feld namens Status, mit dem Du den neuen Status auswählst. Dann muss die Zuweisung lauten

...Status=" & Me.Status...

&"’ WHERE Projekt=’"& Me.Liste25.Column(0, i) &"’"

Dann ist noch die Frage, welche Datentypen die betroffenen Felder haben. Wenn Deine Projektnummer eine Zahl ist, dürfen die „’“ nicht drinstehen (also

Projekt=" & Me.Liste25.Column(0, i)

); wenn Dein Statusfeld ein text ist, müssen sie vorhanden sein (also

...SET Status='" & Me.Status &"' WHERE ...

Gruß, Manfred

Hey Manfred,

nun sieht es so aus:

Private Sub Befehl30_Click()
For i = 0 to
Me.Liste25.ListCount -1
If Me.Liste25.Selected(i) Then
DoCmd.RunSQL „UPDATE Mitarbeiter SET Status=aktuell“ & Me.Status
_
&"’ WHERE Projekt=’"& Me.Liste25.Column(0, i) &"’"
End If
Next i

End Sub

bekomme aber immer noch die selbe Fehlermeldung.

„Status“ ist eine Spalte in der Tabelle „Mitarbeiter“. Die Spalte „Projekt“ und „Status“ sind als Text definiert. Zum Beispiel kommt das Projekt Aida öfters vor. Ich möchte mit dem Button nun, dass in jede Zeile mit dem Projekt Aida in die Spalte „Status“ „aktuell“ eingetragen wird.

Gruß

Thilo

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo, Tilo!

Dein Status ist mit der Schaltfläche also immer „aktuell“? Dann geht das so:

Private Sub Befehl30\_Click()
For i = 0 to Me.Liste25.ListCount -1
 If Me.Liste25.Selected(i) Then
 DoCmd.RunSQL "UPDATE Mitarbeiter SET Status='aktuell'" \_
 &" WHERE Projekt='"& Me.Liste25.Column(0, i) &"'"
 End If
Next i

End Sub

Voraussetzung ist, dass die Projektnummer in der ersten Spalte Deines Listenfeldes steht. Falls dem nicht so ist, müsstest Du den Spaltenindex hinter .Column anpassen (dieser ist 0-basiert).

Gruß, Manfred

Hey Manfred,

bekomme immer noch die gleiche Fehlermeldung.

Das Listenfeld hat nur eine Spalte, deswegen muss das wohl so stimmen.

Ich habe alles auf Rechtschreibefehler überprüft und weiß nicht, wo das Problem liegt.

Gruß

Thilo

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hey Manfred,

bei

WHERE Projekt=’

woher weiß Access, welche Projekte ich meine? Muss da nich etwas stehen wie WHERE Projekte=Liste25.ItemsSelected o.ä.?

Wie gesagt habe ich keine Ahnung über VB, ist nur ne Idee

Gruß

Thilo

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]