Supportnet / Forum / Datenbanken
VBA-Code erweitern, aber wie? WICHTIG!!!
Frage
Hallo zusammen!
Hab mal wieder eine wichtige Frage zu meiner Daenbank. Ich habe folgenden Code:
Private Sub cmdBerechnen_Click()
DoCmd.RunSQL "DELETE * FROM Ergebnisse;"
Dim db As DAO.Database
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim rsResult As DAO.Recordset
Dim ktab1 As String
Set db = CurrentDb
Set rs2 = db.OpenRecordset("Eingabedaten", dbOpenSnapshot)
Set rsResult = db.OpenRecordset("Ergebnisse", dbOpenDynaset)
On Error GoTo fehlerhandler1
rs2.MoveFirst
Do While Not rs2.EOF
'Set rs1 = db.OpenRecordset("tbl" & rs2!Ökoinventar, dbOpenSnapshot)
Set rs1 = db.OpenRecordset("tbl" & rs2!Kategorie, dbOpenSnapshot)
rs1.MoveFirst
Do While Not rs1.EOF
rsResult.AddNew
rsResult!Ursprung = rs2!Bezeichnung
rsResult!Menge = rs2!Wert
rsResult!Bezeichnung = rs1!Bezeichnung
rsResult!Einheit = rs1!Einheit
rsResult!Wert = rs2!Wert * rs1!Wert
rsResult.Update
rs1.MoveNext
Loop
rs1.Close
weiter1:
Set rs1 = Nothing
rs2.MoveNext
Loop
rsResult.Close
rs2.Close
rs1.Close
Set rsResult = Nothing
Set rs2 = Nothing
Set rs1 = Nothing
Set db = Nothing
Exit Sub
fehlerhandler1:
If Err.Number = 3078 Then
' MsgBox "Tabelle tbl" & rs2!Ökoinventar & " fehlt"
GoTo weiter1
End If
fehlerhandler:
MsgBox CStr(Err.Number) & ": " & Err.Description, vbCritical
End Sub
Das Ganze funktioniert so:
Ich habe eine Tabelle Eingabedaten mit den Spalten:
(mit Beispiel)
Bezeichnung | Einheit | Wert | Kategorie | Ökoinventar
Hausmüll | kg | 1000 | Abfall |KVA
Zudem gibt es eine Tabelle tblKategorie, mit einer Spalte Kategorie. In dieser Spalte steht bspw. Abfall, Energie, Verkehr usw. Desweiteren gibts dann eben Tabellen, die immer wie folgt lauten: "tblKategorie", also "tblAbfall", "tblEnergie" usw. In diesen Tabellen gibt es u.a. die Spalten Art und Wert. Wenn man die Tabelle "tblAbfall" anschaut stehen beispielsweise 50 Datensätze mit der Art "KVA", dann wieder 50 Datensätze mit der Art "SAVA" usw. drin.
Was das Programm bisher macht:
Es wählt aus der Tabelle Eingabedaten die Kategorie (bspw. Abfall) und schaut, ob es eine Tabelle "tblAbfall" gibt. Wenn ja, dann multipliziert es den Wert aus Tabelle "Eingabedaten" mit allen Werten in der Tabelle "tblAbfall". !!!Was nicht paßt!!!:
Ich möchte, dass das Programm den Wert aus der Tabelle Eingabedaten nur mit den Werten in Tabelle tblAbfall multipliziert, wo das Ökoinventar in Tabelle Eingabedaten der Art in Tabelle tblKategorie (hier "tblAbfall") entspricht. Also wie im Beispiel solle der Wert 1000 (aus Eingabetabelle) mit allen Werten "tblAbfall" multipliziert werden, wo die Art ="KVA" entspricht.
Ich weiß nicht, wie ich den Code erweitern muss, daß er das macht. Kann mir jemand helfen? Ist wirklich sehr wichtig! Danke.
scrooge

