Hallo,
seh ich erstmal keinen Fehler.
aber ich jede Menge…
Woher hast Du denn solchen Code? Eigentlich wäre fast jede Zeile anzumeckern, von der Methodik ganz zu schweigen…
Dim rs_e As DAO.Recordset, rs_m As DAO.Recordset, rs_A As DAO.Recordset
Dim a As String, b As String, c As String 'richtig deklarieren
Dim db As DAO.Database
Set db = CurrentDb()
Set rs = db.OpenRecordset(„Eingabe“,dbOpenSnapshot) ’ was ist denn „Eingabe“ ??
DoCmd.SetWarnings False
a = Me.Produkt
Do Until rs![Produkt] = a
rs.MoveNext
Loop
Me.Maschinenanzahl = rs![Maschine/Jahr]
'Sonderzeichen sind tötlich in Namen…
‚statt dessen:
Me.Maschinenanzahl =Dlookup("[Maschine/Jahr]",„Eingabe“,"[Produkt] =‘" & a & „’“
Me.Requery 'wozu?
Me.Refresh 'wozu?
b = „tbl_“ & a 'hier wird’s ganz schlimm: Für jedes Produkt eine eigene Tabelle???
c = „Abfr_“ & a 'Für jedes Produkt eine eigene Abfrage???
DoCmd.DeleteObject acTable, b 'irgendwann platzt die DB dadurch. Deshalb ist Komprimieren/Reparieren periodisch nötig.
CurrentDb.Execute "SELECT [Arbeitsplatz],[SummevonFeld3] INTO
" & b & " FROM " & c 'das ist syntaktisch richtig, im Gegensatz zum vorherigen Posting.
DoCmd.RunSQL „Alter table " & b & " add column Kosten String“ '„Kosten“ wirklich(!!??) Text???
DoCmd.RunSQL „Alter table " & b & " add column Stunden String“ '„Stunden“ wirklich(!!??) Text???
’ besser auch db.Execute statt Docmd.RunSQL benutzen.
Set rs_m = db.OpenRecordset(b, dbOpenDynaset)
rs_m.MoveFirst
Do Until rs_m.EOF
Do Until rs_m![Arbeitsplatz] = Me.Arbeitsplatz
rs_m.MoveNext
Loop
’ anstelle:
rs_m.Findfirst „[Arbeitsplatz] = '“ & Me.Arbeitsplatz & „’“
if not Rs.Nomatch Then
rs_m.Edit
rs_m![Kosten] = Me.Zeit
rs_m![Stunden] = Me.Stunden
rs_m.Update
End if
rs_m.MoveNext
On Error GoTo Err_cmd_MoveNext
DoCmd.GoToRecord , , acNext 'statt dieses Makro nimm doch besser einen Recordset aus dem Form-Recordsetclone
Loop
DoCmd.SetWarnings True
’ Offene Recordsets sollen am Ende geschlossen und die Projektvariablen auf „Nothing“ gesetzt werden.
Allgemein sind solche Tabellemanipulationen von Übel. Tabelle sollten während der Entwicklung nach den Normalisierungsregeln einmalig erstellt und nur in wirklich nötigen Ausnahmefällen dynamisch erzeugt werden.
Soweit die Kommentare, ohne zu wissen, was eigentlich im Endeffekt herauskommen soll.
Viele Grüße vom Bodensee
Franz , DF6GL
PS: Feedback erwünscht!