Rechnungsdruck aus Formular
Verfasst: Mi, 13.01.2016 05:56
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.
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?
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
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?