Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Daten nach Excel exportieren

Begonnen von RedChris, Januar 17, 2020, 20:47:00

⏪ vorheriges - nächstes ⏩

RedChris

Hallo. Seit einiger Zeit arbeite ich mich im Rahmen eines kleinen Projektes in Access ein. Bisher konnte ich über die Recherche hier sehr viel lernen und erreichen. Dafür erstmal ein herzliches Dankeschön.

Nun stehe ich jedoch vor einem Problem, dass ich nicht gelöst bekomme.

Meine Datenbank besteht aus mehreren Tabellen. Eine davon ein Kassenbuch in dem Ausgaben und Einnahmen aufgelistet werden. In einem Formular habe ich nun über eine Abfrage eine Auflistung von Ausgaben in einem wählbaren Bereich von Kontoauszügen (Auszugsnummer). Diesen Bereich definiere ich über eine "Hilfstabelle" mit nur einem Datensatz.

Jetzt möchte ich das Ergebnis der Abfrage in eine vorgegebene Exceltabelle exportieren. Dazu habe ich eine VBA Anleitung gefunden. Wenn ich den Bereich in der SQL Abfrage "fest definiere" also eine z. B. 74 bis 75 eintrage funktioniert die Ausgabe in die Exceltabelle.
Ersetze ich in obigem Beispiel 74 bis 75 durch die Felder der "Hilfstabelle" bleibt der VBA-Code hängen mit der Fehlermeldung - 2 Parameter wurden erwartet, aber es wurden zuwenige Parameter übergeben.

Die SQL-Abfrage sieht so aus:

     sSQL = "SELECT tab_Kassenbuch.KtoAuszugNr, tab_Kassenbuch.BDatum, tab_Kassenbuch.Betrag, tab_Kassenbuch.Konto, " _
            & "tab_Kassenbuch.Btext FROM tab_Kassenbuch INNER JOIN tab_Erziehungsberechigte ON tab_Kassenbuch.Konto " _
            & "= tab_Erziehungsberechigte.Buchungskto WHERE (((tab_Kassenbuch.KtoAuszugNr) Between [htab_Suchkriterien]![qKtoAuszugVon] And [htab_Suchkriterien]![qKtoAuszugBis]) " _
            & "AND ((tab_Kassenbuch.Betrag)<0) AND ((tab_Kassenbuch.Bank)=True));"

im Fett gedrucken Bereich muss der Fehler sein. Aber mir ist nicht klar was falsch ist.

Für Hilfe und eine Erklärung bin ich dankbar. Ich komme nicht mehr weiter.


RedChris

Ich antworte mir mal selbst  ;D

Ich habe es nun so gelöst.
Zuerst eine SQL-Abfrage der "Hilfstabelle" und die Felder in eine Variable schreiben.

Dann die eigentliche SQL-Abfrage unter Verwendung der Variablen.

Wenn es einen eleganteren Weg gibt, würde ich gerne lernen wie.

ebs17

Die Hilfstabelle muss im FROM-Teil aufgeführt werden, damit Du deren Felder verwenden kannst.
Siehe auch Grundlagen - SQL ist leicht (11) - Reihenfolge der Abfrageabarbeitung

"... FROM htab_Suchkriterien, tab_Kassenbuch INNER JOIN ..."

Bei nur einem Datensatz reicht da ein CROSS JOIN.

In dieser Verwendung würde ich die Hilfstabelle Parametertabelle nennen. Die Verwendung einer solchen kann durchaus sehr entspannend wirken.

Mit freundlichem Glück Auf!

Eberhard

Hondo

Hallo,
was ist htab_Suchkriterien? Wenn es eine Tabelle ist muss zwischen Tabellennamen und Feldnamen ein Punkt stehen, kein Ausrufezeichen.
Außerdem muss die Tabelle in der Abfrage stehen, sonst funktioniert das nicht - wie ebs17 geschrieben hat.
Gruß Andreas


RedChris

Vielen Dank. Ich werde es damit versuchen, ich stelle fest das es noch einiges zu lernen gibt  ;)

... htab_Suchkriterien  - Der Name ist eine "Altlast" htab=Hilfstabelle, und Anfangs wahren nur 2 Felder drin. Nachname & Vorname mit diesen wurden als Parameter genutzt.
Der Name Parametertabelle wäre viel besser gewesen. Aber alles ändern will ich, zumindest vorerst nicht.