ich habe ein, wie ich hoffe, recht einfaches Problem. Und zar habe ich folgende SELECT-Anweisungen, die beide funktionieren:
Me.Honorarkräfteanteil.RowSource =
"Select Sum (Stundenzahl/Stundenzahl) FROM Stundenzuweisung"
und
Me.Honorarkräfteanteil.RowSource =
"SELECT SUM (Stundenzahl) FROM Stundenzuweisung INNER JOIN
arbeitnehmer ON (arbeitnehmer.Nachname =
stundenzuweisung.arbeitnehmer\_nachname) WHERE
Unterrichtsanforderung\_Maßnahme\_Bezeichnung ='" &
Me.Maßnahme & "'" & " AND honorarkraft = -1"
Frage: Wie kann ich (als rowsource) die beiden durcheinander teilen (also b/a)? Oder gibt es sogar eine elegantere Möglichkeit das zu tun?
sorry, ich kann nicht nachvollziehen, warum du das als
rowsource machen willst/mußt!?
Müssen nicht wirklich, aber ich würde gerne so viel wie möglich als VBA-Code haben und nicht als Eintragungen in den Formularen selbst (dann ist es einfach übersichtlicher und einfacher zu ändern). Außerdem kenne ich mich da besser aus.
Deine Rowsource beziehen sich auf UFO’s?
Nicht auf UFOs, sondern auf mehrere Tabellen. Ich habe eine Tabelle „Stundenzuweisung“ und eine „Arbeitnehmer“. Ob ein Arbeitnehmer als Honorarkraft arbeitet ist natürlich beim AN gespeichert.
Schau dir mal die Funktion DSUM genauer an.
Hilft mir leider nur begrenzt, da die Information auf zwei Tabellen verteilt ist. Ich müsste die dann also erst per INNER JOIN verknüpfen. Da scheint mir die Lösung mit den zwei SELECTs irgendwie einfacher und schneller. Aber vielen Dank schon mal.
ich weiß jetzt nicht welche Access-Version du nutzt (MDB/ADP) - in den Projekten sind Unterabfragen möglich:
…
DIM SQL as String
SQL="SELECT SUM (Stundenzahl)as ANStunden, " & _
"(Select Sum (Stundenzahl/Stundenzahl) " & _
" FROM Stundenzuweisung) as Gesamt " & _
"FROM Stundenzuweisung INNER JOIN " & _
"arbeitnehmer ON (arbeitnehmer.Nachname = " & _
"stundenzuweisung.arbeitnehmer_nachname) " & _
„WHERE Unterrichtsanforderung_Maßnahme_Bezeichnung =’“ & _
Me.Maßnahme & „’ AND honorarkraft = -1“
Me.Honorarkräfteanteil.RowSource=SQL
Durch deinen Vergleich Honarakraft=-1 vermute ich mal, dass du mit MDBs arbeitest. Versuche doch mal folgendes. Hier werte ich innerhalb der Summenformel über eine Wenn-Funktion die Kriterien aus. Stimmen diese innerhalb des Datensatz multipliziere ich das Ergebnis mit 1 ansonsten mit 0.
SQL=„SELECT SUM (“ & _
„IIF (Unterrichtsanforderung_Maßnahme_Bezeichnung =’“ & _
me.maßnahme & "’ and Honorarkraft=-1,1,0) * Stundenzahl " & _
") as ANStundenLehrer, " & _
„Sum (Stundenzahl/Stundenzahl) as Gesamtstunden“ & _
"FROM Stundenzuweisung INNER JOIN " & _
"arbeitnehmer ON (arbeitnehmer.Nachname = " & _
"stundenzuweisung.arbeitnehmer_nachname) "
Me.Honorarkräfteanteil.RowSource=SQL
Gruß EPa
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]