Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Access Abfrage in vba weiterbearbeiten

Begonnen von gsaccess, Januar 07, 2023, 16:43:05

⏪ vorheriges - nächstes ⏩

gsaccess

Ich habe in meiner Datenbank eine Abfrage die mir die Auftragsnummer der letzten Schlussrechnung liefert.
SELECT auftrag.Kunden_Nr, Max(auftrag.auftrag_nr) AS letzteSR
FROM auftrag
GROUP BY auftrag.Kunden_Nr, auftrag.schlussrechnung
HAVING (((auftrag.Kunden_Nr)=[Formulare]![frmReBearbeitung]![Navigationsunterformular].[Formular]![txtKundenNr]) AND ((auftrag.schlussrechnung)=True));
Nun möchte ich diesen Wert in VBA weiterverwenden bzw. in einer zweiten Abfrage einbinden damit dort die Teilrechnungen des Kunden ab der letzten Schlussrechnung verwendet werden.
Abfrage der bisherigen Teilrechnungen des Kunden
SELECT auftrag.Kunden_Nr, auftrag.auftrag_nr, auftrag.int_auftrag_nr, Sum(auftrag.summe_netto) AS NettoResumme, Sum([summe_netto]+[summe_netto]*[Mwstsatz]/100) AS BruttoResumme, Sum(zahlungsdetail.Zahlungsbetrag) AS BisherBezahlt, zahlungsdetail.Zahlungsdatum, Sum(([summe_netto]+[summe_netto]*[Mwstsatz]/100)-[zahlungsbetrag]) AS Differenz
FROM auftrag LEFT JOIN zahlungsdetail ON auftrag.auftrag_nr = zahlungsdetail.AuftragID
WHERE (((auftrag.Teilrechnung)=True))
GROUP BY auftrag.Kunden_Nr, auftrag.auftrag_nr, auftrag.int_auftrag_nr, zahlungsdetail.Zahlungsdatum
HAVING (((auftrag.int_auftrag_nr)=[Formulare]![frmReBearbeitung]![Navigationsunterformular].[Formular]![int_auftrag_nr]));

Hat jemand eine Idee wie ich diese beiden Abfragen kombinieren kann, bzw. wie ich das Ergebnis der ersten Abfrage in ein Feld im Formuar einblenden kann.

meine Versuche in VBA sind aufgrund geringen Kenntnisse alle gescheitert:
ein Versuch
Dim rs As DAO.Recordset
Dim strsql As Variant
strsql = " SELECT Max(auftrag.auftrag_nr) AS letzteSR FROM auftrag GROUP BY auftrag.Kunden_Nr, auftrag.schlussrechnung; HAVING (((auftrag.Kunden_Nr)=[Formulare]![frmReBearbeitung]![Navigationsunterformular].[Formular]![txtKundenNr]) AND ((auftrag.schlussrechnung)=True)); "
Me.txtletzteSR = strsql

MzKlMu

Hallo,
zeige bitte mal ein Bild des beziehungsfensters, damit man sich ein Bild vom Tabellenaufbau machen kann. Ohne kann ich keine Vorschläge machen.
Gruß Klaus

gsaccess

#2
Wie kann ich ein Bild im forum zeigen?

Ich habe das Bild hier hochgeladen. MzKlMu

MzKlMu

Hallo,
Zum Anhängen von Bildern bittte nach Scrollen (vorher Antworten klicken) und Datei hochladen.

Die Datenbankstruktur ist stark verbesserungsbedürftig. Die Rechnungsdaten gehören in eine extra Tabelle und auch die Zahlungen müssen als je ein Datensatz in eine extra Tabelle. Und wenn Du Teilrechnungen hast, ist zwischen Rechnungen und Zahlungen noch eine TAbelle für die Teilrechnungen anzulegen.
Es ist auch keine referentielle Integrität eingestellt, was für eine funktionierende Datenbank unerlässlich ist.

Mit dieser Datenbankstruktur kann ich Dir leider nicht helfen.

Du solltest Dich mit den Grundlagen zum Aufbau relationaler Datenbanken beschäftigen.

https://www.hdm-stuttgart.de/~riekert/lehre/db-kelz/

https://www.access-tutorial.de/
Gruß Klaus

gsaccess

Vielen Dank für die rasche Hilfe. Das mit der referentiellen Integrität ist mir klar. Ich bin dabei die gesamte Datenbank neu zu strukturieren (Übernahme von einem anderen Programmierer).
Ich habe nur versucht in der alten Datenbank einige adhoc Änderungen zu machen.

Die Rechnungen sind in einer eigenen Tabelle die aber leider auftrag heißt. In dieser Tabelle werden Teilrechnungen, Schlussrechnungen, Innergem Erwerbe, Export, Bauleistungen in jeweils einem J/N Feld gespeichert. Alle Rechnungen haben eine aufsteigende Nummerierung.
Die Zahlungen werden in der Tabelle Zahlungsdetails gespeichert. Dabei wird die jeweilige Rechnungsnummer mitgespeichert.
Ist es aus deiner Erfahrung sinnvoll alle Tabellen neu aufzubauen und dann die Daten in die neuen Tabellen zu übernehmen oder macht es Sinn die Tabellen ordentlich zu verknüpfen?
Vielen Dank im Voraus für deine fachmännisch Meinung.

MzKlMu

Hallo,
wenn Du schon neu machst, tritt das bisherige in Tonne. Das ist weitgehend unbrauchbar.
Die Tabellen müssen in jedem Fall ordentliche (besser korrekte) Beziehungen haben, mit RI. Orientiere Dich an den obigen Links.
Verknüpfungen ist übrigens etwas anderes als Beziehungen. Beziehungen gibt es ausschließlich im Beziehungsfenster bzw. werden dort angelegt. Verknüpfungen werden in Abfragen angelegt. Sind oftmals gleich wie die Bezeihungen müssen aber nicht.
Gruß Klaus

gsaccess

Vielen Dank!!! :) Dann werd ich mal in den nächsten Wochen an die Arbeit gehen und übers Wochenende mich mit deinen Links befassen.