Summe von Feldern mit ganz bestimmten Wert

Hallo zusammen,

ich habe eine Datenbank in der ich Rechnungen zu Projekten erfassse.
Diese Rechnungen sind bestimmten Arten zugeordnet (z.b. Server klein, Standardsoftware etc.) diese zuordnung wird über ein Kombinationsfeld getätigt.
Das Kombinationsfeld greift auf eine zweite Tabelle zu, in dieser Tabelle sind den Arten auch noch zwei Werte zugeordnet. (z.b. Server klein = Investition, Standardsoftware = Investition, GWG = Kosten etc.)

Ich möchte mir nun im „Rechnungseingang“ die Summe aller Rechnungen anzeigen lassen die als Art Investition haben und die Summe aller Rechnungen die als Art Kosten haben.

Bin in VBA nicht sehr fit und in Acces ein blutiger Anfänger.
Bin für jede Hilfe dankbar.

Vielen Dank im voraus!!

Ich hoffe, das hab ich so richtig verstanden. Die Tabellen wären dann so aufgebaut:

tbl_Klasse
ID | Klasse

1 | Investition
2 | Kosten

tbl_Arten
ID | Art | Klasse*

1 | Server klein | Investition
2 | Standardsoftware | Investition
3 | GWG | Kosten
* Felddatentyp Nachschlagen unter tbl_Klasse

tbl_Rechnungen
ID | Nr | … | Art*

1 | 01 | | Server klein
* Felddatentyp Nachschlagen unter tbl_Art

Dann 2 Abfragen erstellen und in der Ansicht SQL folgendes reinkopieren

  1. Abfrage für Summe nach Klasse

    SELECT tbl_Klassen.Klasse, Sum(tbl_Rechnungen.Betrag) AS SummevonBetrag
    FROM tbl_Klassen INNER JOIN (tbl_Art INNER JOIN tbl_Rechnungen ON tbl_Art.ID = tbl_Rechnungen.Art) ON tbl_Klassen.ID = tbl_Art.Klasse
    GROUP BY tbl_Klassen.Klasse;

  2. Abfrage für Summe nach Art

    SELECT tbl_Art.Art, Sum(tbl_Rechnungen.Betrag) AS SummevonBetrag
    FROM tbl_Art INNER JOIN tbl_Rechnungen ON tbl_Art.ID = tbl_Rechnungen.Art
    GROUP BY tbl_Art.Art;

Hallo,
mich wundert das Du mich persönlich ansprichst. Ich beantworte generell keine Fragen im PM. Bitte hab Verständnis dafür. Es ist eine Frage die Dir ein jeder in Forum beantworten kann.

Hallo Controllerin,

Diese Rechnungen sind bestimmten Arten zugeordnet (z.b. Server
klein, Standardsoftware etc.) diese zuordnung wird über ein
Kombinationsfeld getätigt.
Das Kombinationsfeld greift auf eine zweite Tabelle zu, in
dieser Tabelle sind den Arten auch noch zwei Werte zugeordnet.
(z.b. Server klein = Investition, Standardsoftware =
Investition, GWG = Kosten etc.)

Ich möchte mir nun im „Rechnungseingang“ die Summe aller
Rechnungen anzeigen lassen die als Art Investition haben und
die Summe aller Rechnungen die als Art Kosten haben.

Bin in VBA nicht sehr fit und in Acces ein blutiger Anfänger.

Wenn ich das richtig verstanden habe, dann sind die Daten in ACCESS erfasst.

Wenn deine Datenbank richtig eingerichtet ist, dann ist für die 2 Tabellen auch eine Relation eingerichtet (1:n Beziehung zwischen der Tabelle 2 und dem Datenfeld, dass bei der Rechnungserfassung mit dem Kombifeld ausgefüllt wird.)

Für die Auswertung muss du in ACCESS eine Abfrage erstellen, in der du alle Datenfelder aus den 2 Tabellen festlegst, die für die Auswertung benötigt werden, Auch die Filter-/Suchkriterien für die Felder kannst du hier festlegen.

Für die Ausgabe der Auswertung hast du jetzt zwei Möglichkeiten:

  1. Bericht/Report in ACCESS erstellen
  2. Daten der Abfrage in Excel aus ACCESS importieren und daraus einen Pivottabellenbericht erstellen.

Evtl. ist für die Erstellung von Pivottabellenberichten in Excel mehr Flexibilität vorhanden, wenn du in der ACCESS-Abfrage keine Filterkriterien festlegst, sondern die Möglichkeiten der Filter im Excel-Pivotbericht nutzt.

Mit der Erstellung von Berichten in ACCESS hab ich wenig Erfahrung. Der Report-Assisstent sollte aber ausreichende Hilfen zur Verfügung stellen, um auch das Summenfeld einzurichten.

Gruß
Franz

Hallo, leider konnte ich nicht eher antworten, da ich zur Zeit einen kompletten Absturz unseres gesamten Systems habe. Ich kann deswegen nicht auf mein Access zugreifen und leider aus dem Kopf keine Antwort geben. Ich hoffe, dass dir ein anderer besser helfen kann, sorry…
LG
Pitti

Nachdem jeder Rechnung eine Art zugeordnet und gespeichert wird, läßt sich in einer neuen Abfrage mit anschließender Listenerzeugung dies ermitteln. In der Abfrage die Tabelle Rechnungen und die 2.Tabelle mit den Arten als Herkunft benennen. Daraus die Inhalte der 2.Tabelle holen und die Felder von den Rechnungen -fertig. Mit dieser Abfrage kann ich dann alle möglich Kriterien fest eingeben oder durch Wie[bitte Art eingeben] variabel festlegen. Nachdem die Abfrage gespeichert ist, kann ich die gewünschten Rechnungen mit der Auswahl sehen. Aus dieser Anfrage kann ich die gewünschte Liste erzeugen.

Hallo Controllerin

Ohne die Struktur der DB zu kennen, kann ich nicht sehr viel dazu sagen. Trotzdem soviel dazu:

Ich würde dies mit SQL machen:

Beispiel:
DIM SQL As String
SQL=„SELECT Count(Rechnung) As Betrag FROM Rechnungen GROUP BY Rechnung HAVING Rechnungsart=‚Kosten‘“
Text1.Text=DBEngine(0)0).OpenRecordSet(SQL,dbOpenForwardOnly)(0)
Wobei dabei angenommen ist, das die Tabelle ‚Rechnungen‘ heist und die Felder ‚Rechnung‘ und ‚Rechnungsart‘ hat.

Wolfgang

Entschuldigung, leider war beginn des Quartalsabschlusses und mich hat eine Lungenentzündung nieder gestreckt.

Ich wollte das gerne direkt im Formular anzeigen lassen. Wie ich dies in einer Abfrage hinbekomme weiß ich, da hab ich mich leider nicht deutlich genug ausgedrückt. Sorry.

Ich würde es lieber in einem Textfeld direkt im Formular anzeigen lassen. So wie ich dort ja auch die Summe aller Rechnungen in einem Textfeld anzeigen kann.

Vielen Dank für deine Hilfe.

Hallo Franz,

Entschuldigung, leider war beginn des Quartalsabschlusses und mich hat eine Lungenentzündung nieder gestreckt.

Ich wollte das gerne direkt im Formular anzeigen lassen. Wie ich dies in einer Abfrage oder/und in einem Bericht hinbekomme weiß ich, da hab ich mich leider nicht deutlich genug ausgedrückt. Sorry.

Ich würde es lieber in einem Textfeld direkt im Formular anzeigen lassen. So wie ich dort ja auch die Summe aller Rechnungen in einem Textfeld anzeigen kann.

Und ja die Relationen habe ich und die Tabellen befinden sich auch in der 3. Normalform.

Vielen Dank für deine Hilfe.

Gruß
Controllerin

Danke das du trotzdem geantwortet hast Pitti.

Ich hoffe du konntest die Ursache des Absturzes schnell ermitteln und dein System schnell wieder in Betrieb nehmen.
Ist wirklich unangenehm wenn ein Betrieb wegen sowas still steht.

Drück dir die Daumen,
Controllerin

Hallo Wolfgang,

danke für die Antwort.
Leider wollte ich das Feld direkt im Formular errechnen.
In meinen Abfragen und Berichten habe ich das Problem bereits gelöst.
Nun wäre es halt noch ein Nice-To-Have wenn man direkt bei der Rechnungserfassung sehen würde wenn Abweichungen vorliegen.

Gruß
Controllerin

Hallo Controllerin,

Ich wollte das gerne direkt im Formular anzeigen lassen.

Ich würde es lieber in einem Textfeld direkt im Formular
anzeigen lassen. So wie ich dort ja auch die Summe aller
Rechnungen in einem Textfeld anzeigen kann.

In ACCESS kenne ich mich mit den Möglichkeiten der Werteberechnungen in Formular-Feldern (ohne VBA-Funktionalität) leider nicht aus.
In Excel gibt es SUMMEWENN zur Auswertung von Matrizen. In Access sind solche Auswertungen meines wissens nur über Gruppierungen möglich. Ich bin aber überfragt, wie man das in einem Access Formular umsetzen kann. Du solltest da mal eine Spezialisten aus dem Datenbank-Forum fragen. Meine Welt ist mehr EXCEL.

Gruß
Franz

Hallo Controllerin,

Um in einem Formular entsprechende
Ergebnisse einer Abfrage anzeigen zu können, muss
dies mit entsprechenden SQL-Abfragen erfolgen.

Bei jeder definierten Abfrage, die mit Hilfe des in
Access enthaltenen Abfragedesigners erstellt wird,
wird auch im Hintergrund der dazugehörige SQL-Code
generiert. Diesen kann man sich durch Drücken auf SQL
in der Bearbeitungsleiste oben anzeigen lassen.
Über ‚Copy und Paste‘ kann dieser SQL-Code auch im
VBA-Code übernommen werden. Es muss nur darauf geachtet werden, das Hochkommas (’) auch im zu erstellenden String für eine Variable vorhanden sein muss.

Beispiel:

SQL = „SELECT Count(Rechnung) As Betrag FROM Rechnungen GROUP BY Rechnung HAVING Rechnungsart =’“ & strKosten & „’“

Diesen SQL-String kann man auch per Einzelstrings zusammensetzen lassen (im Beispiel die Variable str_Kosten). Diese Variable kann z.B. durch die Werte einer Combobox gefüllt werden so das der dann erstellte SQL-String ziemlich flexibel werden kann.

Danach können im Formular die Ergebnisse z.B. einer Liste oder ComboBox übergeben werden
Liste1.RowSource = SQL

Bei einer TextBox sieht es ein klein wenig anders aus:
Text1.Text = _
DBEngine(0)(0).OpenRecordSetSQL,dbOpenForwardOnly)(0)

Diesen Code kann man z.B. für einen Button erstellen:

Private Sub Befehl1_Click()
Dim SQL As String
SQL = " …
Liste1.RowSource = SQL
End Sub

Dann sollte die Liste jedesmal beim Drücken des Buttons neu gefüllt werden entsprechend des SQL-Strings.

Gruß Wolfgang

In einem Formular-Textfeld schreibst du in der Eigenschaft Steuerelementinhalt
=DomWert("[SummeVonBetrag]";„abf_SummeKlasse“;"[Klasse] = ‚Investition‘")

Hallo

Sorry dass ich so spät bin, war aber viel zu tun.

Die Tabelle mit den Rechnungen sollte noch eine Spalte haben. in der „Kosten“ oder "Investition steht.
Dann folgender SQL-String:
docmd.runsql "insert into „ausgabetabelle“ select * from „Tabelle“ where „Spaltenname“ = „Kriterium“ "

Tabelle auslesen und ausgeben lassen.

Gruß, Joe