BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das OpenOffice Forum zu erhalten!

DANKE >><< DANKE

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des OpenOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als OO-SUPPORTER gekennzeichnet. 🤗

[gelöst] Variable soll als Parameter mehrere Abfragen auslösen

Alles zur Programmierung im OpenOffice.org
Antworten
Benni11
Beiträge: 17
Registriert: Mi 26. Jun 2013, 09:29

[gelöst] Variable soll als Parameter mehrere Abfragen auslösen

Beitrag von Benni11 » So 19. Jul 2015, 15:01

Mein Problem habe ich bereits unter dem Titel 'Eingabewert soll automatisch Parameter-Abfragen auslösen' ins Calc-Forum eingestellt, jedoch ist dort bisher keine endgültiger Lösungsansatz gefunden worden.
In einem Tabellendokument sollen Daten aus vorgegebenen Abfragen zusammengefasst und für Zwecke der Nachkalkulation nach verschiedenen Kriterien aufbereitet und ausgewertet werden.
Sämtliche Base-Abfragen für die Ermittlung der Kosten, der beteiligten Mitarbeiter, der Rechnungssumme usf. haben pro Auswertung als Parameter dieselbe Rechnungsnummer (:RECH_NR).
Das Makro zum Aufruf der einzelnen Abfragen in Base ist fertig, es läuft wunderbar, allerdings mit dem fehlerträchtigen Manko, dass ich mich bei der mehrmals erforderlichen Eingabe der Rechnungsnummer nicht vertippen darf, sonst erhalte ich letztlich unzutreffende Daten für die Nachkalkulation.
Leider bin ich in Sachen Makro und Programmierung ein "Vollpfosten", deshalb meine Frage an die Experten: Wie kann ich ein Makro basteln, das mir bei dessen Aufruf ein Fenster zur Eingabe einer Rechnungsnummer zeigt und dann anschließend mit diesem einmalig eingegebenen Wert die im Makro angesprochenen Base-Abfragen aufruft?
Schon jetzt vielen Dank für euer Interesse an meiner Fragestellung.
Gruß Benni11
Dateianhänge
Makro_Abfragen.odt
Makro_Abfragen
(12.82 KiB) 272-mal heruntergeladen
Zuletzt geändert von Benni11 am Mo 4. Apr 2016, 15:43, insgesamt 1-mal geändert.
Windows 10, OpenOffice 4.1, LibreOffice 6.x, MS Office

F3K Total
Beiträge: 1007
Registriert: Mo 1. Aug 2011, 00:03

Re: Variable soll als Parameter mehrere Abfragen auslösen

Beitrag von F3K Total » So 19. Jul 2015, 19:12

Moin,
wenn ich dich richtig verstanden habe, hast Du in Base mehrere Parameterabfragen, Parameter ist :RECH_NR, die du in Calc importiert hast.
Dein angehängter, aufgezeichneter Makro-Code macht nix weiter als Calc zu sagen, "lade die Abfragen neu", und dabei wird der Parameter jedesmal neu abgefragt.
Ich wüsste nicht, wie man an dieser Stelle den Parameter per Makro übergeben kann, ohne dass das Abfragefenster erscheint.
Mein Vorschlag wäre es, die gewünschte Rechnungsnummer per Makro in die Datenbank zu schreiben und dann eine "nicht-Parameter-Abfrage" in Calc zu aktualisieren.
Wenn du die DB hier hochlädst, ggf. verfremdet, kann man mal schauen.

Gruß R
Windows 10: AOO, LO Linux Mint: AOO, LO

Benni11
Beiträge: 17
Registriert: Mi 26. Jun 2013, 09:29

Re: Variable soll als Parameter mehrere Abfragen auslösen

Beitrag von Benni11 » Mo 20. Jul 2015, 10:15

F3K Total, Danke für deine Antwort.
wenn ich dich richtig verstanden habe, hast Du in Base mehrere Parameterabfragen, Parameter ist :RECH_NR, die du in Calc importiert hast.
So ist es.
Die Datenbank basiert auf Access, ist ständig im Zugriff und eine "heilige Kuh", hier erlaubt die Obrigkeit in unserem Hause keine Veränderungen. Ich kann höchstens Abfrageschnipsel liefern, nachfolgend in SQL, wenn anders gewünscht, bitte Nachricht.
Bestünde ähnlich wie in Excel / Query die Möglichkeit, dass die BASE-Abfragen den benötigten Wert aus der Zelle "Rechnungsnummer" der Calc-Auswertung auslesen?
Ich habs im Kriterienfeld :RECH_NR der Abfragen mit Verknüpfungen versucht (z.B. ='file:///C:/Kunden-Daten/OpenOffice/Nachkalk_neu.ods'#Auswertung.I6) versucht, aber nichts haut hin. Der Fehlermeldung zu Folge ist die Umwandlung in einen gültigen Wert nicht möglich.
Aber vielleicht hast du oder jemand anderer die zündende Idee.
Jetzt schon vielen Dank.
Gruß Benni11
Dateianhänge
Abfragen_SQL.odt
(16.81 KiB) 280-mal heruntergeladen
Windows 10, OpenOffice 4.1, LibreOffice 6.x, MS Office

F3K Total
Beiträge: 1007
Registriert: Mo 1. Aug 2011, 00:03

Re: Variable soll als Parameter mehrere Abfragen auslösen

Beitrag von F3K Total » Mo 20. Jul 2015, 19:37

Moin,
also wir versuchen es:
Führe über Extras/SQL ... folgenden Befehl an einer Kopie der Datenbank aus:

Code: Alles auswählen

CREATE TABLE `FILTER` ( `RECH_NR` INTEGER PRIMARY KEY)
So erstellst du eine Tabelle FILTER mit einer Spalte RECH_NR.
Nun füge in den Abfragen zwischen FROM und WHERE jeweils die Tabelle `FILTER` hinzu, das Komma nicht vergessen, und ersetze den Parameter :RECH_NR durch `FILTER`.`RECH_NR` z.B. in
Grunddaten Einzelrechnung:
SELECT `ADR_MND_ST`.`MND_NR`, `RECHNUNG`.`AN_NAME1`, `RECHNUNG`.`AN_NAME2`, `RECHNUNG`.`RECH_LFD_NR`, `RECHNUNG`.`RECH_NR`, `RECHNUNG`.`DATUM`, `RECHNUNG`.`SUM_NETTO`, `RECHNUNG`.`SUM_PAUSCH`, `RECHNUNG`.`SUM_BRUTTO`, `RECHNUNG`.`ZEIT_RAUM` FROM `ADRESS_ST`, `ADR_MND_ST`, `RECHNUNG`, `FILTER` WHERE `ADRESS_ST`.`ADR_NR` = `ADR_MND_ST`.`ADR_MND_NR` AND `RECHNUNG`.`ADR_MND_NR` = `ADRESS_ST`.`ADR_NR` AND `ADR_MND_ST`.`BEREICH` = 3 AND `RECHNUNG`.`BEREICH` = 3 AND `RECHNUNG`.`RECH_NR` = `FILTER`.`RECH_NR`
Auf diese Weise ziehen sich dann alle drei Abfragen die Rechnungsnummer aus der Tabelle FILTER.
Trage nun eine einzige, erste Rechnungsnummer in die Tabelle FILTER ein, speichere sie und schliesse die Tabelle.
Es ist entscheidend, dass die Tabelle FILTER exakt eine Zeile hat!

Nun benötigst du noch ein Makro, dass dir die Rechnungnummer in die Tabelle FILTER schreibt, z.B.

Code: Alles auswählen

Sub Lese_Rechnungsnummer
    dim nRechnungsnummer as integer
    DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
    Datenquelle = DatabaseContext.getByName("NAME_DER_ANGEMELDETEN_DATENBANK")'Hier muss der Datenbankname eingesetzt werden
    Verbindung = Datenquelle.GetConnection("","")' ("Benutzername","Passwort")
    SQL_Anweisung = Verbindung.createStatement()
    nRechnungsnummer = inputbox("Bitte Rechnungsnummer eingeben","Eingabe",)
    if nRechnungsnummer = 0 then
        msgbox ("Ohne Eingabe keine Abfrage",16,"Fehler")
        exit sub
    endif
    sSQL = "update `FILTER` set `RECH_NR` = " + nRechnungsnummer
    SQL_Anweisung.executeupdate(sSQL)'Die Rechnungsnummer wird in die Tabelle FILTER geschrieben
    'und jetzt führst du dein ursprüngliches Makro "Abfragen" aus, um die Calc-Datei zu aktualisieren:
    CALL Abfragen
End Sub
So sollte es klappen.
Gruß R
Windows 10: AOO, LO Linux Mint: AOO, LO

Benni11
Beiträge: 17
Registriert: Mi 26. Jun 2013, 09:29

Re: Variable soll als Parameter mehrere Abfragen auslösen

Beitrag von Benni11 » Do 23. Jul 2015, 10:46

F3K Total,
herzlichen Dank für deine Lösung, die dich sicherlich nicht nur fachlich, sondern auch zeitlich Einiges gekostet hat.
Sobald ich störungsfrei an die Datenbank komme, will ich deine Lösung ausprobieren. Ich hoffe, dass sich die Replikate der Datenbank (teilweise wird außer Haus im Offline-Betrieb mit der Datenbank gearbeitet) dann weiterhin synchronisieren lassen.
Nochmals vielen Dank. Ich melde mich bald wieder.
Gruß Benni 11
Windows 10, OpenOffice 4.1, LibreOffice 6.x, MS Office

Benni11
Beiträge: 17
Registriert: Mi 26. Jun 2013, 09:29

Re: Variable soll als Parameter mehrere Abfragen auslösen

Beitrag von Benni11 » Mo 4. Apr 2016, 15:35

F3K Total,
nach langer, langer Zeit bin ich wieder zurück, nochmals vielen Dank für deine Lösung.
Gruß Benni11
Windows 10, OpenOffice 4.1, LibreOffice 6.x, MS Office

Antworten