Rechnungsdruck aus Formular

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Benutzeravatar
OrionVII
**
Beiträge: 29
Registriert: Mo, 09.08.2010 04:56

Rechnungsdruck aus Formular

Beitrag von OrionVII »

Hallo zusammen,

meine erstes "Projekt" mit Base ist eine Rechnungsdatenbank. Inzwischen habe ich als Access-Umsteiger das Prinzip mit den Makros einigermaßen begriffen.

Mein neues Problem: Im Handbuch fand ich einen Codeschnippsel, in dem ich oForm etc angepasst habe.

Code: Alles auswählen

SUB Filtern_und_Drucken
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
DIM oDatenquelle AS OBJECT
DIM oVerbindung AS OBJECT
DIM oSQL_Anweisung AS OBJECT
DIM stSQL AS STRING
oDoc = thisComponent
oDrawpage = oDoc.Drawpage
oForm = oDrawpage.Forms.getByName("MainForm")
oFeld = oForm.getByName("fmtID")
oDatenquelle = ThisComponent.Parent.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oVerbindung = oDatenquelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement()
stSql = "UPDATE ""Filter"" SET ""Integer"" = '"+oFeld.GetCurrentValue()+"' WHERE
""ID"" = TRUE"
oSQL_Anweisung.executeUpdate(stSql)
ThisDatabaseDocument.ReportDocuments.getByName("Rechnung").open
END SUB
Aber was anschließend gemacht werden soll, kapiere ich nicht:

Anschließend wird der Bericht gestartet. Die Ansicht, auf der der Bericht beruht, wurde entsprechend um eine Bedingung erweitert:
... WHERE "Rechnung_ID" = IFNULL((SELECT "Integer" FROM "Filter" WHERE "ID" = TRUE),"Rechnung_ID") ...
Es wird das Feld "Integer" ausgelesen. Falls dieses Feld keinen Wert enthält wird stattdessen
"Rechnung_ID" = "Rechnung_ID" gesetzt. Das bedeutet, dass alle Datensätze angezeigt werden –
nicht nur der Filterdatensatz. So können also gegebenenfalls mit der gleichen Ansicht auch alle
gespeicherten Rechnungen ausgedruckt werden.

Wo muss die Bedingung eingetragen qwerden?
Viele Grüße aus dem Flammkuchenland
RobertG
********
Beiträge: 2034
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Rechnungsdruck aus Formular

Beitrag von RobertG »

Hallo OrionVII,

die Bedingung gehört in die Ansicht. Das ist ja auch nur eine Abfrageform, die allerdings direkt von der im Hintergrund liegenden Datenbank verarbeitet wird. Da hängst Du dann in der Bearbeitungsansicht/SQL

Code: Alles auswählen

WHERE "Rechnung_ID" = IFNULL((SELECT "Integer" FROM "Filter" WHERE "ID" = TRUE),"Rechnung_ID")
an, wenn noch nicht das Schlüsselwort WHERE vorkommt. Ansonsten musst Du WHERE durch AND ersetzen.
Voraussetzung ist die Tabelle "Filter", die Du aber schon in dem Makro stehen hast, also wohl vorhanden sein muss. Das Feld "ID" ist ein Ja/Nein-Feld. Es wird der Wert ausgelesen, der im Feld "Integer" der Tabelle "Filter" steht, bei der "ID" 'Ja' ist.

Gruß

Robert
Benutzeravatar
OrionVII
**
Beiträge: 29
Registriert: Mo, 09.08.2010 04:56

Re: Rechnungsdruck aus Formular

Beitrag von OrionVII »

Sorry, aber ich blicke immer noch nicht durch. Ich habe also eine Ansicht (ansRechnungsdetails) erschaffen, die alle Felder beinhaltet, die im Rechnungsbericht benötigt werden.

Das SQL sieht nun so aus:

Code: Alles auswählen

SELECT "tblAnrede"."Anrede", "Vorname" || ' ' || "Nachname" "Kunde", "tblKunden"."Adresse", "Postleitzahl" || ' ' || "Ort" "PLZ und Ort", "tblKunden"."KundenID" "Kundennummer", "RechnungsID" + 47 || '/' || YEAR( CURRENT_DATE ) "Rechnungsnummer", "tblRechnungen"."Rechnungsdatum", "tblRechnungen"."Projekt", "tblArtikel"."Artikel", "tblEinheit"."Einheit", "tblRechnungsdetails"."Zahlungsbedingungen" "Leistung", "tblRechnungsdetails"."Artikelpreis" "Einzelpreis", "tblRechnungsdetails"."Menge", "Menge" * "Artikelpreis" * 0.19 "MwSt", "Menge" * "Artikelpreis" + "Menge" * "Artikelpreis" * 0.19 "Gesamtbrutto", "tblFirmeninformation"."Firmenname", "tblFirmeninformation"."Vorname" "V2", "tblFirmeninformation"."Nachname" "N2", "tblFirmeninformation"."Geschäftsform", "tblFirmeninformation"."Adresse" "A2", "tblFirmeninformation"."Postleitzahl" "P2", "tblFirmeninformation"."Telefon" "T2", "tblFirmeninformation"."Mobil" "M2", "tblFirmeninformation"."email", "tblFirmeninformation"."Finanzamt", "tblFirmeninformation"."Steuernummer", "tblFirmeninformation"."Bank", "tblFirmeninformation"."BIC", "tblFirmeninformation"."IBAN", "tblRechnungen"."RechnungsID" FROM "tblRechnungsdetails", "tblRechnungen", "tblKunden", "tblEinheit", "tblArtikel", "tblAnrede", "tblFirmeninformation" WHERE "tblRechnungsdetails"."RechnungsID" = "tblRechnungen"."RechnungsID" AND "tblRechnungen"."KundenID" = "tblKunden"."KundenID" AND "tblRechnungsdetails"."EinheitID" = "tblEinheit"."EinheitID" AND "tblRechnungsdetails"."Artikel" = "tblArtikel"."ArtikelID" AND "tblKunden"."Anrede" = "tblAnrede"."AnredeId"
Und da muss ich nun den von Dir vorgeschlagenen Zusatz einbauen?
Dateianhänge
ansRechnungsdetails.png
ansRechnungsdetails.png (117.83 KiB) 3321 mal betrachtet
Viele Grüße aus dem Flammkuchenland
RobertG
********
Beiträge: 2034
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Rechnungsdruck aus Formular

Beitrag von RobertG »

Hallo OrionVII,

Nimm den SQL-Code Deiner Ansicht. Da sind ja schon durch die Verknüpfungen viele Bedingungen drin. Füge zum Schluss

Code: Alles auswählen

AND "tblRechnungen"."RechnungsID" = IFNULL((SELECT "Integer" FROM "Filter" WHERE "ID" = TRUE),"tblRechnungen"."RechnungsID")
an. Dann führe die Abfrage einmal aus. Das müsste es sein - Wenn die Tabelle "Filter" und darin das Feld "Integer" besteht.

Gruß

Robert
Benutzeravatar
OrionVII
**
Beiträge: 29
Registriert: Mo, 09.08.2010 04:56

Re: Rechnungsdruck aus Formular

Beitrag von OrionVII »

RobertG hat geschrieben:Hallo OrionVII,

Nimm den SQL-Code Deiner Ansicht. Da sind ja schon durch die Verknüpfungen viele Bedingungen drin. Füge zum Schluss

Code: Alles auswählen

AND "tblRechnungen"."RechnungsID" = IFNULL((SELECT "Integer" FROM "Filter" WHERE "ID" = TRUE),"tblRechnungen"."RechnungsID")
an. Dann führe die Abfrage einmal aus. Das müsste es sein - Wenn die Tabelle "Filter" und darin das Feld "Integer" besteht.

Gruß

Robert
Das war's!!!! So cool... Du hast mir super geholfen!!!
Viele Grüße aus dem Flammkuchenland
Antworten