LibreOffice logo
BASEDOCUMENTER
The software tool for documenting your LibreOffice Base applications
 
Database file/home/jean-pierre/Documents/BaseDocumenter/www/databases/GenoBase/GENOBASEv40x_LEER.odb
File actual save date2018-07-08 15:31:58
Scanning done on2018-08-21 16:03:34
Documentation generated on2018-08-21 16:03:50
Table of contents
GenoBase
Procedures by module
Library Module name Procedure name Missing Language Used by Number of code lines Procedure code
Standard AA_Variablen GENOBASE   Basic   4
SUB GENOBASE
msgbox "Geno.Base ist eine Datenbank für die Verwaltung von Genossenschaftsmitgliedern"
msgbox "Autor: Gisbert Friege"
END SUB
Standard Abfragen_CSV _ExportPfad   Basic   38
SUB _ExportPfad (oEvent AS OBJECT) ' NACH AKTUALISIERUNG VERSCHOBEN!
'kann auch für sich aufgerufen werden
' mit EINEM Wort unter Zusatzinformationen
DIM oDoc AS OBJECT
DIM oDB AS OBJECT
DIM oFeld AS OBJECT
oDoc = thisComponent
oDB = ThisComponent.Parent
stDBDir = Left(oDB.Location,Len(oDB.Location)-Len(oDB.Title))
oDrawpage = oDoc.Drawpage
stZusatz = oEvent.Source.Model.Tag
Select Case stZusatz
Case "Email" 'wird verwendet in 7b - Mailmerge
stPrintDir = stDBDir & "MailMerge/"
xstPrintDir = Mid(stPrintDir,9)
oForm = oDrawpage.Forms.getByName("Formular_Pfad")
oFeld1 = oForm.getByName("Beschriftungsfeld_PfadDateiName")
oFeld1.Label = " Exportpfad: " & xstPrintDir
Case "BZSt_Export" 'wird verwendet in 8b - SteuerVerwaltung
stPrintDir = stDBDir & "BZSt_Export/"
xstPrintDir = Mid(stPrintDir,9)
oForm = oDrawpage.Forms.getByName("Formular_Pfad")
oFeld1 = oForm.getByName("Beschriftungsfeld_PfadDateiName")
oFeld1.Label = " Exportpfad: " & xstPrintDir
Case "BZSt_Import" ' wird verwendet in 8b - SteuerVerwaltung Maustaste gedrückt
stPrintDir = stDBDir & "BZSt_Import/"
xstPrintDir = Mid(stPrintDir,9)
oForm2 = oDrawpage.Forms.getByName("Formular_ImportDatei")
oFeld2 = oForm2.getByName("DateiPfadSuche")
oFeld2.Text = xstPrintDir
Case Else 'nur Datenbankpfad
stPrintDir = stDBDir
xstPrintDir = Mid(stPrintDir,9)
oForm = oDrawpage.Forms.getByName("Formular_Pfad")
oFeld1 = oForm.getByName("Beschriftungsfeld_PfadDateiName")
oFeld1.Label = " Datenbankpfad: " & xstPrintDir
End Select
END SUB
Standard Abfragen_CSV Abfrage_in_CSV   Basic 7b - Mailmerge|Schaltfläche EmailsAnMitgliederNRD (Control)
7b - Mailmerge|Schaltfläche EmailsAnMitglieder (Control)
7b - Mailmerge|Schaltfläche EmailsAnMitgliederStrom (Control)
7b - Mailmerge|Schaltfläche EmailsAnMitgliederCampain (Control)
7b - Mailmerge|Schaltfläche EmailsAnInteressenten (Control)
7b - Mailmerge|Schaltfläche EmailsAnInteressentenStrom (Control)
8g - BZStOnline|Schaltfläche KiStAM-Abfrage (Control)
8g - BZStOnline|Schaltfläche KiStAM-Abfrage (Control)
8g - BZStOnline|Schaltfläche KiSt-ID-Abfrage (Control)
8g - BZStOnline|Schaltfläche KiSt-noID-Abfrage (Control)
8g - BZStOnline|Schaltfläche KiSt-alle-Abfrage (Control)
138
SUB Abfrage_in_CSV (oEvent AS OBJECT)
' Exportiert Daten aus der Datenbank in CVS-Dateien, die
' 1. in das Formular auf der BZStOnline-Seite eingelesen oder
' 2. von MailMerge (Thunderbird) verwendet werden können.
REM Der Name der Abfrage steht in "Zusatzinformationen",
' dann "Elster" bewirkt die Versionierung für BZStOnline.
' Beispiele:
' KiSt_ID-Abfrage,Elster
' KiSt_noID-Abfrage,Elster
' KiStAM-Abfrage,Elster
REM Die Abfragen für BZStOnline müssen die vorgegebene Reihenfolge von Feldern liefern!
'
REM Bei den Abfragen für MailMerge sind die
REM Spaltennamen_Variablen in GROSSBUCHSTABEN
'
DIM oDatenDatei AS OBJECT
DIM oAbfragen AS OBJECT
DIM oAbf AS OBJECT
DIM oAbfrageergebnis AS OBJECT
DIM stQuery AS STRING
DIM iNumber As Integer
DIM sDatei AS STRING
DIM stTag AS STRING
DIM sp AS INTEGER
DIM splast AS INTEGER

DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld1 AS OBJECT
DIM stDBDir AS STRING

oDoc = thisComponent
oDB = ThisComponent.Parent
stDBDir = Left(oDB.Location,Len(oDB.Location)-Len(oDB.Title)) ' Der Titel der Datenbank wird von der URL abgetrennt.

oDrawpage = oDoc.Drawpage
oForm = oDrawpage.Forms.getByName("Formular_Pfad")
oFeld1 = oForm.getByName("Beschriftungsfeld_PfadDateiName")

stTag = oEvent.Source.Model.Tag 'Tag wird unter den Zusatzinformationen eingegeben
aForms() = Split(stTag, ",") 'Hier steht der komplette Name der Abfrage, dann "Elster" oder "Email"
stName = Trim(aForms(0))
stZusatz = Trim(aForms(1))

'IF stZusatz = "Email" THEN
' stPrintDir = stDBDir & "MailMerge/"
'ELSE
' stPrintDir = stDBDir & "BZSt_Export/"
'END IF

Select Case stZusatz
Case "Email"
stPrintDir = stDBDir & "MailMerge/"
stExt = ".csv"
' Case "BZ..."
Case "SEPA"
stPrintDir = stDBDir & "SEPAXML/"
stExt = ".xml"
Case Else
stPrintDir = stDBDir & "BZSt_Export/"
stExt = ".csv"
End Select


xstPrintDir = Mid(stPrintDir,9)
oFeld1.Label = " Exportpfad: " & xstPrintDir

sDatei = stPrintDir & stName & ".csv"
IF stZusatz = "SEPA" THEN sDatei = stPrintDir & stName & stExt

janein = msgbox("Wirklich in die Datei" & ChrChr$) & ChrstName& stName & stExt & ChrChr$) & Chrausgeben"ausgeben ?",256+32+4,"Überleg nochmal:")
IF janein = 7 THEN EXIT SUB

If Fileexists(sPfadDatei) Then Kill sDatei
iNumber = Freefile
Open sDatei For Output As iNumber

oDatenquelle = ThisComponent.Parent.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oVerbindung = oDatenquelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement()
oDatenDatei = oDatenquelle.DataSource

oAbfragen = oDatenDatei.getQueryDefinitions()

' Versionierung für Elster
IF (stZusatz = "Elster" ) THEN
oAbf = oAbfragen.getByName( "Elsterversion")
stQuery = oAbf.command
oAbfrageergebnis = oSQL_Anweisung.executeQuery(stQuery)
oAbfrageergebnis.next
sWert = oAbfrageergebnis.getString(1)
Print #iNumber, sWert
ENDIF

' wir holen den Abfragetext (SQL)
oAbf = oAbfragen.getByName( stName )
stQuery = oAbf.command 'SQL-Text der Abfrage
oAbfrageergebnis = oSQL_Anweisung.executeQuery(stQuery)

splast= oAbfrageergebnis.Columns.Count

'Kopfzeile mit Spaltennamen
stSpalten()=oAbfrageergebnis.Columns.ElementNames
stKopfzeile = ""
sp = 0
WHILE sp < (splast - 1)
stKopfzeile = stKopfzeile & stSpalten(sp) & ";"
sp = sp + 1
WEND
stKopfzeile = stKopfzeile & stSpalten(sp)
Print #iNumber, stKopfzeile

'Datenzeilen
zaehler = 0
WHILE oAbfrageergebnis.next
stZeile = ""
sp=1
WHILE sp < splast + 1 'sp=Spaltennummer
'Datumsangaben umformatieren für Elster
sWert = oAbfrageergebnis.getString(sp)
IF (Len(sWert)=10) AND ((Mid(sWert,5,1)) = "-") AND ((Mid(sWert,8,1)) = "-") THEN
stZeile = stZeile & Datumgedreht(sWert) & ";"
ELSE
stZeile = stZeile & oAbfrageergebnis.getString(sp) & ";"
END IF
sp = sp + 1
WEND
stZeile = Left(stZeile,Len(stZeile)-1)
Print #iNumber, stZeile
zaehler=zaehler+1
WEND ' nächster Datensatz
Close #iNumber
msgbox ( zaehler & " Datensätze geschrieben.", 64 , "fertig:")
END SUB
Standard Abfragen_CSV Antwort_CSV_holen   Basic 8g - BZStOnline|Schaltfläche KiSt-holen (Control)
8g - BZStOnline|Schaltfläche ID-holen (Control)
174
SUB Antwort_CSV_holen (oEvent AS OBJECT)
' importiert Daten aus den Antwortdateien IDSERV, KISTAM und KISTAKOM direkt in die Tabelle SteuerDaten
'
REM Steuerung durch 2 kommagetrennte Einträge in "Zusatzinformation" in den Eigenschaften des Kontrollfeldes
REM 1.Typ der Quelldatei : KiStAM oder IdNr
REM 2.Name der Zieltabelle - SteuerDaten (kann zum Testen auch z.B. Steuerdaten-Kopie eingetragen werden)
'
DIM oDatenDatei AS OBJECT
DIM oAbfragen AS OBJECT
DIM oAbfrageergebnis AS OBJECT
DIM stQuery AS STRING
DIM iNumber As Integer
DIM sDatei AS STRING
DIM stTag AS STRING
DIM sp AS INTEGER
DIM splast AS INTEGER
DIM z AS INTEGER

stTag = oEvent.Source.Model.Tag 'Tag wird unter den Zusatzinformationen eingegeben
aForms() = Split(stTag, ",")
stTyp = Trim(aForms(0)) 'Dateityp: IdNr oder KiStAM oder KiStAKOM
stZiel = Trim(aForms(1)) 'Name der Zieltabelle: Steuerdaten

laengeTyp = Len(stTyp)

oFeld = oEvent.Source.Model
oForm = oFeld.Parent
' "Formular_ImportDatei"
oFeld2 = oForm.getByName( "Beschriftungsfeld_Datei")
sDatei = oFeld2.Label

' sDatei = Dateiauswahl("Formular_ImportDatei")

laengeDatei = Len(sDatei)
' msgbox laengeTyp & "-" & laengeDatei
zaehler=1
While ((zaehler <= laengeDatei-laengeTyp) and (mid (sDatei,zaehler,laengeTyp ) <> stTyp))
zaehler = zaehler+1
Wend
' msgbox zaehler
if zaehler > laengeDatei - laengeTyp then
msgbox ("Bitte erst eine Datei mit " & stTyp & " auswählen!",48,"Falscher Dateiyp")
exit sub
end if

REM langen Dateipfad abtrennen
xsDatei = sDatei
xsDatei_n = InStr(sDatei,"/")
'msgbox xsDatei_n
while xsDatei_n <>0
xsDatei = Right(xsDatei,Len(xsDatei)-xsDatei_n)
xsDatei_n = InStr(xsDatei,"/")
' msgbox xsDatei
wend

janein = msgbox("Sollen wirklich Daten aus der Datei" & ChrChr$) & ">>" & ChrxsDatei xsDatei & ChrChr$) & "<<" & Chrin13) & "in die DatenbankTabelle" & ChrChr$) & ">>" & ChrstZiel& stZiel & ChrChr$) & "<<" & Chreingeleseningelesen werden Schau6+32+4,"Schau genau!")
IF janein = 7 THEN EXIT SUB

If Fileexists(sDatei) Then
Msgbox("Datei gefunden.",64,"")
ELSE
Msgbox("Datei nicht gefunden.",48,"Problem")
EXIT SUB
END IF
iNumber = Freefile
Open sDatei For Input As iNumber
REM Die ersten beiden Zeilen überspringen:
Line Input #iNumber, sLine
Line Input #iNumber, sLine

oDatenquelle = ThisComponent.Parent.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oVerbindung = oDatenquelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement()

zaehler = 0
IF stTyp = "IdNr" THEN
REM von der IDNr-Antwort nehmen wir die Spalten 2,17,18 (MNr,ReturnCode,IdNr)
REM (Zählung ab = 0 ! )
While Not eof(iNumber)
Line Input #iNumber, sLine
If sLine <>"" Then
aFelder() = Split(sLine, ";")
stMNr = Trim(aFelder(2))
stMNr = Mid(stMNr,2,Len(stMNr)-2)
stRetC = Trim(aFelder(17))
stRetC = Mid(stRetC,2,Len(stRetC)-2)
stIDNr = Trim(aFelder(18))
stIDNr = Mid(stIDNr,2,Len(stIDNr)-2)
IF (stRetC <> "1") THEN
' MsgBox stMNr & " wird eingetragen. (returncode = " & stRetC

REM Wenn die Mitgliedsnummer noch nicht in der Tabellle SteuerDaten existiert muss sie erst mit INSERT angelegt werden:

stSql_MNrTest = " SELECT """ + stZiel + """.""Mitgliedsnummer"" ""MNrTest"" FROM """ + stZiel + """ WHERE """ + stZiel + """.""Mitgliedsnummer"" = '" + stMNr + "' "
' msgbox stSql_MNrTest
oResult_MNrTest = oSQL_Anweisung.executeQuery(stSql_MNrTest)
IF NOT oResult_MNrTest.next THEN '.next ist FALSE wenn die Abfrage kein Ergebnis liefert
stSql_neu = " INSERT INTO """ + stZiel + """ (""Mitgliedsnummer"") VALUES ('" + stMNr + "' ) "
oResult_neu = oSQL_Anweisung.executeQuery(stSql_neu)
msgbox ("Mitgliedsnummer " & stMNr & " neu eingefügt",64,stZiel)
END IF
stSql_Ziel = "UPDATE """ + stZiel + """ SET ""Identifikationsnummer"" = '" + stIDNr + "' WHERE ""Mitgliedsnummer"" ='" + stMNr + "' "
oResult_Ziel = oSQL_Anweisung.executeQuery(stSql_Ziel)
zaehler = zaehler + 1
END IF
End If
Wend
END IF

IF stTyp = "KiStAM" THEN
REM von der KiStAM-Antwort nehmen wir die Spalten 2,7,8,9 (MNr,ReturnCode,KiStSatz,stOeId)
REM (Zählung ab = 0 ! )
While Not eof(iNumber)
Line Input #iNumber, sLine
If sLine <>"" Then
aFelder() = Split(sLine, ";")
stMNr = Trim(aFelder(2))
stMNr = Mid(stMNr,2,Len(stMNr)-2)
stRetC = Trim(aFelder(7))
stRetC = Mid(stRetC,2,Len(stRetC)-2)
stKiStSatz = Trim(aFelder(8))
stKiStSatz = Mid(stKiStSAtz,2,Len(stKiStSatz)-2)
' stKistSatz = Format(stKiStSatz, "#0.00")
stOeId = Trim(aFelder(9))
stOeId = Mid(stOeId,2,Len(stOeId)-2)
IF ((stRetC <> "1") AND (stOeId <> "")) THEN
stSql_Ziel = "UPDATE """ + stZiel + """ SET ""KiStproz"" = " + stKiStSatz + " WHERE ""Mitgliedsnummer"" ='" + stMNr + "' "
oResult_Ziel = oSQL_Anweisung.executeQuery(stSql_Ziel)
stSql_Ziel = "UPDATE """ + stZiel + """ SET ""KiStOrgan"" = '" + stOeId + "' WHERE ""Mitgliedsnummer"" ='" + stMNr + "' "
oResult_Ziel = oSQL_Anweisung.executeQuery(stSql_Ziel)
zaehler = zaehler +1
END IF
End If
Wend
END IF

REM folgendes ist NOCH NICHT FERTIG!!!
IF stTyp = "KiStAKOM" THEN
REM von der KiStAKOM-Antwort nehmen wir die Spalten weiss noch nicht!!!! 2,7,8,9 (MNr,ReturnCode,KiStSatz,stOeId)
REM (Zählung ab = 0 ! )
While Not eof(iNumber)
Line Input #iNumber, sLine
If sLine <>"" Then
aFelder() = Split(sLine, ";")
stMNr = Trim(aFelder(2))
stMNr = Mid(stMNr,2,Len(stMNr)-2)
stRetC = Trim(aFelder(7))
stRetC = Mid(stRetC,2,Len(stRetC)-2)
stKiStSatz = Trim(aFelder(8))
stKiStSatz = Mid(stKiStSAtz,2,Len(stKiStSatz)-2)
' stKistSatz = Format(stKiStSatz, "#0.00")
stOeId = Trim(aFelder(9))
stOeId = Mid(stOeId,2,Len(stOeId)-2)
IF ((stRetC <> "1") AND (stOeId <> "")) THEN
stSql_Ziel = "UPDATE """ + stZiel + """ SET ""KiStproz"" = " + stKiStSatz + " WHERE ""Mitgliedsnummer"" ='" + stMNr + "' "
oResult_Ziel = oSQL_Anweisung.executeQuery(stSql_Ziel)
stSql_Ziel = "UPDATE """ + stZiel + """ SET ""KiStOrgan"" = '" + stOeId + "' WHERE ""Mitgliedsnummer"" ='" + stMNr + "' "
oResult_Ziel = oSQL_Anweisung.executeQuery(stSql_Ziel)
zaehler = zaehler +1
END IF
End If
Wend
END IF

Close #iNumber
IF zaehler = 1 THEN
msgbox (zaehler & " Datensatz geschrieben.",64,stZiel)
ELSE
msgbox (zaehler & " Datensätze geschrieben.",64,stZiel)
END IF
END SUB
Standard Abfragen_CSV Dateiauswahl   Basic   23
FUNCTION Dateiauswahl(stFormular AS String) AS String 'Zeile aus der Pfade-Tabelle im Formular "Steuern"
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld1 AS OBJECT
DIM oFeld2 AS OBJECT
DIM stPfad AS STRING
oDoc = thisComponent
oDrawpage = oDoc.Drawpage
' oForm = oDrawpage.Forms.getByName("Formular_Pfade")
' msgbox stFormular
' xray oDrawpage.Forms
oForm = oDrawpage.Forms.getByName(stFormular)
' oFeld1 = oForm.getByName("Dateiauswahl_Antwort_Id")
' stPfad = oFeld1.Text
oFeld2 = oForm.getByName("Tabellen-Steuerelement-Pfade")
oSpalte1 = oFeld2.getByNAme ("Textfeld_Pfade")
oSpalte2 = oFeld2.getByNAme ("Textfeld_Dateiname")
stDateiauswahl = oSpalte1.getCurrentValue()
stDateiauswahl = stDateiauswahl & "\" & oSpalte2.getCurrentValue()
magbox stDateiauswahl
Dateiauswahl = stDateiauswahl
END FUNCTION
Standard Abfragen_CSV Datumgedreht   Basic Abfrage_in_CSV (Procedure) 4
FUNCTION Datumgedreht ( stDat AS STRING ) AS STRING
stmutad() = split (stDat,"-")
Datumgedreht = stmutad(2) & "." & stmutad(1) & "." & stmutad(0)
END FUNCTION
Standard Abfragen_CSV Eintragen Basic Über...|Schaltfläche TEST (Control)    
Standard Abfragen_CSV Pfad_Einlesen   Basic 8g - BZStOnline|DateiPfadSuche (Control) 28
SUB Pfad_Einlesen( oEvent AS OBJECT) 'Aktion der Dateiauswahl bei Text verändert
REM LibreOffice-Dialoge zum Öffnen/Speichern verwenden:
REm Extras - Optionen - Allgemein
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
DIM oFeld2 AS OBJECT
DIM oFeld3 AS OBJECT
DIM stUrl AS STRING
DIM xsDatei AS STRING
oFeld = oEvent.Source.Model
'xray oFeld
oForm = oFeld.Parent
oFeld2 = oForm.getByName( "Beschriftungsfeld_Datei") ' unsichtbar geschaltet
IF oFeld.Text <> "" THEN
stUrl = ConvertToUrl(oFeld.Text)
oFeld2.Label= stUrl
END IF

REM langen Dateipfad abtrennen für die Anzeige im sichtbaren Beschriftungsfeld
xsDatei = stUrl
xsDatei_n = InStr(stUrl,"/")
while xsDatei_n <>0
xsDatei = Right(xsDatei,Len(xsDatei)-xsDatei_n)
xsDatei_n = InStr(xsDatei,"/")
wend
oFeld3 = oForm.getByName( "Beschriftungsfeld_nurDatei")
oFeld3.Label = xsDatei
END SUB
Standard Aktualisierung ExportPfad   Basic 7a - MitgliederBriefe|Beschriftungsfeld_PfadDateiName (Control)
7b - Mailmerge|Beschriftungsfeld_PfadDateiName (Control)
8g - BZStOnline|DateiPfadSuche (Control)
8g - BZStOnline|Beschriftungsfeld_PfadDateiName (Control)
9d - InteressentenBriefe|Beschriftungsfeld_PfadDateiName (Control)
50
SUB ExportPfad (oEvent AS OBJECT) 
'kann auch für sich aufgerufen werden
' mit EINEM Wort unter Zusatzinformationen
DIM oDoc AS OBJECT
DIM oDB AS OBJECT
DIM oFeld AS OBJECT
oDoc = thisComponent
oDB = ThisComponent.Parent
stDBDir = Left(oDB.Location,Len(oDB.Location)-Len(oDB.Title))
oDrawpage = oDoc.Drawpage
stZusatz = oEvent.Source.Model.Tag
Select Case stZusatz
Case "Email"
stPrintDir = stDBDir & "MailMerge/"
xstPrintDir = Mid(stPrintDir,9)
oForm = oDrawpage.Forms.getByName("Formular_Pfad")
oFeld1 = oForm.getByName("Beschriftungsfeld_PfadDateiName")
oFeld1.Label = " Exportpfad: " & xstPrintDir
' Case "Briefe"
' stPrintDir = stDBDir & "Briefe_aus_DB/" 'Wird aus der Tabelle genommen!
' xstPrintDir = Mid(stPrintDir,9)
' oForm = oDrawpage.Forms.getByName("Formular_Pfad")
' oFeld1 = oForm.getByName("Beschriftungsfeld_PfadDateiName")
' oFeld1.Label = " Exportpfad: " & xstPrintDir
Case "BZSt_Export" 'wird verwendet in 8b - SteuerVerwaltung
stPrintDir = stDBDir & "BZSt_Export/"
xstPrintDir = Mid(stPrintDir,9)
oForm = oDrawpage.Forms.getByName("Formular_Pfad")
oFeld1 = oForm.getByName("Beschriftungsfeld_PfadDateiName")
oFeld1.Label = " Exportpfad: " & xstPrintDir
Case "BZSt_Import" 'wird verwendet in 8b - SteuerVerwaltung Maustaste gedrückt
stPrintDir = stDBDir & "BZSt_Import/"
xstPrintDir = Mid(stPrintDir,9)
oForm2 = oDrawpage.Forms.getByName("Formular_ImportDatei")
oFeld2 = oForm2.getByName("DateiPfadSuche")
oFeld2.Text = xstPrintDir
Case "SEPA"
stPrintDir = stDBDir & "SEPAXML/"
xstPrintDir = Mid(stPrintDir,9)
oForm = oDrawpage.Forms.getByName("Formular_Pfad")
oFeld1 = oForm.getByName("Beschriftungsfeld_PfadDateiName")
oFeld1.Label = " Exportpfad: " & xstPrintDir
Case Else 'nur Datenbankpfad - falls genauer Pfad aus eienr Formular-Tabelle genommen wird
stPrintDir = stDBDir
xstPrintDir = Mid(stPrintDir,9)
oForm = oDrawpage.Forms.getByName("Formular_Pfad")
oFeld1 = oForm.getByName("Beschriftungsfeld_PfadDateiName")
oFeld1.Label = " Datenbankpfad: " & xstPrintDir
End Select
END SUB
Standard Aktualisierung Filter_I_Aktualisieren   Basic 9a - Interessenten|SchaltflächeUpdate (Control)
9c - InteressentenStromGas|SchaltflächeUpdate (Control)
27
SUB Filter_I_Aktualisieren
Dim oDoc As Object
Dim oDrawpage As Object
Dim oneuInt As Object
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oneuInt=oDrawpage.forms.getByName( "Formular_Interessenten" )
oCol=oneuInt.Columns
oInteressent=oCol.getByName( "ID" )
oINummer=oInteressent.Value
' msgbox oINummer

REM die ID wird jetzt in die Tabelle Filter_I eingetragen
DIM oConnection AS OBJECT
DIM oSQL_Statement AS OBJECT ' das Objekt, das den SQL-Befehl ausführt
DIM stSql AS STRING ' Text des eigentlichen SQL-Befehls
DIM oResult AS OBJECT ' Ergebnis für executeQuery

oForm = oDrawpage.forms.getByName( "Formular_Filter") 'egal welches Formular
oConnection = oForm.activeConnection()
oSQL_Statement = oConnection.createStatement()

stSql = "UPDATE ""Filter_I"" SET ""Integer"" ='" + oINummer + "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)

oForm.reload()
END SUB
Standard Aktualisierung Filter_M_Aktualisieren   Basic 1 - Mitglieder|SchaltflächeUpdate (Control)
6 - MitgliederStromGas|SchaltflächeUpdate_Filter (Control)
27
SUB Filter_M_Aktualisieren
REM aus dem Formular_Mitglieder in die Tabelle Filter_M, dann Formular_Filter aktualisieren
Dim oDoc As Object
Dim oDrawpage As Object
Dim oneuMit As Object
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oneuMit=oDrawpage.forms.getByName( "Formular_Mitglieder" )
oCol=oneuMit.Columns
oMitgl=oCol.getByName( "Mitgliedsnummer" )
oMNummer=oMitgl.Value

REM diese Mitgliedsnummer wird jetzt in die Tabelle Filter_M eingetragen
DIM oConnection AS OBJECT
DIM oSQL_Statement AS OBJECT ' das Objekt, das den SQL-Befehl ausführt
DIM stSql AS STRING ' Text des eigentlichen SQL-Befehls
DIM oResult AS OBJECT ' Ergebnis für executeQuery

oForm = oDrawpage.forms.getByName( "Formular_Filter") 'egal welches Formular
oConnection = oForm.activeConnection()
oSQL_Statement = oConnection.createStatement()

stSql = "UPDATE ""Filter_M"" SET ""Integer"" ='" + oMNummer + "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)
wait 100
oForm.reload()
END SUB
Standard Aktualisierung Form_aktualisieren   Basic   21
SUB Form_aktualisieren(oEvent AS OBJECT)
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oSubForm AS OBJECT
DIM oFeld AS OBJECT
oDoc = thisComponent
oDrawpage = oDoc.drawpage
'xray oEvent
FeldName = oEvent.Source.Model.Name
FormName = oEvent.Source.Model.getParent.Name
' msgbox FeldName & " in " & FormName
oForm = oDrawpage.forms.getByName(FormName)
'xray oForm
oFeld = oForm.getByName(FeldName)
'xray oFeld
' oFeld.commit()
' oFeld.refresh()
'oUeberForm =
'xray oForm.Parent '.reload()
END SUB
Standard Aktualisierung Form_Filter_aktualisieren   Basic 1 - Mitglieder|SchaltflächeUpdate (Control)
7a - MitgliederBriefe|Schaltfläche_Einzeldruck (Control)
8d - DividendenZentrale|Schaltfläche_Einzeldruck (Control)
8e - SteuerDaten|Formular_StDaten|Schaltfläche_Einzeldruck (Control)
8i - Ueberweisungen|Schaltfläche_Einzeldruck (Control)
8j - IBAN|Formular_BankDaten1|Schaltfläche_Einzeldruck (Control)
9d - InteressentenBriefe|Schaltfläche_Einzeldruck (Control)
13
SUB Form_Filter_aktualisieren
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Formular_Filter")
oFeld = oForm.getByName("Listenfeld_Filter")
oFeld.commit()
oFeld.refresh()
oForm.reload()
END SUB
Standard Aktualisierung Form_Interessenten_aktualisieren   Basic 9c - InteressentenStromGas|SchaltflächeUpdate_I (Control) 10
SUB Form_Interessenten_aktualisieren
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Formular_Interessenten")
oForm.reload()
END SUB
Standard Aktualisierung Form_Mitglieder_aktualisieren   Basic 1 - Mitglieder|Schaltfläche START (Control)
6 - MitgliederStromGas|SchaltflächeUpdate_M (Control)
10
SUB Form_Mitglieder_aktualisieren
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Formular_Mitglieder")
oForm.reload()
END SUB
Standard Aktualisierung neueBank_aktualisieren   Basic 3 - MitgliederBankdaten|Tabellen-Steuerelement Bankeneu (Control) 22
SUB neueBank_aktualisieren
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oSubForm AS OBJECT
DIM oFeld AS OBJECT
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Formular_Filter")
oSubForm = oForm.getByName("Formular_Personen")
oSubSubForm = oSubForm.getByName("Formular_Bankdaten")
oFeld1 = oSubSubForm.getByName("Listenfeld_Banken")
oFeld1.commit()
oFeld1.refresh()
oFeld2 = oSubSubForm.getByName("Listenfeld_BIC")
oFeld2.commit()
oFeld2.refresh()
oFeld3 = oSubSubForm.getByName("Listenfeld_BLZ")
oFeld3.commit()
oFeld3.refresh()
oSubForm.reload()
END SUB
Standard Aktualisierung neueDomain_aktualisieren   Basic   16
SUB neueDomain_aktualisieren
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oSubForm AS OBJECT
DIM oFeld AS OBJECT
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Formular_Filter")
oSubForm = oForm.getByName("Formular_Personen")
oSubSubForm = oSubForm.getByName("Formular_Kontakte")
oFeld = oSubSubForm.getByName("Listenfeld_Domain1")
oFeld.commit()
oFeld.refresh()
oSubForm.reload()
END SUB
Standard Aktualisierung neuenStromGasStatus_aktualisieren   Basic   17
SUB neuenStromGasStatus_aktualisieren
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oSubForm AS OBJECT
DIM oFeld AS OBJECT
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Formular_Filter")
oSubForm = oForm.getByName("Formular_Personen")
oSubSubForm = oSubForm.getByName("Formular_StromGas")
oSubSubSubForm = oSubForm.getByName("Formular_Status")
oFeld = oSubSubSubForm.getByName("Listenfeld_StromStatus")
oFeld.commit()
oFeld.refresh()
oSubForm.reload()
END SUB
Standard Aktualisierung neuePLZ_aktualisieren   Basic   16
SUB neuePLZ_aktualisieren
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oSubForm AS OBJECT
DIM oFeld AS OBJECT
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Formular_Filter")
oSubForm = oForm.getByName("Formular_Personen")
oSubSubForm = oSubForm.getByName("Formular_Adressen")
oFeld = oSubSubForm.getByName("Listenfeld_PLZ")
oFeld.commit()
oFeld.refresh()
oSubForm.reload()
END SUB
Standard Aktualisierung neuerOrt_aktualisieren   Basic   16
SUB neuerOrt_aktualisieren
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oSubForm AS OBJECT
DIM oFeld AS OBJECT
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Formular_Filter")
oSubForm = oForm.getByName("Formular_Personen")
oSubSubForm = oSubForm.getByName("Formular_Adressen")
oFeld = oSubSubForm.getByName("Listenfeld_Orte")
oFeld.commit()
oFeld.refresh()
oSubForm.reload()
END SUB
Standard Aktualisierung neueStr_aktualisieren   Basic   16
SUB neueStr_aktualisieren
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oSubForm AS OBJECT
DIM oFeld AS OBJECT
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Formular_Filter")
oSubForm = oForm.getByName("Formular_Personen")
oSubSubForm = oSubForm.getByName("Formular_Adressen")
oFeld = oSubSubForm.getByName("Listenfeld_Strassen")
oFeld.commit()
oFeld.refresh()
oSubForm.reload()
END SUB
Standard Aktualisierung neueVorwahlen_aktualisieren   Basic   19
SUB neueVorwahlen_aktualisieren
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oSubForm AS OBJECT
DIM oFeld AS OBJECT
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Formular_Filter")
oSubForm = oForm.getByName("Formular_Personen")
oSubSubForm = oSubForm.getByName("Formular_Kontakte")
oFeld1 = oSubSubForm.getByName("Listenfeld_Vorwahlen1")
oFeld1.commit()
oFeld1.refresh()
oFeld2 = oSubSubForm.getByName("Listenfeld_Vorwahlen2")
oFeld2.commit()
oFeld2.refresh()
oSubForm.reload()
END SUB
Standard Aktualisierung Ordneranzeigen   Basic 7a - MitgliederBriefe|Schaltfläche Ordner (Control)
7b - Mailmerge|Schaltfläche Ordner (Control)
8g - BZStOnline|Schaltfläche Ordner (Control)
8i - Ueberweisungen|Schaltfläche Ordner (Control)
9d - InteressentenBriefe|Schaltfläche Ordner (Control)
10
SUB Ordneranzeigen  (oEvent AS OBJECT)
DIM oDoc AS OBJECT
DIM oDB AS OBJECT
DIM oFeld AS OBJECT
stZusatz = oEvent.Source.Model.Tag
oDoc = thisComponent
oDB = ThisComponent.Parent
stDBDir = Left(oDB.Location,Len(oDB.Location)-Len(oDB.Title))
shell("explorer.exe",1,stDBDir & stZusatz)
END SUB
Standard Aktualisierung Raten_Projekt_Eintragen   Basic 4 - MitgliedsAnteile|Projektdatum_anlegen (Control)
4 - MitgliedsAnteile|Ratendatum_anlegen (Control)
64
REM TagEintrag und initiale Vorgangsnummer für ein neues Ratenkonto (Sollstellung)
REM bzw. Projektkonto (Vertragsdaten) aus der Tabelle Anteile übertragen.
REM Freigabe der Schaltflächen mit SUB VorgangID_lesen
SUB Raten_Projekt_Eintragen (oEvent AS OBJECT)
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oSubForm AS OBJECT
DIM oSubSubForm AS OBJECT
DIM oFeld AS OBJECT
DIM oZ AS OBJECT
DIM SHZeile AS LONG
stZusatz = oEvent.Source.Model.Tag 'Raten oder Projekt
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Formular_Filter")
oSubForm = oForm.getByName("Formular_Personen")
oSubSubForm = oSubForm.getByName("Formular_Konto")
oFeld = oSubSubForm.getByName("Tabellen_Steuerelement")
oDatenquelle = ThisComponent.Parent.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oVerbindung = oDatenquelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement()
'xray oFeld
wait 100
oZ=oFeld.getRowSet()
wait 100
SHZeile = oZ.Row
' msgbox ("Übernehme Zeile " & SHZeile & " der MitgliederAnteile",64,"Raten")
'xray oZ
oSpalteM=oFeld.getByName("NumF_Mitgl") ' enthält die Mitgliedsnummer
oSpalteD1 = oFeld.getByName("DateField1")
oSpalteD1.HelpText = "Eintrag immer notwendig!"
oSpalteID=oFeld.getByName("NumF_VID") ' enthält die Vorgangs-ID
stMNr = oSpalteM.CurrentValue
TagEintrag = oSpalteD1.CurrentValue
f_dat = TagEintrag.Year & "-" & TagEintrag.Month & "-" & TagEintrag.Day ' DateValue("2017-09-03")
VID = oSpalteID.CurrentValue
'msgbox MNr & ": VID=" & VID & " Tag=" & TagEintrag.Day() & "." & TagEintrag.Month() & "." & TagEintrag.Year()
if VID = 12 THEN
sttitel = "Neuanlage eines Ratenkontos: " & TagEintrag.Day & "." & TagEintrag.Month & "." & TagEintrag.Year
janein = msgbox ("Soll für Mitgliedsnummer " & stMNr & " ein Ratenkontoeintrag ""Sollstellung"" erzeugt werden?",256+32+4,sttitel)
if janein = 6 then
stSql = "INSERT INTO ""Raten"" (""Mitgliedsnummer"",""VorgangID"",""TagZahlung"")"
stSql = stSql & " VALUES('" + stMNr + "','2','" + f_dat + "')"
'msgbox stSql
oResult = oSQL_Anweisung.executeQuery(stSql)
oForm.reload()
end if
end if
if VID = 50 THEN
sttitel = "Neuanlage eines Projektkontos: " & TagEintrag.Day & "." & TagEintrag.Month & "." & TagEintrag.Year
janein = msgbox ("Soll für Mitgliedsnummer " & stMNr & " ein Projektkontoeintrag ""Vertragsdaten"" erzeugt werden?",256+32+4,sttitel)
if janein = 6 then
stSql = "INSERT INTO ""ProjektDaten"" (""Mitgliedsnummer"",""VorgangID"",""TagEintrag"")"
stSql = stSql & " VALUES('" + stMNr + "','1','" + f_dat + "')"
'msgbox stSql
oResult = oSQL_Anweisung.executeQuery(stSql)
oForm.reload()
end if
end if
END SUB
Standard Aktualisierung SortierungUmschalten   Basic 1 - Mitglieder|Schaltfläche_Sortierung (Control)
9a - Interessenten|Schaltfläche_Sortierung (Control)
31
SUB SortierungUmschalten(oEvent AS OBJECT)
DIM stTag AS STRING
stTag() = oEvent.Source.Model.Tag 'array mit Zusatzinformation = M oder I

Dim oDoc As Object
Dim oDrawpage As Object
Dim oneuMit As Object
oDoc = thisComponent
oDrawpage = oDoc.drawpage

IF stTag(0) = "M" THEN
oneuMit=oDrawpage.forms.getByName( "Formular_Mitglieder" )
ELSE
oneuMit=oDrawpage.forms.getByName( "Formular_Interessenten" )
ENDIF

IF stTag(0) = "M" THEN
IF oneuMit.Order = "Mitgliedsnummer ASC" THEN
oneuMit.Order = "Organisation ASC, Nachname ASC"
ELSE
oneuMit.Order = "Mitgliedsnummer ASC"
ENDIF
ELSE
IF oneuMit.Order = "ID ASC" THEN
oneuMit.Order = "Nachname ASC"
ELSE
oneuMit.Order = "ID ASC"
ENDIF
ENDIF
oneuMit.reload()
END SUB
Standard Aktualisierung SortierungUmschalten_   Basic   15
SUB SortierungUmschalten_
Dim oDoc As Object
Dim oDrawpage As Object
Dim oneuMit As Object
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oneuMit=oDrawpage.forms.getByName( "Formular_Mitglieder" )
' msgbox oneuMit.Order
IF oneuMit.Order = "Mitgliedsnummer ASC" THEN
oneuMit.Order = "Nachname ASC"
ELSE
oneuMit.Order = "Mitgliedsnummer ASC"
ENDIF
oneuMit.reload()
END SUB
Standard Aktualisierung Suchfilter_aktualisieren   Basic 1 - Mitglieder|Tabellen-Steuerelement 1 (Control)
1 - Mitglieder|Listenfeld_Filter (Control)
2 - MitgliederAdressen|Listenfeld_Filter (Control)
3 - MitgliederBankdaten|Listenfeld_Filter (Control)
4 - MitgliedsAnteile|Listenfeld_Filter (Control)
5a - RatenKonten|Listenfeld_Filter (Control)
5b - ProjektKonten|Listenfeld_Filter (Control)
5c - DividendenKonten|Listenfeld_Filter (Control)
6 - MitgliederStromGas|Listenfeld_Filter (Control)
7a - MitgliederBriefe|Listenfeld_Filter (Control)
8d - DividendenZentrale|Listenfeld_Filter (Control)
8e - SteuerDaten|Listenfeld_Filter (Control)
8i - Ueberweisungen|Listenfeld_Filter (Control)
8j - IBAN|Listenfeld_Filter (Control)
9a - Interessenten|Listenfeld_Filter (Control)
9a - Interessenten|Tabellen-Steuerelement 1 (Control)
9b - InteressentenAdressen|Listenfeld_Filter (Control)
9c - InteressentenStromGas|Listenfeld_Filter (Control)
9d - InteressentenBriefe|Listenfeld_Filter (Control)
15
SUB Suchfilter_aktualisieren
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oSubForm AS OBJECT
DIM oFeld AS OBJECT
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Formular_Filter")
oSubForm = oForm.getByName("Formular_Personen")
oFeld = oForm.getByName("Listenfeld_Filter")
oFeld.commit()
oFeld.refresh()
oSubForm.reload()
END SUB
Standard Aktualisierung vonbis_aktualisieren   Basic   68
SUB vonbis_aktualisieren 'wird im Modul Serienbrief wiederholt
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oSubForm AS OBJECT
DIM oFeld AS OBJECT
DIM minwert AS INTEGER
DIM letzter AS INTEGER
DIM oColumns AS OBJECT
DIM oConnection AS OBJECT
DIM oSQL_Statement AS OBJECT ' das Objekt, das den SQL-Befehl ausführt
DIM stSql AS STRING ' Text des eigentlichen SQL-Befehls
DIM oResult AS OBJECT ' Ergebnis für executeQuery

oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Formular_Serie")

oConnection = oForm.activeConnection()
oSQL_Statement = oConnection.createStatement()
stSql = "SELECT MAX(""Mitgliedsnummer"") AS ""MAXIMIT"" FROM ""Mitglieder"""
oResult = oSQL_Statement.executeQuery(stSql)
oColumns = oResult.columns()
'Xray oResult
IF oColumns.hasByName("MAXIMIT") THEN inIndex = oColumns.findColumn("MAXIMIT")
oresult.next
letzter=oResult.getInt(1)
'msgbox letzter

oFeld = oForm.getByName("Num_von")
'Xray(oFeld)
minwert=oFeld.value
IF minwert > letzter THEN
msgbox(letzter & " ist die höchste Mitgliedsnummer!",32,"Nööö!")
minwert=1
oFeld.value=minwert
ENDIF
oFeld.commit()

oFeld = oForm.getByName("Num_bis")
maxwert=oFeld.value
IF maxwert > letzter THEN
msgbox(letzter & " ist die höchste Mitgliedsnummer!",32,"Nööö!")
maxwert=letzter
ENDIF
IF maxwert < minwert THEN
msgbox("bis kann nicht kleiner sein als von!",32,"Nööö!")
maxwert=minwert
ENDIF
oFeld.value=maxwert
oFeld.commit()

oFeld = oForm.getByName("Num_aktuell")
oFeld.Value=minwert
oFeld.commit()

oConnection = oForm.activeConnection()
oSQL_Statement = oConnection.createStatement()


stSql = "UPDATE ""von_bis"" SET ""von"" ='" + minwert + "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)
stSql = "UPDATE ""von_bis"" SET ""bis"" ='" + maxwert + "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)
stSql = "UPDATE ""von_bis"" SET ""aktuell"" ='" + minwert + "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)

END SUB
Standard Aktualisierung VorgangID_lesen   Basic 4 - MitgliedsAnteile|Formular_Personen|Formular_Konto|Tabellen_Steuerelement (Control)
4 - MitgliedsAnteile|Listenfeld_Filter (Control)
5c - DividendenKonten|Formular_Personen|Formular_Konto|Tabellen_Steuerelement (Control)
5c - DividendenKonten|Listenfeld_Filter (Control)
175
SUB VorgangID_lesen(oEvent AS OBJECT)
DIM stTag AS STRING
stTag = oEvent.Source.Model.Tag 'Tag wird unter den Zusatzinformationen eingegeben
' 'Anteile, Raten, Dividenden, Projekte
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oForm2 AS OBJECT
DIM oSubForm AS OBJECT
DIM oSubSubForm AS OBJECT
DIM oFeld AS OBJECT
DIM oButton12 AS OBJECT
DIM oButton50 AS OBJECT
DIM oSpalte AS OBJECT

oDatenquelle = ThisComponent.Parent.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oVerbindung = oDatenquelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement()

oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Formular_Filter")
oSubForm = oForm.getByName("Formular_Personen")
oSubSubForm = oSubForm.getByName("Formular_Konto")
oFeld = oSubSubForm.getByName("Tabellen_Steuerelement")
oSpalte=oFeld.getByName("NumF_VID") ' enthält die Vorgangs-ID
REM Hier könnten Aktionen in Anhängigkeit von der Vorgans-ID gestartet werden,
REM z.B. "Untermenüs" aufgerufen werden.
oForm2 = oDrawpage.forms.getByName("Formular_Ueber") 'enthält die Buttons

IF stTag = "Anteile" THEN

oSpalteD1=oFeld.getByName("DateField1")
oSpalteD1.Enabled = TRUE
oSpalteD2=oFeld.getByName("DateField2")
oSpalteD2.Enabled = TRUE
oSpalteApm=oFeld.getByName("NumF_Aplusminus")
oSpalteApm.Enabled = TRUE
oSpalteASaldo=oFeld.getByName("NumF_AntSaldo")
oSpalteASaldo.Enabled = TRUE

oButton12 = oForm2.getByName("zumRatenkonto")
oButton120 = oForm2.getByName("Ratendatum_anlegen")
oButton20 = oForm2.getByName("zumDividendenkonto")
oButton50 = oForm2.getByName("zumProjektekonto")
oButton500 = oForm2.getByName("Projektdatum_anlegen")
oButton12.EnableVisible = FALSE
oButton120.EnableVisible = FALSE
oButton20.EnableVisible = FALSE
oButton50.EnableVisible = FALSE
oButton500.EnableVisible = FALSE
SELECT CASE oSpalte.CurrentValue
CASE 12
oButton12.EnableVisible = TRUE
oButton120.EnableVisible = TRUE
oSpalteApm.Enabled = FALSE
oSpalteASaldo.Enabled = FALSE
' oSpalteD1 neuer Wert => Eintrag in Tabelle Raten
CASE 20
oSpalteD1.Enabled = FALSE
oSpalteD2.Enabled = FALSE
oSpalteApm.Enabled = FALSE
oSpalteASaldo.Enabled = FALSE
oButton20.EnableVisible = TRUE
CASE 50
oSpalteApm.Enabled = FALSE
oSpalteASaldo.Enabled = FALSE
oButton50.EnableVisible = TRUE
oButton500.EnableVisible = TRUE
CASE ELSE
'
END SELECT
END IF

IF stTag = "Dividenden" THEN
' msgbox klaut den Focus, sodass nichts eingetragen werden kann!
' IF oSpalte.CurrentValue=2 THEN msgbox "Das ist Vorgangs-ID 2"
oSpalte=oFeld.getByName("NumF_VID") ' enthält die Vorgangs-ID

oSpalteD1=oFeld.getByName("DateField1")
oSpalteD1.Enabled = FALSE
oSpalteD2=oFeld.getByName("DateField2")
oSpalteD2.Enabled = FALSE
oSpalteKap=oFeld.getByName("NumF_KapErtrag")
oSpalteKap.Enabled = FALSE
oSpalteKESt=oFeld.getByName("NumF_KapESt")
oSpalteKESt.Enabled = FALSE
oSpalteSoli=oFeld.getByName("NumF_Soli")
oSpalteSoli.Enabled = FALSE
oSpalteKiSt=oFeld.getByName("NumF_KiSt")
oSpalteKiSt.Enabled = FALSE
oSpalteAusz=oFeld.getByName("NumF_Ausz")
oSpalteAusz.Enabled = FALSE
oSpalteFSA=oFeld.getByName("NumF_Pausch")
oSpalteFSA.Enabled = FALSE

oButton2 = oForm2.getByName("zumProjektekonto")
oButton2.EnableVisible = FALSE
oButton3 = oForm2.getByName("Steuerdaten_uebernehmen")
oButton3.EnableVisible = FALSE

IF oSpalte.CurrentValue=2 THEN 'Ausschuettung nach GV
' alle Spalten werden von Dividenden-Historie gefüllt!
oButton2.EnableVisible = TRUE
END IF

IF oSpalte.CurrentValue=3 THEN 'FSA
oSpalteD1=oFeld.getByName("DateField1")
oSpalteD1.Enabled = TRUE
oSpalteD2=oFeld.getByName("DateField2")
oSpalteD2.Enabled = TRUE
oSpalteFSA=oFeld.getByName("NumF_Pausch")
oSpalteFSA.Enabled = TRUE

oButton3.EnableVisible = TRUE
' oInfo.EnableVisible = TRUE
END IF
IF oSpalte.CurrentValue=4 THEN 'NV
oSpalteD1=oFeld.getByName("DateField1")
oSpalteD1.Enabled = TRUE
oSpalteD2=oFeld.getByName("DateField2")
oSpalteD2.Enabled = TRUE

oButton3.EnableVisible = TRUE
' oInfo.EnableVisible = TRUE
END IF

' oMitgliedFeld = oFeld.getByName("NumF_Mitgl")
' oKapErtragFeld = oFeld.getByName("NumF_KapErtrag")
' oKapEStFeld = oFeld.getByName("NumF_KapESt")
' oSoliFeld = oFeld.getByName("NumF_Soli")
' oPauschFeld = oFeld.getByName("NumF_Pausch")
' oKiStFeld = oFeld.getByName("NumF_KiSt")
' oAuszFeld = oFeld.getByName("NumF_Ausz")

' stSql = " SELECT ""Wert"" FROM ""Fixwerte"" WHERE ""ID"" = 10 " ' ggf. Variable für zukünftige Jahre verwenden (WHERE Art=...)
' oAbfrageergebnis = oSQL_Anweisung.executeQuery(stSql)' Ergebnis auswerten
' oAbfrageergebnis.next
' KapEStAProz = oAbfrageergebnis.getFloat(1)

' stSql = " SELECT ""Wert"" FROM ""Fixwerte"" WHERE ""ID"" = 11 " ' ggf. Variable für zukünftige Jahre verwenden (WHERE Art=...)
' oAbfrageergebnis = oSQL_Anweisung.executeQuery(stSql)' Ergebnis auswerten
' oAbfrageergebnis.next
' SoliProz = oAbfrageergebnis.getFloat(1)

' stSql = " SELECT ""KiStproz"" FROM ""SteuerDaten"" WHERE ""Mitgliedsnummer"" = " & oMitgliedFeld.Value
' oAbfrageergebnis = oSQL_Anweisung.executeQuery(stSql)' Ergebnis auswerten
' oAbfrageergebnis.next
' KiStProz = oAbfrageergebnis.getFloat(1)

' stSql = " SELECT ""Ausschuettung"" FROM ""Anteile"" WHERE ""Mitgliedsnummer"" = " & oMitgliedFeld.Value & " AND ""VorgangID"" = 20 "
' oAbfrageergebnis = oSQL_Anweisung.executeQuery(stSql)' Ergebnis auswerten
' oAbfrageergebnis.next
' oKapertragFeld.Value = oAbfrageergebnis.getFloat(1)

' oKapEStFeld.Value = (oKapErtragFeld.Value - oPauschFeld.Value) * 0.25
' oKapEStFeld.Value = (oKapErtragFeld.Value - oPauschFeld.Value) * KapEStAProz * 0.01

' oSoliFeld.Value = oKapEStFeld.Value * 0.055
' oSoliFeld.Value = oKapEStFeld.Value * SoliProz * 0.01
' oKiStFeld.Value = (oKapErtragFeld.Value - oPauschFeld.Value) * 0.09
' oKiStFeld.Value = (oKapErtragFeld.Value - oPauschFeld.Value) * KiStProz * 0.01
' oAuszFeld.Value = oKapErtragFeld.Value - oKapEStFeld.Value - oSoliFeld.Value - oKiStFeld.Value

' oKapErtragFeld.commit()
' oKapEStFeld.commit()
' oSoliFeld.commit()
' oKiStFeld.commit()
' oAuszFeld.commit()

END IF
END SUB
Standard Berichte Calc2CSV_exists   Basic   7
REM folgende Function wird nicht mehr benutzt!
Function Calc2CSV_exists as Boolean 'Sucht die Datei CalcCSV.xba
Calc2CSV_exists = FALSE
If Getguitype = 1 Then sFichierModule = GetRepertoirePath("user")&"\basic\Standard\Calc2CSV.xba" Else sFichierModule = GetRepertoirePath("user")&"/basic/Standard/Calc2CSV.xba"
If Fileexists(sFichierModule) Then Calc2CSV_exists = TRUE
if Calc2CSV_exists Then msgbox ("Jaaaaaaaa!") Else msgbox ("nö")
End Function
Standard Berichte Dateiauswahl   Basic   17
SUB Dateiauswahl  'im Formular "Mailmerge Einrichtung"
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld1 AS OBJECT
DIM oFeld2 AS OBJECT
DIM oPfad AS STRING
oDoc = thisComponent
oDrawpage = oDoc.Drawpage
oForm = oDrawpage.Forms.getByName("Formular")
oFeld1 = oForm.getByName("Dateiauswahl")
oPfad = oFeld1.Text
Schreibe_MM_configTXT( oPfad)
oFeld2 = oForm.getByName("MailmergePfad")
oFeld2.Label = oPfad
' msgbox oPfad
END SUB
Standard Berichte Filtern_und_Drucken   Basic 2 - MitgliederAdressen|Formular_Personen|Schaltfläche_Brief_M (Control)
4 - MitgliedsAnteile|Schaltfläche_BriefAnteileKonto (Control)
4 - MitgliedsAnteile|Schaltfläche_Brief_Aufstockung (Control)
4 - MitgliedsAnteile|Schaltfläche_BriefRaten (Control)
4 - MitgliedsAnteile|Schaltfläche_BriefZahlung (Control)
4 - MitgliedsAnteile|Schaltfläche_BriefRechnung (Control)
6 - MitgliederStromGas|Formular_Personen|Formular_Kontakte|Schaltfläche_Brief_Strom (Control)
6 - MitgliederStromGas|Formular_Personen|Formular_Kontakte|Schaltfläche_Brief_Anschrift (Control)
9b - InteressentenAdressen|Schaltfläche_Brief_I (Control)
9c - InteressentenStromGas|Formular_Personen|Formular_Kontakte|Schaltfläche_Brief_Strom (Control)
9c - InteressentenStromGas|Formular_Personen|Formular_Kontakte|Schaltfläche_Brief_Anschrift (Control)
37
SUB Filtern_und_Drucken(oEvent AS OBJECT)
DIM stTag AS STRING
stTag = oEvent.Source.Model.Tag 'Zusatzinformationen:
aInfos() = Split(stTag, ",") 'Hier steht zuerst M oder I, dann der genaue Berichtsname

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("Formular_Filter")
oFeld = oForm.getByName("Listenfeld_Filter")
oDatenquelle = ThisComponent.Parent.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF

oVerbindung = oDatenquelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement()
IF aInfos(0) = "M" THEN
stSql = "UPDATE ""Filter_M"" SET ""Integer"" = '"+oFeld.GetCurrentValue()+"' WHERE ""ID"" = 0"
oSQL_Anweisung.executeUpdate(stSql)
END IF
IF aInfos(0) ="I" THEN
stSql = "UPDATE ""Filter_I"" SET ""Integer"" = '"+oFeld.GetCurrentValue()+"' WHERE ""ID"" = 0"
oSQL_Anweisung.executeUpdate(stSql)
END IF

' msgbox aInfo(1)
ThisDatabaseDocument.ReportDocuments.getByName(Trim(aInfos(1))).open

END SUB
Standard Berichte Filtern_und_Mail   Basic 2 - MitgliederAdressen|Email_M (Control)
6 - MitgliederStromGas|Formular_Personen|Formular_Kontakte|Email_Strom (Control)
9b - InteressentenAdressen|Email_I (Control)
9c - InteressentenStromGas|Formular_Personen|Formular_Kontakte|Email_Strom (Control)
94
SUB Filtern_und_Mail(oEvent AS OBJECT)
DIM stTag AS STRING
stTag = oEvent.Source.Model.Tag 'Zusatzinformationen: M (Mitglied) oder I (Interessent)
aInfos() = Split(stTag, ",") 'dann die Email-KODIERUNG
' Beispiel: M,Strom,EMAIL_STROM_FEEDBACK
' Beispiel: I,LEER,LEER

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
DIM oResult AS OBJECT ' Ergebnis für executeQuery

DIM oFeld1a AS OBJECT
DIM oFeld1b AS OBJECT
DIM oFeld1 AS OBJECT
DIM oFeld2 AS OBJECT
DIM oFeld3 AS OBJECT
DIM oFeld4 AS OBJECT
DIM oShell AS OBJECT
DIM stFeld1 AS STRING
DIM stFeld2 AS STRING
DIM stFeld3 AS STRING
DIM stFeld4 AS STRING

oDoc = thisComponent
oDrawpage = oDoc.Drawpage
oForm = oDrawpage.Forms.getByName("Formular_Filter")
oFeld = oForm.getByName("Listenfeld_Filter")

oDatenquelle = ThisComponent.Parent.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oVerbindung = oDatenquelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement()

IF aInfos(0) = "M" THEN
stSql = "UPDATE ""Filter_M"" SET ""Integer"" = '"+oFeld.GetCurrentValue()+"' WHERE ""ID"" = 0"
oSQL_Anweisung.executeUpdate(stSql)
END IF
IF aInfos(0) ="I" THEN
stSql = "UPDATE ""Filter_I"" SET ""Integer"" = '"+oFeld.GetCurrentValue()+"' WHERE ""ID"" = 0"
oSQL_Anweisung.executeUpdate(stSql)
END IF

oSubForm = oForm.getByName("Formular_Personen")
oSubSubForm = oSubForm.getByName("Formular_Kontakte")
oFeld1a = oSubSubForm.getByName("Textfeld_Email1")
oFeld1b = oSubSubForm.getByName("Listenfeld_Domain1")
oNummer = oFeld1b.SelectedItems(000)
soFeld1b = oFeld1b.getItemText(oNummer)
' oFeld2 = oForm.getByName( "E_Mail_Betreff")
' oFeld3 = oForm.getByName( "E_Mail_Inhalt")
stFeld1 = oFeld1a.Text + "@" + soFeld1b
IF stFeld1 = "" THEN
msgbox ("Keine Mailadresse vorhanden." & CHR( 13) & "Das Mailprogramm wird nicht aufgerufen" ,48, "Mail senden")
END IF
' stFeld2 = Mid(ConvertToUrl( oFeld2.Text), 9)
' stFeld3 = Mid(ConvertToUrl( oFeld3.Text), 9)

'IF aInfos(1) ="leer" THEN
' stFeld2 = "BESG: "
' stFeld3 = "Liebe "
'END IF

'=============================

stAuswahl = aInfos(2)
'stSql = "SELECT ""Text"",""Betreff"" FROM ""Texte"" WHERE ""ID"" = 'EMAIL_STROM_FEEDBACK'"
stSql = "SELECT ""Text"",""Betreff"" FROM ""Texte"" WHERE ""ID"" = '" & stAuswahl & "'"

oResult = oSQL_Anweisung.executeQuery(stSql)
oResult.next
stAusgabe1 = oResult.getString(1) 'Inhalt der Mail: hier könnte die Ersetzung der CR,LF durch %0A folgen

stInhalt = Replace(stAusgabe1, Chr(10), "%0A")

stAusgabe2 = oResult.getString(2)

'=============================

IF aInfos(1) ="Strom" THEN
stFeld2 = stAusgabe2 '"BESG-Strom: erstes Feedback"
stFeld3 = stInhalt ' das war stAusgabe1
END IF
oShell = createUnoService( "com.sun.star.system.SystemShellExecute")
oShell.execute( "mailto:" + stFeld1 + "?subject=" + stFeld2 + "&body=" + stFeld3,, 0)
END SUB
Standard Berichte Filtern_und_Mail_BACKUP   Basic   97
SUB Filtern_und_Mail_BACKUP(oEvent AS OBJECT)
DIM stTag AS STRING
stTag = oEvent.Source.Model.Tag 'Zusatzinformationen: M (Mitglied) oder I (Interessent)
aInfos() = Split(stTag, ",") 'Hier steht zuerst M oder I, dann der genaue Berichtsname
' leer, Strom, ...

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
DIM oFeld1a AS OBJECT
DIM oFeld1b AS OBJECT
DIM oFeld1 AS OBJECT
DIM oFeld2 AS OBJECT
DIM oFeld3 AS OBJECT
DIM oFeld4 AS OBJECT
DIM oShell AS OBJECT
DIM stFeld1 AS STRING
DIM stFeld2 AS STRING
DIM stFeld3 AS STRING
DIM stFeld4 AS STRING

oDoc = thisComponent
oDrawpage = oDoc.Drawpage
oForm = oDrawpage.Forms.getByName("Formular_Filter")
oFeld = oForm.getByName("Listenfeld_Filter")
oDatenquelle = ThisComponent.Parent.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oVerbindung = oDatenquelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement()

IF aInfos(0) = "M" THEN
stSql = "UPDATE ""Filter_M"" SET ""Integer"" = '"+oFeld.GetCurrentValue()+"' WHERE ""ID"" = 0"
oSQL_Anweisung.executeUpdate(stSql)
END IF
IF aInfos(0) ="I" THEN
stSql = "UPDATE ""Filter_I"" SET ""Integer"" = '"+oFeld.GetCurrentValue()+"' WHERE ""ID"" = 0"
oSQL_Anweisung.executeUpdate(stSql)
END IF


oSubForm = oForm.getByName("Formular_Personen")
oSubSubForm = oSubForm.getByName("Formular_Kontakte")
oFeld1a = oSubSubForm.getByName("Textfeld_Email1")
oFeld1b = oSubSubForm.getByName("Listenfeld_Domain1")
oNummer = oFeld1b.SelectedItems(000)
soFeld1b = oFeld1b.getItemText(oNummer)
' oFeld2 = oForm.getByName( "E_Mail_Betreff")
' oFeld3 = oForm.getByName( "E_Mail_Inhalt")

stFeld1 = oFeld1a.Text + "@" + soFeld1b
IF stFeld1 = "" THEN
msgbox "Keine Mailadresse vorhanden." & CHR( 13) & "Das Mailprogramm wird nicht aufgerufen" , 48, "Mail senden"
END IF

' stFeld2 = Mid(ConvertToUrl( oFeld2.Text), 9)
' stFeld3 = Mid(ConvertToUrl( oFeld3.Text), 9)

IF aInfos(1) ="leer" THEN
stFeld2 = "BESG: "
stFeld3 = "Liebe "
END IF

IF aInfos(1) ="Strom" THEN
stFeld2 = "BESG-Strom: erstes Feedback"
stFeld3 = "Liebe StromkundInnen der BürgerEnergie Solingen,%0A%0A"
stFeld3 = stFeld3 + "wir freuen uns darüber, dass Sie inzwischen von den Stadtwerken mit unserem BESG-Bürgerstrom beliefert werden!%0A%0A"
stFeld3 = stFeld3 + "Da für uns als Genossenschaft dieses erste, gemeinsam mit den Stadtwerken entwickelte Stromprodukt auch noch neu ist, vermuten wir, dass die Abläufe noch verbesserungsfähig sind. Deshalb bitten wir herzlich um Antwort auf die folgenden Fragen:%0A"
stFeld3 = stFeld3 + "%0A"
stFeld3 = stFeld3 + "- Wie und wo haben Sie von unserm BESG-Bürgerstrom erfahren?%0A"
stFeld3 = stFeld3 + "- Was hat Sie davon überzeugt, den Antrag für den Bezug dieses Stroms zu stellen?%0A"
stFeld3 = stFeld3 + "- Wie zufrieden sind Sie mit dem Ablauf des Wechselverfahrens? Was könnte darin verbessert werden?%0A%0A"
stFeld3 = stFeld3 + "Benötigen Sie Flyer oder zusätzliche Informationen, wenn Sie Ihren Freunden,"
stFeld3 = stFeld3 + "Freundinnen und Bekannten unseren BESG-Bürgerstrom weiterempfehlen möchten?%0A"
stFeld3 = stFeld3 + "%0A"
stFeld3 = stFeld3 + "Falls Sie darüber hinaus weitergehende Anregungen oder Fragen haben: Teilen Sie mir diese bitte auch mit!%0A"
stFeld3 = stFeld3 + "%0A"
stFeld3 = stFeld3 + "Und: Empfehlen Sie uns weiter! Jede weitere Kundin, jeder weitere Kunde trägt zum Erfolg unserer Arbeit als Genossenschaft bei. Besonders würden wir uns natürlich darüber freuen, wenn wir Sie als neues Genossenschaftsmitglied gewinnen könnten!%0A"
stFeld3 = stFeld3 + "Rufen Sie mich gerne an, wenn Sie Fragen zu unserer Arbeit haben (Tel: 0212 2333433) "
stFeld3 = stFeld3 + "- oder schauen Sie auf unsere Internetseite http://bürgerenergie-solingen.de.%0A"
stFeld3 = stFeld3 + "%0A"
stFeld3 = stFeld3 + "%0A"
stFeld3 = stFeld3 + "Mit herzlichem Gruß,%0AIngeborg Friege%0A"
stFeld3 = stFeld3 + "%0A"
stFeld3 = stFeld3 + "%0A"
stFeld3 = stFeld3 + "%0A"
stFeld3 = stFeld3 + "%0A"
END IF
oShell = createUnoService( "com.sun.star.system.SystemShellExecute")
oShell.execute( "mailto:" + stFeld1 + "?subject=" + stFeld2 + "&body=" + stFeld3,, 0)
END SUB
Standard Berichte Filtern_und_Mail_Text   Basic   39
'Daten direkt aus der DB holen:
Sub Filtern_und_Mail_Text(oEvent AS OBJECT)

DIM stTag AS STRING
stTag = oEvent.Source.Model.Tag 'Zusatzinformationen: M (Mitglied) oder I (Interessent)
aInfos() = Split(stTag, ",") 'Hier steht zuerst M oder I, dann der genaue Berichtsname
' leer, Strom, ...
DIM oConnection AS OBJECT
DIM oSQL_Statement AS OBJECT ' das Objekt, das den SQL-Befehl ausführt
DIM stSql AS STRING ' Text des eigentlichen SQL-Befehls
DIM oResult AS OBJECT ' Ergebnis für executeQuery

oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName( "Formular_Ueber") 'egal welches Formular
oConnection = oForm.activeConnection()
oSQL_Statement = oConnection.createStatement()

' Um Daten abzufragen, wird mit dem Befehl die Methode executeQuery aufgerufen und ausgeführt;
' das Ergebnis wird anschließend ausgewertet.
' Tabellennamen und Feldnamen werden üblicherweise in doppelte Anführungszeichen gesetzt.
'Diese müssen im Makro durch weitere doppelte
' Anführungszeichen maskiert werden, damit sie im Befehl erscheinen.
'stSql = "SELECT Text FROM Texte WHERE ""ID"" = ""ENDE"""
'stSql = "SELECT Text FROM Texte WHERE ID=ENDE"
'SELECT "Text", "ID" FROM "Texte" WHERE "ID" = 'ENDE'
stSql = "SELECT ""Text"" FROM ""Texte"" WHERE ""ID"" = 'EMAIL_STROM_FEEDBACK'"

oResult = oSQL_Statement.executeQuery(stSql)
oResult.next
stAusgabe = oResult.getString(1)
' msgbox stAusgabe 'funktioniert!!!

stSql = "SELECT ""Text"" FROM ""Texte"" WHERE ""ID"" = 'ENDE'"
oResult = oSQL_Statement.executeQuery(stSql)
oResult.next
stAusgabe = oResult.getString(1)
'msgbox stAusgabe 'funktioniert!!!
End Sub
Standard Berichte GetRepertoirePath   Basic Calc2CSV_exists (Procedure)
Schreibe_MM_configTXT (Procedure)
Lies_MM_configTXT (Procedure)
8
Function GetRepertoirePath(sInstPath as String) as String
Dim oPathSubstSrv as Object
Dim sPath as String
sInstPath = "$("+sInstPath+")"
oPathSubstSrv = createUnoService("com.sun.star.comp.framework.PathSubstitution")
sPath = ConvertFromUrl(oPathSubstSrv.getSubstituteVariableValue(sInstPath))
GetRepertoirePath = sPath
End Function
Standard Berichte Lib_Erzeugen   Basic   14
REM folgende Sub wird nicht mehr benutzt!   
Sub Lib_Erzeugen ' Testmit einem Hallo-Modul...
Dim oLib as Object
oLib = GlobalScope.BasicLibraries.Standard
' oLib.removeByName("Hallo")
sZeilen="Rem (C) Gisbert Friege"+Chr(13)
sZeilen = sZeilen + "MeinModultext"+Chr(13)
' msgbox sZeilen
If oLib.hasByName("Hallo") Then
oLib.ReplaceByName("Hallo", sZeilen)
Else
oLib.InsertByName("Hallo", sZeilen)
EndIf
End Sub
Standard Berichte Lib_TEST   Basic   10
REM folgende Sub wird nicht mehr benutzt!
Sub Lib_TEST ' sucht das Modul Calc2CSV
Dim oLib as Object
oLib = GlobalScope.BasicLibraries.Standard
If oLib.hasByName("Calc2CSV") Then
msgbox ("Modul Calc2CSV ist vorhanden.")
Else
msgbox ("Modul Calc2CSV muss angelegt werden!")
EndIf
End Sub
Standard Berichte Lies_MM_configTXT   Basic   28
REM folgende Sub wird nicht mehr benutzt!   
Sub Lies_MM_configTXT() ' Wird bei jedem Öffnen des Fromulars "Mailmerge Einrichtung" ausgeführt
REM Schaut nach, ob config/mailmergepfad.txt existiert.
REM Außerdem wird (jedes Mal) das Modul Calc2CSV in
REM Meine Makros Dialoge - Standard neu angelegt!
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld1 AS OBJECT
DIM oFeld2 AS OBJECT
DIM sPfad AS STRING
oDoc = thisComponent
oDrawpage = oDoc.Drawpage
oForm = oDrawpage.Forms.getByName("Formular")
oFeld1 = oForm.getByName("Dateiauswahl")
oFeld2 = oForm.getByName("MailmergePfad")
If Getguitype = 1 Then sFichierModule = GetRepertoirePath("user")&"\config\mailmergepfad.txt" Else sFichierModule = GetRepertoirePath("user")&"/config/mailmergepfad.txt"
If FileExists (sFichierModule) Then
iNumber = Freefile
Open sFichierModule for Input As iNumber
Line Input #iNumber, sPfad
oFeld1.Text = sPfad
oFeld2.Label = sPfad
Else
MsgBox "Datei mailmergepfad.txt fehlt noch! Bitte erst die Mailmerge-csv-Datei auswählen!"
End If
' Modul_Calc2CSV_anlegen
End Sub
Standard Berichte Mailmerge   Basic   8
SUB Mailmerge(oEvent AS OBJECT) 'öffnet den Bericht, 
REM dessen Name als Tag in den Eigenschaften des aufrufenden CommandButton
REM als "Zusatzinformation" eingetragen ist. (Beispiel: Tabelle_EMAIL_Mitglieder)
DIM stTag AS STRING
stTag = oEvent.Source.Model.Tag
' msgbox stTag
ThisDatabaseDocument.ReportDocuments.getByName(stTag).open
END SUB
Standard Berichte Modul_Calc2CSV_anlegen   Basic   70
REM folgende Sub wird nicht mehr benutzt!   
Sub Modul_Calc2CSV_anlegen 'ohne Nachfrage
Dim sParametres, sSrce as String
Dim oLib as Object
Dim oBasLibs as Object
oBasLibs = GlobalScope.BasicLibraries
' Xray(oBasLibs)
If oBasLibs.HasByName("Standard") Then
' oBasLibs.CreateLibrary("Neue")
' On Error Resume next
oLib =oBasLibs.GetByName("Standard")
If oLib.hasByName("Calc2CSV") Then
oLib.removeByName("Calc2CSV")
End If
Wait 500
sSrce = "REM (C) Gisbert Friege www.friege.de" & Chr(13)
sSrce = sSrce & "REM Dieses Modul wird in ""Meine Makros & Dialoge - Standard"" angelegt." & Chr(13)
sSrce = sSrce & "REM In LibreOffice Calc sollte ein Symbol auf der Standard-Symbolleiste angelegt werden," & Chr(13)
sSrce = sSrce & "REM mit dem das hier definierte Makro Mailmerge_csv_speichern gestartet weden kann." & Chr(13) & Chr(13)
sSrce = sSrce & "Sub Mailmerge_csv_speichern" & Chr(13)
sSrce = sSrce & "dim document as object" & Chr(13)
sSrce = sSrce & "dim dispatcher as object" & Chr(13)
sSrce = sSrce & "dim sPfad as string" & Chr(13)
sSrce = sSrce & "dim sFrage as string" & Chr(13)
sSrce = sSrce & "dim vAntwort as Integer" & Chr(13)
sSrce = sSrce & "document = ThisComponent.CurrentController.Frame" & Chr(13)
sSrce = sSrce & "dispatcher = createUnoService(""com.sun.star.frame.DispatchHelper"")" & Chr(13)
sSrce = sSrce & "dim args1(2) as new com.sun.star.beans.PropertyValue" & Chr(13)
sSrce = sSrce & "args1(0).Name = ""URL""" & Chr(13)
sSrce = sSrce & "sPfad = Pfad_MM_config" & Chr(13)
sSrce = sSrce & "sFrage = ""Soll die Tabelle wirklich nach "" + sPfad + "" gespeichert werden?"" + chr(13)" & Chr(13)
sSrce = sSrce & "sFrage = sFrage + ""(Der Pfad kann im Datenbak-Formular Mailmerge Einrichtung angepasst werden!)""" & Chr(13)
sSrce = sSrce & "vAntwort = MsgBox (sFrage,1,""Tabelle als .csv speichern"")" & Chr(13)
sSrce = sSrce & "REM Hier ggf. aussteigen" & Chr(13)
sSrce = sSrce & "if (vAntwort > 1) then GoTo LabelExit" & Chr(13)
sSrce = sSrce & "args1(0).Value = ConvertToURL(sPfad)" & Chr(13)
sSrce = sSrce & "args1(1).Name = ""FilterName""" & Chr(13)
sSrce = sSrce & "args1(1).Value = ""Text - txt - csv (StarCalc)""" & Chr(13)
sSrce = sSrce & "args1(2).Name = ""FilterOptions""" & Chr(13)
sSrce = sSrce & "args1(2).Value = ""9,0,ANSI,1,,0,false,true,true,false""" & Chr(13)
sSrce = sSrce & "dispatcher.executeDispatch(document, "".uno:SaveAs"", """", 0, args1())" & Chr(13)
sSrce = sSrce & "msgbox (""Tabelle erfolgreich gespeichert in "" + sPfad,64,""Tabelle als .csv speichern"")" & Chr(13)
sSrce = sSrce & "LabelExit:" & Chr(13)
sSrce = sSrce & "dispatcher.executeDispatch(document, "".uno:Close"", """", 0, Array())" & Chr(13)
sSrce = sSrce & "End Sub" & Chr(13) & Chr(13)

sSrce = sSrce & "Function GetRepertoirePath(sInstPath as String) as String' sInstPath z.B. ""user""" & Chr(13)
sSrce = sSrce & "Dim oPathSubstSrv as Object" & Chr(13)
sSrce = sSrce & "Dim sPath as String" & Chr(13)
sSrce = sSrce & "sInstPath = ""$(""+sInstPath+"")""" & Chr(13)
sSrce = sSrce & "oPathSubstSrv = createUnoService(""com.sun.star.comp.framework.PathSubstitution"")" & Chr(13)
sSrce = sSrce & "sPath = ConvertFromUrl(oPathSubstSrv.getSubstituteVariableValue(sInstPath))" & Chr(13)
sSrce = sSrce & "GetRepertoirePath = sPath" & Chr(13)
sSrce = sSrce & "End Function" & Chr(13) & Chr(13)

sSrce = sSrce & "Function Pfad_MM_config As String" & Chr(13)
sSrce = sSrce & "If Getguitype = 1 Then sPfadDatei = GetRepertoirePath(""user"") & ""\config\mailmergepfad.txt"" Else sPfadDatei = GetRepertoirePath(""user"") & ""/config/mailmergepfad.txt""" & Chr(13)
sSrce = sSrce & "iNumber = Freefile" & Chr(13)
sSrce = sSrce & "Open sPfadDatei for Input As iNumber" & Chr(13)
sSrce = sSrce & "Line Input #iNumber, sPfad" & Chr(13)
sSrce = sSrce & "Pfad_MM_config = sPfad" & Chr(13)
sSrce = sSrce & "End Function" & Chr(13)

oLib.InsertByName("Calc2CSV",sSrce)
On Error GoTo 0
Else
msgbox("Die Bibliothek Meine_Makros&Dialog.Standard fehlt! Sie muss erst erst in der Verwaltung der MAkro-Bibliotheken angelegt werden!")
End If

End sub
Standard Berichte Replace   Basic   5
Function Replace(Source As String, Search As String, NewPart As String)
Dim Result As String
Result = join(split(Source, Search), NewPart)
Replace = Result
End Function
Standard Berichte Schreibe_MM_configTXT   Basic Dateiauswahl (Procedure) 11
REM folgende Sub wird nicht mehr benutzt!   
Sub Schreibe_MM_configTXT( sPfad as String) rem schreibt die Datei nach user/config
' Dieses Makro wird nach der Auswahl einer anderen Datei im Datenbankformular "Mailmerge Einrichtung" ausgeführt.
' Windows-Beispiel C:\Users\...\AppData\Roaming\LibreOffice\4\user\config
If Getguitype = 1 Then sPfadDatei = GetRepertoirePath("user")&"\config\mailmergepfad.txt" Else sPfadDatei = GetRepertoirePath("user")&"/config/mailmergepfad.txt"
If Fileexists(sPfadDatei) Then Kill sPfadDatei
iNumber = Freefile
Open sPfadDatei For Output As iNumber
Print #iNumber, sPfad
Close #iNumber
End Sub
Standard Dividenden Abfrage_in_XML   Basic 8i - Ueberweisungen|Schaltfläche SEPA (Control) 400
REM "SEPA-Überweisung erstellen" mit funktionierender Schleife.
SUB Abfrage_in_XML(oEvent AS OBJECT)
' Exportiert Daten aus der Datenbank in eine SEPA.XML-Datei, die
' mit dem Formular auf der Sparkassenseite
' Online-Banking => Banking => Dateiübergabe
' zur Sparkasse hochgelden werden kann.
REM Der Name der Abfrage steht in "Zusatzinformationen",

REM Spaltennamen_Variablen in GROSSBUCHSTABEN der Tabelle SEPAXML
REM entsprechen den Variablen-Zeilen der XML-Vorlagen a und b
'
DIM oDatenDatei AS OBJECT
DIM oAbfragen AS OBJECT
DIM oAbf AS OBJECT
DIM oAbfrageergebnis AS OBJECT
DIM stQuery AS STRING
DIM ausNumber As Integer
DIM inaNumber As Integer
DIM inbNumber As Integer
DIM incNumber As Integer
DIM sDatei AS STRING
DIM stTag AS STRING
DIM sp AS INTEGER
DIM splast AS INTEGER

DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld1 AS OBJECT
DIM stDBDir AS STRING

oPForm = oEvent.Source.Model.Parent 'das ist Formular_Serie (Tabelle von_bis)
oConnection = oPForm.activeConnection()

oDoc = thisComponent
oDB = ThisComponent.Parent
stDBDir = Left(oDB.Location,Len(oDB.Location)-Len(oDB.Title)) ' Der Titel der Datenbank wird von der URL abgetrennt.

oDrawpage = oDoc.Drawpage
oForm = oDrawpage.Forms.getByName("Formular_Serie")
oFeld_Datum = oForm.getByName("Markierfeld_Datum")
mitDatum = oFeld_Datum.State

stTag = oEvent.Source.Model.Tag 'Tag wird unter den Zusatzinformationen eingegeben
aForms() = Split(stTag, ",") 'Hier steht der komplette Name der Abfrage, dann "SEPA"
stName = Trim(aForms(0)) 'Abfrage_SEPA-b

REM Abfrage_SEPA-b stellt die Überweisungsdaten für den Empfänger
REM aus den Tabellen BankDaten, Banken, Dividenden zusammen.
REM Die Daten in Dividenden wurden vorher per Dividendenzentrale mit DividID = 1
REM eingetragen.
REM Der Text für "Verwendungszweck" (USTRD) wird von der Abfrage zusammengeetzt:
REM "Dividenden"."Kennung" || ' Mitgliedsnr. ' || "BankDaten"."Mitgliedsnummer"

stZusatz = Trim(aForms(1)) ' SEPA

oDatenquelle = ThisComponent.Parent.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oVerbindung = oDatenquelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement()

REM für Teil a (aus Tabelle SEPAHistorie)
stSql = "SELECT * FROM ""Pfade_SEPA"" WHERE ""ID""='A'"
oResult = oSQL_Anweisung.executeQuery(stSql)
oResult.next
stPfadvorA = oResult.getString(2)
stDateivorA = oResult.getString(3)
inaDatei = stDBDir & stPfadvorA & "/" & stDateivorA

REM fürAbsender= "Debitor" (aus Tabelle SEPAselbst)
stSql = "SELECT * FROM ""Pfade_SEPA"" WHERE ""ID""='S'"
oResult = oSQL_Anweisung.executeQuery(stSql)
oResult.next
stPfadvorS = oResult.getString(2)
stDateivorS = oResult.getString(3)
insDatei = stDBDir & stPfadvorS & "/" & stDateivorS

REM für Mitglieder-Schleife (aus Abfrage_Auszahlung)
stSql = "SELECT * FROM ""Pfade_SEPA"" WHERE ""ID""='B'"
oResult = oSQL_Anweisung.executeQuery(stSql)
oResult.next
stPfadvorB = oResult.getString(2)
stDateivorB = oResult.getString(3)
inbDatei = stDBDir & stPfadvorB & "/" & stDateivorB

REM Ende (fix)
stSql = "SELECT * FROM ""Pfade_SEPA"" WHERE ""ID""='C'"
oResult = oSQL_Anweisung.executeQuery(stSql)
oResult.next
stPfadvorC = oResult.getString(2)
stDateivorC = oResult.getString(3)
incDatei = stDBDir & stPfadvorC & "/" & stDateivorC

REM temporäre Datei
stSql = "SELECT * FROM ""Pfade_SEPA"" WHERE ""ID""='T'"
oResult = oSQL_Anweisung.executeQuery(stSql)
oResult.next
stPfadetmp = oResult.getString(2)
stDatei_tmp = oResult.getString(3)
tmpDatei = stDBDir & stPfadetmp & "/" & stDatei_tmp

REM Ausgabedatei zum Hochladen
stSql = "SELECT * FROM ""Pfade_SEPA"" WHERE ""ID""='X'"
oResult = oSQL_Anweisung.executeQuery(stSql)
oResult.next
stPfadex = oResult.getString(2)
stDatei_ex = oResult.getString(3)
IF mitDatum THEN
stdat() = split (Date,".")
isoDatum = stdat(2) & "-" & stdat(1) & "-" & stdat(0)
stDatei_ex = isoDatum & "_" & stDatei_ex
END IF
ausDatei = stDBDir & stPfadex & "/" & stDatei_ex

janein = msgbox("Wirklich in die Datei" & ChrChr$) & ChrausDatei ausDatei & ChrChr$) & Chrausgeben"ausgeben ?",256+32+4,"Überleg nochmal:")
IF janein = 7 THEN EXIT SUB

REM sammelt die Datensätze für Teil b
If Fileexists(tmpDatei) Then Kill tmpDatei
tmpNumber = Freefile
Open tmpDatei For Output As tmpNumber

If Fileexists(ausDatei) Then Kill ausDatei
ausNumber = Freefile
Open ausDatei For Output As ausNumber

If Fileexists(inaDatei) Then
inaNumber = Freefile
Open inaDatei For Input As inaNumber
Else
msgbox inaDatei & " nicht zu finden... - breche ab."
exit sub
End If

If Fileexists(insDatei) Then
insNumber = Freefile
Open insDatei For Input As insNumber
Else
msgbox insDatei & " nicht zu finden... - breche ab."
exit sub
End If

If Fileexists(inbDatei) Then
inbNumber = Freefile
Open inbDatei For Input As inbNumber
Else
msgbox inbDatei & " nicht zu finden... - breche ab."
exit sub
End If

If Fileexists(incDatei) Then
incNumber = Freefile
Open incDatei For Input As incNumber
Else
msgbox incDatei & " nicht zu finden... - breche ab."
exit sub
End If

REM hole die (evtl. überschriebenen) Werte für TagZahlung und Verwendungszweck aus dem Formular
REM und trage sie in die Tabelle SEPAHistorie ein.
oSQL_Statement = oConnection.createStatement()
oDoc = thisComponent
oDrawpage = oDoc.Drawpage
oForm = oDrawpage.Forms.getByName("Formular_SEPAHisto")
oFeldN = oForm.getByName("NumF_DH_ID")
sHZeile = oFeldN.Value
oFeldD = oForm.getByName("DatF_REQDEXCTNDT")
sTZahlung = oFeldD.Date
sTZ = sTZahlung.Year & "-" & sTZahlung.Month & "-" & sTZahlung.Day
oFeldT = oForm.getByName("Textfeld_USTRD")
sVWZ = oFeldT.Text
stSql = "UPDATE ""SEPAHistorie"" SET ""REQDEXCTNDT"" ='" + sTZ + "', ""USTRD_Muster"" ='" + sVWZ + "' WHERE ""ID""=" & SHZeile
oResult = oSQL_Statement.executeQuery(stSql)

REM erstelle erst den Mittelteil,
REM um die Anzahl NBTXS und Summe der ÜberweisungenCTRLSUM zu ermitteln
REM die dann in die Tabelle SEPAHistorie eingetragen werden.

Teilb:
REM =============jetzt der Mittelteil b
REM TagZahlung und Verwendungszweck nimmt die Abfrasge aus SEPAHistorie!

REM negativListe() definieren und Nicht(mehr)-Mitglieder aus dem Formular eintragen
oEForm = oPForm.getByName("Ehemalige") 'siehe Abfrage "Ehemalige"!
soviele = oEForm.RowCount
DIM negativListe(soviele) 'nimmt die Mitgliedsnumern auf, die NICHT gedruckt werden dürfen
oEForm.reload()
oEForm.first()
stehemaligField = oEForm.findColumn("Mitgliedsnummer") 'sollte 1 sein
ineg=0
negativListe(ineg) = oEForm.getInt(1)
WHILE oEForm.next
ineg = ineg + 1
negativListe(ineg) = oEForm.getInt(1)
WEND

stIDField = oPForm.findColumn("ID")
stID = oPForm.getString(stIDField)

stvonField = oPForm.findColumn("von")
stvon = oPForm.getInt(stvonField)

stbisField = oPForm.findColumn("bis")
stbis = oPForm.getInt(stbisField)

REM ================================================================
REM Schleife der einzelnen Überweisungen
REM Die Datensaetze werden mit PRINT #tmpNumber gesammelt
REM Aktuell-Feld wird auf "von" gesetzt
txanzahl=0
ctrlsumme=0.00
staktuellField = oPForm.findColumn("aktuell")
i = stvon
oPForm.updateInt(staktuellField,i)
stAusgabeb = ""

DO WHILE i < stbis+1 ' bis LOOP
drucken = TRUE
j=0 ' Ehemaligen überspringen
WHILE (j < ineg + 1)
if negativListe(j) = i then
drucken = FALSE
end if
j=j+1
WEND
IF drucken THEN
stSql = "UPDATE ""von_bis"" SET ""aktuell"" ='" + i + "' WHERE ""ID""=0"
oResult = oSQL_Anweisung.executeQuery(stSql)
ELSE GOTO Labelnichtdrucken
END IF

oDatenDatei = oDatenquelle.DataSource
oAbfragen = oDatenDatei.getQueryDefinitions()
oAbf = oAbfragen.getByName( stName ) ' also mit Abfrage_SEPA-b
stQueryb = oAbf.command 'SQL-Text der Abfrage

oAbfrageergebnisb = oSQL_Anweisung.executeQuery(stQueryb)
splastb= oAbfrageergebnisb.Columns.Count
'Kopfzeile mit Spaltennamen
stSpaltenb()=oAbfrageergebnisb.Columns.ElementNames
oAbfrageergebnisb.next
While (Not eof(inbNumber)) ' and oAbfrageergebnisb.next
Line Input #inbNumber, sLine
If sLine <>"" Then
sp = 0
WHILE sp < (splastb) ' + 1)
stQueryb = "SELECT """ + stSpaltenb(sp) + """ FROM """ + stName + """ "
oAbfrageergebnisb = oSQL_Anweisung.executeQuery(stQueryb)
oAbfrageergebnisb.next
'REM eventuell fehlende BANKDATEN abfangen mit on error goto !!!
stErgebnisb = oAbfrageergebnisb.getString(1)
' msgbox "stErgebnisb= " & stErgebnisb
IF stSpaltenb(sp) = sLine THEN

if sLine = "INSTAMT" then
ctrlsumme = ctrlsumme + stErgebnisb
end if

sLine = stErgebnisb
' msgbox "!"
GOTO Labelrausb
END IF
' msgbox stErgebnisb
sp = sp + 1
WEND
Labelrausb:
stAusgabeb = stAusgabeb & sLine
End If
Wend
REM Die Datensaetze werden mit PRINT #intmp gesammelt
PRINT #tmpNumber, stAusgabeb
stAusgabeb = ""
txanzahl=txanzahl + 1

Labelnichtdrucken:
i = i + 1
oPForm.updateInt(staktuellField,i)

'inbNumber wieder von vorne lesen für das nächste Mitglied:
Close #inbNumber
Open inbDatei For Input As #inbNumber
LOOP

Close #tmpNumber

REM aktuell im Formular wieder auf Anfangswert:
stSql = "UPDATE ""von_bis"" SET ""aktuell"" ='" + stvon + "' WHERE ""ID""=0"
oResult = oSQL_Anweisung.executeQuery(stSql)
oPForm.reload()
wait 100

mitDecPunkt = join(split(ctrlsumme, ","), ".")
stSqlsx = "UPDATE ""SEPAHistorie"" SET ""NBOFTXS"" ='" + txanzahl + "' WHERE ""ID""=" + sHZeile
oResultsx = oSQL_Anweisung.executeQuery(stSqlsx)
stSqlcs = "UPDATE ""SEPAHistorie"" SET ""CTRLSUM"" ='" + mitDecPunkt + "' WHERE ""ID""=" + sHZeile
oResultcs = oSQL_Anweisung.executeQuery(stSqlcs)

REM Ende der Schleife der einzelnen Überweisungen

REM ================================================================

Teila:
' hole die SEPA-Grundeinstellungs-Variablen aus den Tabellen SEPAselbst und SEPAHistorie
' für den Teil a

stQuery = "SELECT * FROM ""SEPAHistorie"" WHERE ID = '" + sHZeile + "'"
oAbfrageergebnis = oSQL_Anweisung.executeQuery(stQuery)
splastaH= oAbfrageergebnis.Columns.Count
'Kopfzeile mit Spaltennamen = Variablennamen in den XML-Vorlagen
stSpaltenaH()=oAbfrageergebnis.Columns.ElementNames

stQuery = "SELECT * FROM ""SEPAselbst"" WHERE ID = '0'"
oAbfrageergebnis = oSQL_Anweisung.executeQuery(stQuery)
splastaS= oAbfrageergebnis.Columns.Count
'Kopfzeile mit Spaltennamen = Variablennamen in den XML-Vorlagen
stSpaltenaS()=oAbfrageergebnis.Columns.ElementNames

'Sammlung im String stAusgabea:
stAusgabea = ""

REM erst mit #inaNumber aus SEPAHistorie:
While Not eof(inaNumber)
Line Input #inaNumber, sLine 'holt naechste Zeile aus der xml-Vorlage
If sLine <>"" Then
'suche die passende Tabellenspalte in SEPAHistorie
spH = 0
WHILE spH < (splastaH) ' - 1)
stQuery = "SELECT """ + stSpaltenaH(spH) + """ FROM ""SEPAHistorie"" WHERE ID = '" + sHZeile + "'"
'msgbox stQuery
oAbfrageergebnis = oSQL_Anweisung.executeQuery(stQuery)
oAbfrageergebnis.next
stErgebnis = oAbfrageergebnis.getString(1)
IF stSpaltenaH(spH) = sLine THEN
IF sLine = "CREDTTM" then mid(stErgebnis,11,1,"T")
sLine = stErgebnis
GOTO Labelrausa
END IF
spH = spH + 1
WEND
Labelrausa:
stAusgabea = stAusgabea & sLine
End If
Wend
'msgbox "Teil a " & chr(10) & stAusgabea

REM jetzt aus SEPAselbst
While Not eof(insNumber)
Line Input #insNumber, sLine 'holt naechste Zeile aus der xml-Vorlage.
' Diese wird bei Übereinstimmung mit dem Spaltennamen in SEPAselbst
' durch den Wert in dieser Spalte ersetzt:
If sLine <>"" Then
'suche die passende Tabellenspalte in SEPAHistorie
spS = 0
WHILE spS < (splastaS) ' - 1)
'msgbox "stSpaltenaH(spH)= " & stSpaltenaH(spH)
stQuery = "SELECT """ + stSpaltenaS(spS) + """ FROM ""SEPAselbst"" WHERE ID = '0'"
'msgbox stQuery
oAbfrageergebnis = oSQL_Anweisung.executeQuery(stQuery)
oAbfrageergebnis.next
stErgebnis = oAbfrageergebnis.getString(1)
IF stSpaltenaS(spS) = sLine THEN
IF sLine = "DB_IBAN" THEN stErgebnis = Replace(stErgebnis," ","")
sLine = stErgebnis
GOTO Labelrauss
END IF
spS = spS + 1
WEND
Labelrauss:
stAusgabea = stAusgabea & sLine
End If
Wend
Print #ausNumber, stAusgabea

REM ================================================================

Teilc: 'keine weiteren Informationen, nur Abschluss von Klammern
stAusgabec = ""
While (Not eof(incNumber))
Line Input #incNumber, sLine
If sLine <>"" Then
stAusgabec = stAusgabec & sLine
End If
Wend

Open tmpDatei For Input As tmpNumber
while not eof(tmpNumber)
Line Input #tmpNumber, sLine
Print #ausNumber, sLine
wend
Print #ausNumber, stAusgabec

Close #inaNumber
Close #inbNumber
Close #incNumber
Close #tmpNumber
Close #ausNumber
msgbox ("Anzahl der Einzelüberweisungen: " & txanzahl & chr(10) & "Summe der Überweisungsbeträge: " & mitDecPunkt & " €.",64,"Fertig!")
END SUB
Standard Dividenden Ablaufdatum   Basic 8e - SteuerDaten|Schaltfläche 2 (Control)
8j - IBAN|Schaltfläche 2 (Control)
111
SUB Ablaufdatum 
REM Prüft die Tabelle Steuerdaten auf abgelaufene NV- und FSA-Einträge
REM und setzt diese (nach Nachfrage?) auf FALSE und FSARest auf Null
REM Die Einträge NVbis und FSAbis und FSARest werden dabei auf NULL gesetzt.
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Formular_Steuerdaten")

oDatenquelle = ThisComponent.Parent.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oVerbindung = oDatenquelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement()
stZiel = "SteuerDaten"
stMNr = 1

stSql_MNrMax = " SELECT MAX( ""Mitgliedsnummer"" ) FROM ""Mitglieder"" "
oResult_MNrMax = oSQL_Anweisung.executeQuery(stSql_MNrMax)
oResult_MNrMax.next
letzte=oResult_MNrMax.getInt(1)
' msgbox "letzte Mitgliedsnummer ist " & letzte

REM verschiedene Datumsformate für "Heute"
DIM datL0 AS LONG 'zum Vergleichen
DIM datL0S AS LONG 'zum Vergleichen

DIM datL1 AS LONG
DIM datS AS STRING 'zum Angucken
datL0 = Date 'HEUTE
datS = Date 'HEUTE
datarr()=split(datS,".")
f_datS = datarr(2) & "-" & datarr(1) & "-" & datarr(0)
datL0S = DateSerial(datarr(2),datarr(1),datarr(0),)
'msgbox "Heute: datS=" & datS & " f_datS=" & f_datS & " datL0=" & datL0 & " datL0S=" & datL0S
txanzahl_nv = 0
txanzahl_fsa = 0
While stMNr < letzte + 1
stSql_NVTest = " SELECT ""Mitgliedsnummer"",""NV"",""NVbis"",""FSA"",""FSAbis"" FROM """ + stZiel + """ WHERE """ + stZiel + """.""Mitgliedsnummer"" = '" + stMNr + "' "
oResult_NVTest = oSQL_Anweisung.executeQuery(stSql_NVTest)
oResult_NVTest.next
'xray oResult_NVTest
stMNr = oResult_NVTest.getInt(1)
stNV = oResult_NVTest.getBoolean(2)
stNVbis = oResult_NVTest.getDate(3)
stFSA = oResult_NVTest.getBoolean(4)
stFSAbis = oResult_NVTest.getDate(5)

if stNV then
if (stNVbis.Year * stNVbis.Month * stNVbis.Day) = 0 then
msgbox ("Bitte erst im Formular 5c-DividendenKonten korrigieren und aktualisieren!",48,"NV-bis-Datum bei Mitgliedsnummer " & stMNr & " fehlt oder falsch")
goto Labelraus
else
datL1 = DateSerial(stNVbis.Year,stNVbis.Month,stNVbis.Day)
if datL1 < datL0 then
sttitel = "Das NV-Ablaufdatum: " & stNVbis.Day & "." & stNVbis.Month & "." & stNVbis.Year & " liegt in der Vergangenheit!"
janein = msgbox ("Soll NV für Mitgliedsnummer " & stMNr & " zurückgesetzt werden?",256+32+4,sttitel)
if janein = 6 then
stSql = "UPDATE ""SteuerDaten"" SET ""NV"" = FALSE, ""NVbis"" = NULL "
stSql = stSql & "WHERE ""Mitgliedsnummer"" ='" + stMNr + "' "
oResult = oSQL_Anweisung.executeQuery(stSql)
oForm.reload()
txanzahl_nv = txanzahl_nv + 1
end if
end if
end if
end if

if stFSA then
if (stFSAbis.Year * stFSAbis.Month * stFSAbis.Day) = 0 then
' sttext =
msgbox ("Bitte erst im Formular 5c-DividendenKonten korrigieren und aktualisieren!",48,"FSA-bis-Datum bei Mitgliedsnummer " & stMNr & " fehlt oder falsch")
goto Labelraus
else
datL1 = DateSerial(stFSAbis.Year,stFSAbis.Month,stFSAbis.Day)
if datL1 < datL0 then
sttitel = "Das FSA-Ablaufdatum: " & stFSAbis.Day & "." & stFSAbis.Month & "." & stFSAbis.Year & " liegt in der Vergangenheit!"
janein = msgbox ("Soll FSA für Mitgliedsnummer " & stMNr & " zurückgesetzt werden?",256+32+4,sttitel)
if janein = 6 then
stSql = "UPDATE ""SteuerDaten"" SET ""FSA"" = FALSE,""FSAbis"" = NULL,""FSARest"" = NULL "
stSql = stSql & "WHERE ""Mitgliedsnummer"" ='" + stMNr + "' "
oResult = oSQL_Anweisung.executeQuery(stSql)
oForm.reload()
end if
txanzahl_fsa = txanzahl_fsa + 1
end if
end if
end if
stMNr = stMNr + 1
Wend
'Formular_Steuerdaten aktualisieren
oForm.reload()

Select Case txanzahl_nv
Case 0
msgbox ("Kein NV-Eintrag zurückgesetzt.",64,"Steuerdaten")
Case 1
msgbox ("Ein NV-Eintrag zurückgesetzt.",64,"Steuerdaten")
Case Else msgbox (txanzahl_nv & " NV-Einträge zurückgesetzt.",64,"Steuerdaten")
End Select

Select Case txanzahl_fsa
Case 0
msgbox ("Kein FSA-Eintrag zurückgesetzt.",64,"Steuerdaten")
Case 1
msgbox ("Ein FSA-Eintrag zurückgesetzt.",64,"Steuerdaten")
Case Else msgbox (txanzahl_fsa & " FSA-Einträge zurückgesetzt.",64,"Steuerdaten")
End Select

Labelraus:
END SUB
Standard Dividenden DivHistoZeile   Basic KontodatenEintragen (Procedure)
test (Procedure)
20
FUNCTION DivHistoZeile AS LONG 'gibt die aktive Zeilennummer im Tabellen-Kontrollfeld zurück
REM In der Tabelle Pfade muss ID=Zeilennummer gesetzt sein. (Zählung ab 1)
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
DIM oZ AS OBJECT
oDoc = thisComponent
oDrawpage = oDoc.Drawpage
oForm = oDrawpage.Forms.getByName("Formular_Start")
oFeld = oForm.getByName("TabellenElementDividendenHistorie")
'xray oFeld
oSpalte = oFeld.getByName("Numerisches Feld Zeile")
oSpalte.HelpText = "Zeile auswählen!"
'xray oSpalte
wait 100
oZ=oFeld.getRowSet()
wait 100
DivHistoZeile = oZ.Row
END FUNCTION
Standard Dividenden DividHisto_DatenEintragen   Basic   45
SUB DividHisto_DatenEintragen(oEvent AS OBJECT) 
' im Formular 8i - Ueberweisungen
' holt die Werte für TagZahlung aka REQDEXCTDT und Verwendungszweck-Muster
' aus der gewählten Tabellenzeile von DividendenHistorie

' DIM stTag AS STRING
' stTag = oEvent.Source.Model.Tag 'Tag wird unter den Zusatzinformationen eingegeben
' 'Anteile, Raten, Dividenden, Projekte
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
DIM oSpalte AS OBJECT

oDatenquelle = ThisComponent.Parent.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oVerbindung = oDatenquelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement()

oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Formular_SEPAHisto")
oFeld = oForm.getByName("TabellenElementHistorie")
oSpalte=oFeld.getByName("NumF_DivHistZeile") ' enthält die Zeilennummer in DividHistorie
DH_znr = oSpalte.Value

oSpalteVWZ=oFeld.getByName("USTRD_Muster") ' Verwendungszweck-Muster
stSql = " SELECT ""Verwendungszweck"" FROM ""DividendenHistorie"" WHERE ""ID"" = " & DH_znr
oAbfrageergebnis = oSQL_Anweisung.executeQuery(stSql)' Ergebnis auswerten
oAbfrageergebnis.next
stVWZ = oAbfrageergebnis.getString(1)
oSpalteVWZ.Text = stVWZ
oSpalteVWZ.commit()
wait 100
oSpalteTZ=oFeld.getByName("DatF_REQDEXCTNDT") ' DatF_REQDEXCTNDT
stSql = " SELECT ""TagZahlung"" FROM ""DividendenHistorie"" WHERE ""ID"" = " & DH_znr
oAbfrageergebnis = oSQL_Anweisung.executeQuery(stSql)' Ergebnis auswerten
oAbfrageergebnis.next
dateTZ = oAbfrageergebnis.getDate(1)
oSpalteTZ.Date = dateTZ
oSpalteTZ.commit()
wait 100
END SUB
Standard Dividenden KontodatenEintragen   Basic 8d - DividendenZentrale|SchaltflächeAnteile (Control) 210
SUB KontodatenEintragen(oEvent AS OBJECT) 'erst in "Anteile", dann in "Dividenden"
'
REM Aufruf aus dem Formular DividendenZentrale
REM Holt die Daten der gewählten Zeile und trägt sie in ALLE MitgliederKonten (Tabelle Anteile) ein.
stSerie = oEvent.Source.Model.Tag
REM stSerie = "Anteile"
REM stSerie = "Dividenden"
REM stSerie = "Projekte???" geht ganz anders...

oPForm = oEvent.Source.Model.Parent 'das ist Formular_Serie (Tabelle von_bis)
oVerbindung = oPForm.activeConnection()
oSQL_Statement = oVerbindung.createStatement()

oEForm = oPForm.getByName("Ehemalige") 'siehe Abfrage "Ehemalige"!
soviele = oEForm.RowCount
DIM negativListe(soviele) 'nimmt die Mitgliedsnumern auf, die NICHT gedruckt werden dürfen
oEForm.reload()
oEForm.first()
stehemaligField = oEForm.findColumn("Mitgliedsnummer") 'sollte 1 sein
ineg=0
negativListe(ineg) = oEForm.getInt(1)
WHILE oEForm.next
ineg = ineg + 1
negativListe(ineg) = oEForm.getInt(1)
WEND

REM hole die allgemeinen Angaben:
REM ... den Wert eines Anteils aus der Tabelle Fiwerte
stSql = "SELECT ""Wert"" FROM ""Fixwerte"" WHERE ""Fixwerte"".""Art""=" + "'1Anteil'"
oResult = oSQL_Statement.executeQuery(stSql)
oResult.next
Wert1Anteil = oResult.getFloat(1)

REM aktive Zeile?
DHZeile = DivHistoZeile()
REM ... alle Daten (TagEintrag, TagZahlung,...) der gewählten Zeile
stSql = "SELECT * FROM ""DividendenHistorie"" WHERE ""ID""="+DHZeile+""
REM Problem: erster Datensatz für Zeile 1 hat ID = 0
oResult = oSQL_Statement.executeQuery(stSql)
oResult.next
'xray oResult
TagEintrag = oResult.getDate(2)
TagZahlung = oResult.getDate(3)
AusProzent = oResult.getFloat(4) ' % auf die Anteile werden ausgeschuettet
VWZweck = oResult.getString(5) 'in Dividenden ist das "Kennungen" -> UStrID
KEStProzent = oResult.getFloat(6)
SoliProzent = oResult.getFloat(7)
'msgbox cDateFromUnoDate(stTagEintrag) & " " & cDateFromUnoDate(stTagZahlung) & " " & stAusProzent & " " & stKEStProzent & " " & stSoliproz
REM Formatierung der Werte für sql:
f_dat = TagEintrag.Year & "-" & TagEintrag.Month & "-" & TagEintrag.Day ' DateValue("2017-09-03")
f_datZ = TagZahlung.Year & "-" & TagZahlung.Month & "-" & TagZahlung.Day
f_ausproz = join(split(AusProzent, ","), ".")
f_kestproz = join(split(KEStProzent, ","), ".")
f_soliproz = join(split(SoliProzent, ","), ".")

REM hole den Arbeitsbereich stvon..stbis
stIDField = oPForm.findColumn("ID")
stID = oPForm.getString(stIDField)
stvonField = oPForm.findColumn("von")
stvon = oPForm.getInt(stvonField)
stbisField = oPForm.findColumn("bis")
stbis = oPForm.getInt(stbisField)
anzdiff = stbis - stvon +1
janein = msgbox("Wirklich die Daten mit ID=" & DHZeile & " in alle (außer übersprungene) " & anzdiff & " Konten durchführen?",256+32+4,"Überleg nochmal:")
IF janein = 7 THEN EXIT SUB

REM Aktuell-Feld wird auf "von" gesetzt
staktuellField = oPForm.findColumn("aktuell")
i = stvon
oPForm.updateInt(staktuellField,i)

txanzahl=0

janein = msgbox("Sind wirklich ALLE Nichtveranlagungsdaten" & Chrund3) & "und Freistellungsaufträge" & Chreingetragenngetragen Im,256+32+4,"Im Zweifel bitte JETZT NEIN sagen!")
if janein = 7 then goto Labelraus

'============================================================
REM Beginn der Schleife für das Mitglied mit Mitgliedsnummer in von_bis.aktuell


DO WHILE i < stbis+1 ' bis LOOP
drucken = TRUE
j=0 ' Ehemaligen überspringen
WHILE (j < ineg + 1)
if negativListe(j) = i then
drucken = FALSE
end if
j=j+1
WEND
IF NOT drucken THEN
GOTO Labelnichtweiter
ELSE
stSql = "UPDATE ""von_bis"" SET ""aktuell"" ='" + i + "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)
END IF
' msgbox i
txanzahl=txanzahl + 1

'=========================================================
REM berechne die Summe der Anteile (hier noch ohne Datumsgrenze!)
stSql = "SELECT ""Anteile"".""Mitgliedsnummer"", SUM( ""Anteile"".""AnteilePlusMinus"" ) ""AnteileSumme"" FROM ""Anteile"", ""von_bis"" WHERE ""Anteile"".""Mitgliedsnummer"" = ""von_bis"".""aktuell"" GROUP BY ""Anteile"".""Mitgliedsnummer"""
oResult = oSQL_Statement.executeQuery(stSql)
While oResult.next
MitNr = oResult.getInt(1)
AnteileSumme = oResult.getInt(2)
Wend
Ausschuettung = Wert1Anteil * AnteileSumme * AusProzent / 100
f_ausschuett = join(split(Ausschuettung, ","), ".") 'ersetzt , durch .

REM Eintrag der Ausschüttung in "Anteile"
stSql = "INSERT INTO ""Anteile"" (""Mitgliedsnummer"",""VorgangID"",""TagEintrag"",""AnteileSaldo"",""AusProzent"",""Ausschuettung"")"
stSql = stSql & " VALUES('" + MitNr + "','20','" + f_dat + "','" + AnteileSumme + "','" + f_ausproz + "','"+ f_ausschuett + "')"
oResult = oSQL_Statement.executeQuery(stSql)

REM Eintrag in "Dividenden"
REM hole die weiteren individuellen Angaben aus der Tabelle SteuerDaten
stSql = "SELECT * FROM ""SteuerDaten"" WHERE ""Mitgliedsnummer"" = " + i
oResult = oSQL_Statement.executeQuery(stSql)
While oResult.next
' xray oResult ' andere Möglichkeit: FSARest = oResult.getByName("FSARest").Float
MitNr = oResult.getInt(1) ' "Mitgliedsnummer"
KiStproz = oResult.getFloat(4) ' "KiStproz"
isNV = oResult.getBoolean(5) ' "NV"
isFSA = oResult.getBoolean(7) ' "FSA"
FSARest = oResult.getFloat(9) ' "FSARest" wird am Ende ggf. nach unten korrigiert
Wend

InAnspruch = 0
SPAusschuettung = Ausschuettung
if isFSA then
FSARestneu = FSARest - Ausschuettung
if FSARestneu < 0 then
FSARestneu = 0
SPAusschuettung = Ausschuettung - FSARest 'steuerpflichtig
InAnspruch = FSARest
else
SPAusschuettung = 0 'steuerpflichtig=0
InAnspruch = Ausschuettung
end if
' msgbox "steuerpflichtig=" & SPAusschuettung & " (alter)Rest=" & FSARest & " neuerRest=" & FSARestneu & " inAnspruchgenommen=" & InAnspruch
end if

KESt = SPAusschuettung * KEStProzent / 100
KiSt = KESt * KiStproz / 100
SoliZu = KESt * SoliProzent / 100

REM Sonderausgabe-Kirchensteuer-Korrektur
KESt2 = KESt / (1 + (KiStproz / 100) * (KEStProzent / 100))

Auszahlung = Ausschuettung - KESt2 - SoliZu - KiSt
' msgbox " Ausschuettung= " & Ausschuettung & " KESt2= " & KESt2 & " SoliZu= " & SoliZu & " KiSt= " & KiSt & " Auszahlung= " & Auszahlung

f_kistpro = join(split(KiStproz, ","), ".") 'ersetzt , durch .
f_kist = join(split(KiSt, ","), ".") 'ersetzt , durch .
f_soli = join(split(SoliZu, ","), ".") 'ersetzt , durch .

InAnspruch = InAnspruch * (-1) ' soll bei DividID=1 als FSABetrag mit Minuszeichen erscheinen
' msgbox "InAnspruch: " & InAnspruch
f_fsa = join(split(InAnspruch, ","), ".") 'ersetzt , durch .
f_fsarest = join(split(FSARestneu, ","), ".") 'ersetzt , durch .
f_kest2 = join(split(KESt2, ","), ".") 'ersetzt , durch .
f_auszahl = join(split(Auszahlung, ","), ".") 'ersetzt , durch .

' stSql = "INSERT INTO ""Dividenden"" (""ausgezahlt"",""Mitgliedsnummer"",""DividID"",""Kennung"",""TagEintrag"",""TagZahlungAblauf"",""AnteileSaldo"",""KEStproz"",""Soliproz"",""KiStproz"",""AusProzent"",""KapErtr"",""KapErtrSt"",""Soli"",""KiSt"",""FSABetrag"",""Auszahlung"" )"
' stSql = stSql & " VALUES('FALSE','" + MitNr + "','1','" + VWZweck + "','" + f_dat + "','" + f_datZ + "','" + AnteileSumme + "','" + f_kestproz + "','" + f_soliproz + "','" + f_kistpro + "','" + f_ausproz + "','"+ f_ausschuett + "','" + f_kest2 + "','" + f_soli + "','" + f_kist + "','" + f_fsa + "','" + f_auszahl + "')"
stSql = "INSERT INTO ""Dividenden"" (""ausgezahlt"",""Mitgliedsnummer"",""DividID"",""Kennung"",""TagEintrag"",""AnteileSaldo"",""KEStproz"",""Soliproz"",""KiStproz"",""AusProzent"",""KapErtr"",""KapErtrSt"",""Soli"",""KiSt"",""FSABetrag"",""Auszahlung"" )"
stSql = stSql & " VALUES('FALSE','" + MitNr + "','1','" + VWZweck + "','" + f_dat + "','" + AnteileSumme + "','" + f_kestproz + "','" + f_soliproz + "','" + f_kistpro + "','" + f_ausproz + "','"+ f_ausschuett + "','" + f_kest2 + "','" + f_soli + "','" + f_kist + "','" + f_fsa + "','" + f_auszahl + "')"
REM Erst der Überweisungsversuch (siehe Abfrage_in_XML) setzt "ausgezahlt" wieder auf TRUE und trägt ""TagZahlungAblauf"" + f_datZ + "','" ein.
REM Die nicht ausgeführten Überweisungen müssen PER HAND im Formular "5c - Dividendenkonten" auf FALSE
REM gesetzt werden, damit sie bei der Wiederholung des Versuchs erkannt werden!
REM Dadurch wird dann auch das Datum ""TagZahlungAblauf"" gelöscht.
REM (oder per Hand in der Tabelle Dividenden)

'msgbox stSql
oResult = oSQL_Statement.executeQuery(stSql)

REM falls Freibetrag in Anspruch genommen wurde: weitere Zeile mit DividID=3 für den Rest
if InAnspruch < 0 then
' muss in Dividenden eine Zeile für DividID=3 mit neuem Rest eingetragen werden
stSql = "INSERT INTO ""Dividenden"" (""Mitgliedsnummer"",""DividID"",""TagEintrag"",""FSABetrag"" )"
stSql = stSql & " VALUES('" + MitNr + "','3','" + f_dat + "','" + f_fsarest + "')"
'msgbox stSql
oResult = oSQL_Statement.executeQuery(stSql)
' und in SteuerDaten der neue FSARest
stSql = "UPDATE ""SteuerDaten"" SET ""FSARest"" = '" + f_fsarest + "' WHERE ""Mitgliedsnummer"" = '" + MitNr + "'"
' msgbox stSql
oResult = oSQL_Statement.executeQuery(stSql)
end if

Labelnichtweiter:
i = i + 1
stAusgabeb = stAusgabeb & chr(10)
oPForm.updateInt(staktuellField,i)
LOOP

Select Case txanzahl
Case 0
msgbox ("Kein Datensatz geschrieben.",64,"Dividenden-Eintragung")
Case 1
msgbox ("Ein Datensatz geschrieben.",64,"Dividenden-Eintragung")
Case Else msgbox (txanzahl & " Datensätze geschrieben.",64,"Dividenden-Eintragung")
End Select

REM aktuell wieder auf Anfangswert:
stSql = "UPDATE ""von_bis"" SET ""aktuell"" ='" + stvon + "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)
oPForm.reload()
wait 100
Labelraus:
END SUB
Standard Dividenden SEPAZeileMerken   Basic 8h - SEPAEinstellungen|SEPAHisto-ID (Control) 44
SUB SEPAZeileMerken ' und Daten TagZahlung und Verwendungszweck aus DividHisto-Zeile nach SEPAHisto übernehmen
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
DIM oZ AS OBJECT
DIM SHZeile AS LONG
oDoc = thisComponent
oDrawpage = oDoc.Drawpage
oForm = oDrawpage.Forms.getByName("Formular_SEPAHistorie")
oFeld = oForm.getByName("TabSteuerelem_SEPAHisto")
'xray oFeld
oSpalte = oFeld.getByName("NumericFieldID")
oSpalte.HelpText = "Zeile auswählen!"
'xray oSpalte
wait 100
oZ=oFeld.getRowSet()
wait 100
' SEPAHistoZeile = oZ.Row
SHZeile = oZ.Row
msgbox ("Übernehme Zeile " & SHZeile & " der SEPA-Historie",64,"SEPA-Historie")
oConnection = oForm.activeConnection()
oSQL_Statement = oConnection.createStatement()
stSql = "UPDATE ""SEPAaktZeile"" SET ""SEPAZeile"" ='" + SHZeile + "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)
stSql = "SELECT ""DivHistZeile"" FROM ""SEPAHistorie"" WHERE ""ID"" =" & SHZeile
oResult = oSQL_Statement.executeQuery(stSql)
oResult.next
DHZeile = oResult.getint(1)
' msgbox "DHZeile=" & DHZeile
stSql = "SELECT * FROM ""DividendenHistorie"" WHERE ""ID""=" & DHZeile
oResult = oSQL_Statement.executeQuery(stSql)
oResult.next
'xray oResult
colTZ = oResult.findColumn("TagZahlung")
sTZahlung = oResult.getDate(colTZ) '(2)
colVWZ = oResult.findColumn("Verwendungszweck")
sVWZ = oResult.getString(colVWZ) '(5)
'msgbox sVWZ
sTZ = sTZahlung.Year & "-" & sTZahlung.Month & "-" & sTZahlung.Day
stSql = "UPDATE ""SEPAHistorie"" SET ""REQDEXCTNDT"" ='" + sTZ + "', ""USTRD_Muster"" ='" + sVWZ + "' WHERE ""ID""=" & SHZeile
'msgbox stSql
oResult = oSQL_Statement.executeQuery(stSql)
END SUB
Standard Dividenden Steuerdaten_aktualisieren   Basic 5c - DividendenKonten|Steuerdaten_uebernehmen (Control) 57
SUB Steuerdaten_aktualisieren(oEvent AS OBJECT)
REM Die Schaltfläche im Formular 5c-DividendenKonten
REM erscheint nur bei Vid=3 oder Vid=4,
REM siehe im Modul Aktualisierung.VorgangID_lesen
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
DIM oZ AS OBJECT
oDoc = thisComponent
oDrawpage = oDoc.Drawpage

oForm = oDrawpage.Forms.getByName("Formular_Filter")
oSubForm = oForm.getByName("Formular_Personen")
oSubSubForm = oSubForm.getByName("Formular_Konto")
oFeld = oSubSubForm.getByName("Tabellen_Steuerelement")

MNr= oFeld.getbyName("NumF_Mitgl").value
'msgbox "Mitgliedsnummer " & MNr
xray oFeld
Vidnummer= oFeld.getbyName("NumF_VID").CurrentValue

' if Vidnummer = 3 then msgbox Vidnummer & " >FSA"
' if Vidnummer = 4 then msgbox Vidnummer & " >NV"

datS = Date 'HEUTE
datarr()=split(datS,".")
f_datS = datarr(2) & "-" & datarr(1) & "-" & datarr(0)

dat1= oFeld.getbyName("DateField1").Date 'Eintrag
stdatum1 = dat1.day & "." & dat1.month & "." & dat1.year
'msgbox stdatum1
f_dat1 = dat1.Year & "-" & dat1.Month & "-" & dat1.Day ' DateValue("2017-09-03")

dat2= oFeld.getbyName("DateField2").Date 'Ablauf
stdatum2 = dat2.day & "." & dat2.month & "." & dat2.year
'msgbox stdatum2
f_dat2 = dat2.Year & "-" & dat2.Month & "-" & dat2.Day
'xray oFeld
if Vidnummer = 3 then
FSARest= oFeld.getbyName("NumF_Pausch").value 'FSA-Betrag
'msgbox "FSARest: " & FSARest
end if

oVerbindung = oForm.activeConnection()
oSQL_Statement = oVerbindung.createStatement()
stSql = "UPDATE ""SteuerDaten"" SET ""Aktualisierung"" ='" + f_datS + "',"
if Vidnummer = 3 then
stSql = stSql & " ""FSA"" = TRUE, ""FSAbis"" = '" + f_dat2 + "', ""FSARest"" = '" + FSARest + "' "
end if
if Vidnummer = 4 then
stSql = stSql & " ""NV"" = TRUE, ""NVbis"" = '" + f_dat2 + "' "
end if
stSql = stSql & "WHERE ""Mitgliedsnummer"" ='" + MNr + "' "
'msgbox Vidnummer & ": " & stSql
oResult = oSQL_Statement.executeQuery(stSql)
END SUB
Standard Dividenden Steuerdaten_Mitgliedsnummern_ergaenzen   Basic 8e - SteuerDaten|Schaltfläche 1 (Control)
8j - IBAN|Schaltfläche 1 (Control)
36
SUB Steuerdaten_Mitgliedsnummern_ergaenzen
REM Wenn die Mitgliedsnummer noch nicht in der Tabellle SteuerDaten existiert muss
REM sie erst mit INSERT angelegt werden:
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Formular_Steuerdaten")

oDatenquelle = ThisComponent.Parent.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oVerbindung = oDatenquelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement()
stZiel = "SteuerDaten"
stMNr = 1

stSql_MNrMax = " SELECT MAX( ""Mitgliedsnummer"" ) FROM ""Mitglieder"" "
oResult_MNrMax = oSQL_Anweisung.executeQuery(stSql_MNrMax)
oResult_MNrMax.next
letzte=oResult_MNrMax.getInt(1)
msgbox ("letzte Mitgliedsnummer ist " & letzte,64,stZiel)

While stMNr < letzte + 1
stSql_MNrTest = " SELECT """ + stZiel + """.""Mitgliedsnummer"" ""MNrTest"" FROM """ + stZiel + """ WHERE """ + stZiel + """.""Mitgliedsnummer"" = '" + stMNr + "' "
' msgbox stSql_MNrTest
oResult_MNrTest = oSQL_Anweisung.executeQuery(stSql_MNrTest)
IF NOT oResult_MNrTest.next THEN '.next ist FALSE wenn die Abfrage kein Ergebnis liefert
stSql_neu = " INSERT INTO """ + stZiel + """ (""Mitgliedsnummer"") VALUES ('" + stMNr + "' ) "
oResult_neu = oSQL_Anweisung.executeQuery(stSql_neu)
msgbox ("Mitgliedsnummer " & stMNr & " neu eingefügt",64,stZiel)
END IF
stMNr = stMNr + 1
Wend
'Formular_Steuerdaten aktualisieren
oForm.reload()
END SUB
Standard Dividenden Steuerdaten_Zeilenauswahl   Basic 8e - SteuerDaten|Formular_StDaten|Schaltfläche_Einzeldruck (Control)
8j - IBAN|Formular_BankDaten1|Schaltfläche_Einzeldruck (Control)
8
SUB Steuerdaten_Zeilenauswahl
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Formular_Steuerdaten")
oFeld = oForm.getByName("Tabellen-SE-StDaten")
'xray oFeld
' oFeld.RowSet.Row = 5
END SuB
Standard IBAN IBAN_check   Basic Main (Procedure) 22
FUNCTION IBAN_check(blz,kto,PZ AS string) AS BOOLEAN
iban_ganz = blz & kto & "1314" & PZ

iban_1 = LEFT(iban_ganz,9)
rest = CLNG(iban_1) MOD 97
if rest<10 then rest = "0" & rest

iban_2 = rest & MID(iban_ganz,10,7)
rest = CLNG(iban_2) MOD 97
if rest<10 then rest = "0" & rest

iban_3 = rest & MID(iban_ganz,17,7)
rest = CLNG(iban_3) MOD 97
if rest<10 then rest = "0" & rest

iban_4 = rest & MID(iban_ganz,24,7)
rest = CLNG(iban_4) MOD 97
if (rest = 1) then
IBAN_check = TRUE
else IBAN_check = FALSE
end if
END FUNCTION
Standard IBAN IBANcheck   Basic 3 - MitgliederBankdaten|Schaltfläche_IBAN (Control) 67
SUB IBANcheck 'im Formular 3 - MitgliederBankdaten
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oSubForm AS OBJECT
DIM oFeld AS OBJECT
oDoc = thisComponent

oDatenquelle = ThisComponent.Parent.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oVerbindung = oDatenquelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement()

oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Formular_Filter")
oSubForm = oForm.getByName("Formular_Personen")
oSubSubForm = oSubForm.getByName("Formular_Bankdaten")
oFeld_IBAN = oSubSubForm.getByName("Textfeld_IBAN")
oFeld_BLZ = oSubSubForm.getByName("Listenfeld_BLZ")
oFeld_KTO = oSubSubForm.getByName("Textfeld_KtoNummer")
' xray oFeld_BLZ
IBAN_text = oFeld_IBAN.Text

BLZ_text = ""
BLZ_ID = oFeld_BLZ.CurrentValue
if (BLZ_ID <> "") AND (NOT IsEmpty(BLZ_ID)) then
stSql = "SELECT ""BLZ"" FROM ""Banken"" WHERE ""ID"" = " + BLZ_ID
oAbfrageergebnis = oSQL_Anweisung.executeQuery(stSql)' Ergebnis auswerten
oAbfrageergebnis.next
BLZ_text= oAbfrageergebnis.getString(1) 'muss immer 8-stellig sein!
if LEN(BLZ_text) <> 8 then msgbox "BLZ " & BLZ_text & " ist nicht 8-stellig!"
end if

KTO_text = oFeld_KTO.Text 'wird mit Nullen auf 10 Stellen aufgefüllt
KTO_text = String(10,"0") & KTO_text
KTO_text = RIGHT(KTO_text,10)
' msgbox BLZ_text & "< >" & KTO_text

' REPLACE( "BankDaten"."IBAN", ' ', '' )
'Entferne Leerzeichne aus IBAN und prüfe Länge
i=1
IBAN_neu = ""
While i <= LEN (IBAN_text)
zeichen = MID(IBAN_text,i,1)
if zeichen <> " " then
IBAN_neu = IBAN_neu & zeichen
end if
i=i+1
Wend
' msgbox LEN(IBAN_neu)
if (LEN(IBAN_neu) = 22) AND pruefeIBAN(IBAN_neu) THEN
msginfo = "OK: " & IBAN_neu & " ist plausibel."
msgbox(msginfo,0+64,"IBAN-Prüfung")
else
IBAN_Versuch = stIBAN(BLZ_text,KTO_text,"00")
msginfo = "IBAN passt nicht. " & chr(13) & "Sie könnte " & IBAN_Versuch & " sein."
msgbox (msginfo,0+48,"IBAN-Prüfung")
msginfo = "Soll die IBAN "& IBAN_Versuch & Chrin13) & "in die Tabelle BankDaten" & Chreingetragenngetragen werdenjaneinanein = msgbox(msginfo,256+32+4,"Im Zweifel bitte JETZT NEIN sagen!")
if janein = 6 then ' als neue IBAN in das Formular eintragen
oFeld_IBAN.setString(IBAN_Versuch)
oFeld_IBAN.commit()
end if
end if
END SUB
Standard IBAN Main   Basic   9
Sub Main
' msgbox "Geno.Base ist eine Datenbank für die Verwaltung von Genossenschaftsmitgliedern"
' bbbbbbbbb--kkkkkkk--kk13140--0 (D=13, E=14, 00)
' 1 10 17 24

print stIBAN("342500000","005228077","00")
if IBAN_check("342500000","005228077","84") then print "OK"

END SUB
Standard IBAN pruefeIBAN   Basic IBANcheck (Procedure) 24
REM prüft ob eingegebene IBAN Prüfzahl-plausibel ist
FUNCTION pruefeIBAN(stIBAN AS string) AS BOOLEAN
' stIBAN umstellen: erste 4 Zeichen mit Codierung von "DE" nach hinten
iban_ganz = MID(stIBAN,5,18) & "1314" & MID(stIBAN,3,2)
'msgbox iban_ganz
iban_1 = LEFT(iban_ganz,9)
rest = CLNG(iban_1) MOD 97
if rest<10 then rest = "0" & rest

iban_2 = rest & MID(iban_ganz,10,7)
rest = CLNG(iban_2) MOD 97
if rest<10 then rest = "0" & rest

iban_3 = rest & MID(iban_ganz,17,7)
rest = CLNG(iban_3) MOD 97
if rest<10 then rest = "0" & rest

iban_4 = rest & MID(iban_ganz,24,7)
rest = CLNG(iban_4) MOD 97
if (rest = 1) then
pruefeIBAN = TRUE
else pruefeIBAN = FALSE
end if
END FUNCTION
Standard IBAN stIBAN   Basic Main (Procedure)
pruefeIBAN (Procedure)
IBANcheck (Procedure)
23
REM erzeugt IBAN aus BLZ,KtoNr und PZ=00
FUNCTION stIBAN(blz,kto,PZ AS string) AS String
iban_ganz = blz & kto & "1314" & PZ

iban_1 = LEFT(iban_ganz,9)
rest = CLNG(iban_1) MOD 97
if rest<10 then rest = "0" & rest

iban_2 = rest & MID(iban_ganz,10,7)
rest = CLNG(iban_2) MOD 97
if rest<10 then rest = "0" & rest

iban_3 = rest & MID(iban_ganz,17,7)
rest = CLNG(iban_3) MOD 97
if rest<10 then rest = "0" & rest

iban_4 = rest & MID(iban_ganz,24,7)
rest = CLNG(iban_4) MOD 97
if rest<10 then rest = "0" & rest

iban_PZ = 98-CSTR(rest)
stIBAN = "DE" & iban_PZ & blz & kto
END FUNCTION
Standard Infos Info   Basic 1 - Mitglieder|Hilfe (Control)
2 - MitgliederAdressen|Hilfe (Control)
3 - MitgliederBankdaten|Hilfe (Control)
4 - MitgliedsAnteile|Hilfe (Control)
5a - RatenKonten|Hilfe (Control)
5b - ProjektKonten|Hilfe (Control)
5c - DividendenKonten|Hilfe (Control)
7a - MitgliederBriefe|Hilfe (Control)
7b - Mailmerge|Hilfe (Control)
8a - ListenDatenVerwaltung|Hilfe (Control)
8b - Grundeinstellungen|Hilfe (Control)
8c - ProjekteEinstellungen|Hilfe (Control)
8d - DividendenZentrale|Hilfe (Control)
8e - SteuerDaten|Hilfe (Control)
8f - BZStEinstellungen|Hilfe (Control)
8g - BZStOnline|Hilfe (Control)
8h - SEPAEinstellungen|Hilfe (Control)
8i - Ueberweisungen|Hilfe (Control)
8j - IBAN|Hilfe (Control)
48
Sub Info(oEvent AS OBJECT)
DIM stTag AS STRING
stTag = oEvent.Source.Model.Tag 'Auswahl unter "Zusatzinformation"
Select Case stTag
Case "1"
Call Info_Mitglieder
Case "2"
Call Info_MitgliederAdressen
Case "3"
Call Info_MitgliederBankdaten
Case "4"
Call Info_Mitgliedsanteile
Case "5a"
Call Info_RatenKonten
Case "5b"
Call Info_ProjektKonten
Case "5c"
Call Info_DividendenKonten
Case "6"
Call Info_StromGas
Case "7a"
Call Info_Mitgliederbriefe
Case "7b"
Call Info_Mailmerge
Case "8a"
Call Info_Listendaten
Case "8b"
Call Info_Grundeinstellungen
Case "8c"
Call Info_ProjekteEinstellungen
Case "8d"
Call Info_Dividendenzentrale
Case "8e"
Call Info_Steuerdaten
Case "8f"
Call Info_BZStEinstellungen
Case "8g"
Call Info_BZSt_Online
Case "8h"
Call Info_SEPA_Einstellungen
Case "8i"
Call Info_Ueberweisungen
Case "9c"
Call Info_StromGas
Case Else
msgbox "Hilflos."
End Select
End Sub
Standard Infos Info_BZSt_Online   Basic Info (Procedure) 15
Sub Info_BZSt_Online ' 8g
stText = "Erzeugung der csv-Dateien für den Datenaustausch mit dem BZSt."
stText=stText & chr(10)
stText=stText & chr(10) & "Die Beschriftung der Schaltflächen gibt den Namen der"
stText=stText & chr(10) & " dazugehörigen Abfrage und den Namen"
stText=stText & chr(10) & " der produzierten csv-Datei an."
stText=stText & chr(10)
stText=stText & chr(10) & "Die csv-Dateien sollten vor der Einreichung mit einem"
stText=stText & chr(10) & "Texteditor, z.B. notepad++ überprüft werden."
stText=stText & chr(10)
stText=stText & chr(10) & "Vor den Import der Antwort-Datei müssen in der Tabelle ""SteuerDaten"" eventuell"
stText=stText & chr(10) & " noch fehlende Mitgliedsnummern (von neuen Mitgliedern) ergänzt werden."
stText=stText & chr(10)
msgbox (stText,0+64,"Formular 8g-BZStOnline")
End Sub
Standard Infos Info_BZStEinstellungen   Basic Info (Procedure) 10
Sub Info_BZStEinstellungen ' 8f
stText = "Die Tabelle Fix-KiSt enthält die für BZSt-Abfragen verwendbaren Variablen."
stText=stText & chr(10)
stText=stText & chr(10) & "Als Ordnungskriterium wird hier immer die Mitgliedsnummer verwendet."
stText=stText & chr(10)
stText=stText & chr(10) & "Anfragedatum und Grund der Anfrage werden im"
stText=stText & chr(10) & " Formular 8g-BZStOnline festgelegt."
stText=stText & chr(10)
msgbox (stText,0+64,"Formular 8f-BZStEinstellungen")
End Sub
Standard Infos Info_DividendenKonten   Basic Info (Procedure) 9
Sub Info_DividendenKonten ' 5c
stText=stText & chr(10) & "VID 1 und 2: Einträge nur von 8d-DividendenZentrale."
stText=stText & chr(10) & "VID 3 und 4: unbedingt mit TagEintrag und TagAblauf eintragen!"
stText=stText & chr(10)
stText=stText & chr(10) & "Überblick über die Nichtveranlagungs-Bescheinigungen und"
stText=stText & chr(10) & "Freistellungsaufträge im Formular ""8e-SteuerDaten""."
stText=stText & chr(10)
msgbox (stText,0+64,"Formular 5c-DividendenKonten")
End Sub
Standard Infos Info_Dividendenzentrale   Basic Info (Procedure) 18
Sub Info_Dividendenzentrale ' 8d
stText = "Von hier aus werden die nach einem Beschluss der Generalversammlung"
stText=stText & chr(10) & " fälligen Auschüttungen auf die Genossenschaftsnateile"
stText=stText & chr(10) & " berechnet und in die Dividendenkonten und in"
stText=stText & chr(10) & " die Anteilekonten der Mitglieder eingetragen."
stText=stText & chr(10)
stText=stText & chr(10) & "Ebenso werden die Zinsansprüche aus Mitgliederdarlehen"
stText=stText & chr(10) & " berechnet und in die Projektdaten und Dividendenkonten eingetragen."
stText=stText & chr(10)
stText=stText & chr(10) & "Diese Vorgänge sind nur durch direkte Eingriffe in"
stText=stText & chr(10) & " die Datenbanktabellen oder Enzelarbeit an den betroffenen Konten wieder rückgängig zu machen."
stText=stText & chr(10) & " Deshalb ist hier größte Vorsicht geboten!"
stText=stText & chr(10)
stText=stText & chr(10) & "Im Zweifel schreiben Sie bitte"
stText=stText & chr(10) & " eine kurze Email-Nachfrage an genobase@friege.de"
stText=stText & chr(10)
msgbox (stText,0+64,"Formular 8d-DividendenZentrale")
End Sub
Standard Infos Info_Grundeinstellungen   Basic Info (Procedure) 16
Sub Info_Grundeinstellungen ' 8b
stText = "Anpassungen an die Gegebenheiten der Genossenschaft"
stText=stText & chr(10)
stText=stText & chr(10) & "Die Vorgangsnummern dürfen nicht geändert oder gelöscht werden,"
stText=stText & chr(10) & "weil damit auch bestimme Mechanismen im Programm verknüpf sind!"
stText=stText & chr(10) & "Lediglich die Texte/Satzungsparagraphen sollten angepasst werden."
stText=stText & chr(10)
stText=stText & chr(10) & "Die Spalte ""nicht mehr"" dient der klaren Unterscheidung"
stText=stText & chr(10) & "der Personen mit Mitgliedschaft von den ehemaligen Mitgliedern."
stText=stText & chr(10)
stText=stText & chr(10) & "Sollten durch eine Änderung im Genossenschaftgesetz weitere Vorgänge"
stText=stText & chr(10) & "dokumentiert werden müssen, schreiben Sie bitte eine"
stText=stText & chr(10) & "kurze Email-Nachfrage an genobase@friege.de"
stText=stText & chr(10)
msgbox (stText,0+64,"Formular 8b-GrundEinstellungen")
End Sub
Standard Infos Info_Interessenten   Basic 9a - Interessenten|Hilfe (Control) 13
Sub Info_Interessenten ' 9a
stText = "Aufnahme neuer InteressentInnen"
stText=stText & chr(10)
stText=stText & chr(10) & "ID wird automatisch vergeben."
stText=stText & chr(10) & "Bitte nach Eintrag eines neuen Interessenten oder"
stText=stText & chr(10) & "Korrektur von Eintragungen immer einmal"
stText=stText & chr(10) & "in eine andere Zeile gehen, um die Änderungen zu speichern."
stText=stText & chr(10)
stText=stText & chr(10) & "Datensätze können mit Rechtsklick->Zeilen löschen"
stText=stText & chr(10) & "entsorgt werden."
stText=stText & chr(10)
msgbox (stText,0+64,"Formular 9a-Interessenten")
End Sub
Standard Infos Info_Listendaten   Basic Info (Procedure) 15
Sub Info_Listendaten ' 8a
stText = "Auswahllisten für Adress- und Kontakt-Angaben"
stText=stText & chr(10) & " für Mitglieder UND Interessenten"
stText=stText & chr(10)
stText=stText & chr(10) & "Durch die alphabetische Sortierung fallen"
stText=stText & chr(10) & " Doppeleinträge schnell auf."
stText=stText & chr(10)
stText=stText & chr(10) & "Vor dem Löschen eines Doppeleintrags sollte in der Tabelle"
stText=stText & chr(10) & " ""Adressen"" bzw. ""Kontakte"" nachgeschaut werden,"
stText=stText & chr(10) & " bei welchen Mitlgiedsnummern deren ID schon in Benutzung ist."
stText=stText & chr(10) & " Nach dem Löschen HIER IN DIESEM FORMULAR muss dann"
stText=stText & chr(10) & " bei den Mitgliedern die nun fehlende Angabe nachgetragen werden."
stText=stText & chr(10)
msgbox (stText,0+64,"Formular ListenDatenVerwaltung")
End Sub
Standard Infos Info_Mailmerge   Basic Info (Procedure) 13
Sub Info_Mailmerge ' 7b
stText = "Erzeugung der csv-Dateien für Thunderbird-Mailmerge"
stText=stText & chr(10)
stText=stText & chr(10) & "Die Beschriftung der Schaltflächen gibt den Namen der"
stText=stText & chr(10) & " dazugehörigen Abfrage und den Namen"
stText=stText & chr(10) & " der produzierten csv-Datei an."
stText=stText & chr(10)
stText=stText & chr(10) & "Bei Bedarf helfe ich gerne bei der Erstellung"
stText=stText & chr(10) & " weiterer Abfragen und Schaltflächen:"
stText=stText & chr(10) & "=> kurze Email-Nachfrage an genobase@friege.de"
stText=stText & chr(10)
msgbox (stText,0+64,"Formular 7b-Mailmerge")
End Sub
Standard Infos Info_Mitglieder   Basic Info (Procedure) 21
Sub Info_Mitglieder ' 1
stText = "Aufnahme neuer Mitglieder, Vergabe der Mitgliedsnummer."
stText=stText & chr(10)
stText=stText & chr(10) & "Mitgliedsnummern werden niemals neu vergeben!"
stText=stText & chr(10) & " (siehe Vorgänge im Formular ""4-MitgliedsAnteile""!"
stText=stText & chr(10)
stText=stText & chr(10) & "Namens-Angaben sollten zu den BZSt-Vorgaben kompatibel sein:"
stText=stText & chr(10) & "- Es dürfen weder unter Nachname noch unter Vorname"
stText=stText & chr(10) & "irgendwelche Titel eingetragen werden!"
stText=stText & chr(10) & "- Auch bei Eheleuten ist nur eine/r VertragsinhaberIn."
stText=stText & chr(10) & "- Geburtsdatum muss korrekt angegeben werden."
stText=stText & chr(10)
stText=stText & chr(10) & "Auch bei Ausscheiden eines Mitglieds"
stText=stText & chr(10) & " müssen Mitgliedsnummer und Namen erhalten bleiben."
stText=stText & chr(10)
stText=stText & chr(10) & "Bitte nach Eintrag eines neuen Mitglieds oder"
stText=stText & chr(10) & " Korrektur von Eintragungen immer einmal"
stText=stText & chr(10) & " in eine andere Zeile gehen, um die Änderungen zu speichern."
stText=stText & chr(10)
msgbox (stText,0+64,"Formular 1-Mitglieder")
End Sub
Standard Infos Info_MitgliederAdressen   Basic Info (Procedure) 9
Sub Info_MitgliederAdressen ' 2
stText = "Diese Angaben sollten zu den BZSt-Vorgaben kompatibel sein:"
stText=stText & chr(10) & "Insbesondere müssen die PLZ und Ort des Meldewohnsitzes"
stText=stText & chr(10) & " (Hauptwohnsitz) korrekt angegeben werden."
stText=stText & chr(10) & "Als Hausnummer ist nur eine Zahl zulässig,"
stText=stText & chr(10) & " weitere Angaben gehören unter ""Zusatz""."
stText=stText & chr(10)
msgbox (stText,0+64,"Formular MitgliederAdressen")
End Sub
Standard Infos Info_MitgliederBankdaten   Basic Info (Procedure) 9
Sub Info_MitgliederBankdaten ' 3
stText = "Wichtig sind KontoinhaberIn und die richtige IBAN."
stText=stText & chr(10) & "IBAN kann mit Leerstellen lesbarer gemacht werden:"
stText=stText & chr(10) & "DEnn nnnn nnnn nnnn nnnn nn"
stText=stText & chr(10) & ""
stText=stText & chr(10) & "Vor jeder (Dividenden-)Überweisung sollten die IBANs kontrolliert werden."
stText=stText & chr(10)
msgbox (stText,0+64,"Formular MitgliederBankdaten")
End Sub
Standard Infos Info_Mitgliederbriefe   Basic Info (Procedure) 10
Sub Info_Mitgliederbriefe ' 7a
stText = "Mögliche Verwendung einer weiblich und einer männlich/neutral"
stText=stText & chr(10) & " formulierten Brief-Vorlage mit dazugehörigen Abfragen"
stText=stText & chr(10) & " ergibt eine Fehlermeldung wegen eines leeren Datensatzes."
stText=stText & chr(10)
stText=stText & chr(10) & "Wird die Frage ""Trotzdem weitere Briefe erstellen?"" "
stText=stText & chr(10) & " mit JA beantwortet unterbleiben weitere Fehlermeldungen."
stText=stText & chr(10)
msgbox (stText,0+64,"Formular 7a-MitgliederBriefe")
End Sub
Standard Infos Info_Mitgliedsanteile   Basic Info (Procedure) 15
Sub Info_Mitgliedsanteile ' 4
stText =stText & "TagEintrag=Tag des Vorstandsbeschlusses,"
stText=stText & chr(10) & "TagZahlung=Tag des vollständigen Zahlungseingangs."
stText=stText & chr(10)
stText=stText & chr(10) & "VID 12 (Ratenzahlung): für Neuanlage nur Tag.Eintrag und ggf. Bemerkungen eintragen."
stText=stText & chr(10) & " Dann Schaltfläche ""Ratendaten anlegen"" betätigen und alles weitere im Ratenkonto."
stText=stText & chr(10) & " Tag der letzten Rate als Tag.Zahlung bei zugehöriger VID=2 bzw. VID=3 eintragen."
stText=stText & chr(10)
stText=stText & chr(10) & "VID 20: Einträge werden nur von 8d-DividendenZentrale vorgenommen."
stText=stText & chr(10)
stText=stText & chr(10) & "VID 50: nur Tag.Eintrag und ggf. Bemerkungen eintragen,"
stText=stText & chr(10) & " alle weiteren Angaben werden in 5c-Dividendenkonten eingetragen."
stText=stText & chr(10)
msgbox (stText,0+64,"Formular 4-MitgliedsAnteile")
End Sub
Standard Infos Info_ProjekteEinstellungen   Basic Info (Procedure) 8
Sub Info_ProjekteEinstellungen ' 8c
stText = "Grundlagen für Mitglieder-Projekte, z.B. Mitgliederdarlehen"
stText=stText & chr(10)
stText=stText & chr(10) & "Die Projektnummer ""0"" ist für die Mitgliedschaft reserviert,"
stText=stText & chr(10) & " darf also nicht für ein reales Projekt vergeben werden!"
stText=stText & chr(10)
msgbox (stText,0+64,"Formular 8c-ProjekteEinstellungen")
End Sub
Standard Infos Info_ProjektKonten   Basic Info (Procedure) 8
Sub Info_ProjektKonten ' 5b
stText = "TagEintrag=Tag des Vorstandsbeschlusses"
stText=stText & chr(10) & "TagZahlung=Tag des vollständigen Zahlungsein-/ausgangs."
stText=stText & chr(10)
stText=stText & chr(10) & "P-ID und V-ID: Festlegungen im Formular 8c-ProjekteEinstellungen."
stText=stText & chr(10)
msgbox (stText,0+64,"Formular 5b-ProjektKonten")
End Sub
Standard Infos Info_RatenKonten   Basic Info (Procedure) 10
Sub Info_RatenKonten ' 5a
stText = "Die Neuanlage (2-Sollstellung) wird mit der Schaltfläche im 4-Anteilekonto durchgeführt."
stText=stText & chr(10) & "Der abzahlende Betrag (ggf. mit Eintrittsgeld) wird "
stText=stText & chr(10) & " mit Minuszeichen manuell in dieser Zeile eingetragen."
stText=stText & chr(10)
stText=stText & chr(10) & "Tag des Eingangs der letzten Rate (6-Anteil(e) fertig) im Anteilekonto"
stText=stText & chr(10) & " manuell als Tag.Zahlung bei zugehöriger VID=2 bzw. VID=3 eintragen."
stText=stText & chr(10)
msgbox (stText,0+64,"Formular 5a-RatenKonten")
End Sub
Standard Infos Info_SEPA_Einstellungen   Basic Info (Procedure) 17
Sub Info_SEPA_Einstellungen ' 8h
stText = "Vorbereitung der Überweisungs-Aktionen"
stText=stText & chr(10)
stText=stText & chr(10) & "Jede Überweisungsaktion erfolgt auf Grundlage eines Datensatzes"
stText=stText & chr(10) & " in der Dividenden-Historie (Formular 8d-DividendenZentrale)."
stText=stText & chr(10) & " Dem werden hier notwendige Daten für die Einreichung der xml-Datei"
stText=stText & chr(10) & " hinzugefügt."
stText=stText & chr(10)
stText=stText & chr(10) & "Für misslungene (Einzel-)Überweisungen sollte die Wiederholung"
stText=stText & chr(10) & " denselben Datensatz der Dividenden-Historie benutzen."
stText=stText & chr(10) & " Eine entsrechende Kennzeichnung könnte dann im Feld"
stText=stText & chr(10) & " MSGID oder PMTINFID erfolgen."
stText=stText & chr(10)
stText=stText & chr(10) & "Im Zweifel schreiben Sie bitte"
stText=stText & chr(10) & "eine kurze Email-Nachfrage an genobase@friege.de"
msgbox (stText,0+64,"Formular 8b-GrundEinstellungen")
End Sub
Standard Infos Info_Steuerdaten   Basic Info (Procedure) 12
Sub Info_Steuerdaten ' 8e
stText = "Steuerliche ID-Nummer und Kirchensteuerangaben werden vom Formular"
stText=stText & chr(10) & " 8g-BZStOnline eingetragen."
stText=stText & chr(10) & " Dazu müssen in der Tabelle ""SteuerDaten"" eventuell"
stText=stText & chr(10) & " noch fehlende Mitgliedsnummern (von neuen Mitgliedern) vorher ergänzt werden."
stText=stText & chr(10)
stText=stText & chr(10) & "Freistellungsaufträge und Nichtveranlagungsbescheinigungen"
stText=stText & chr(10) & " werden in 5c-Dividendenkonten eingetragen"
stText=stText & chr(10) & " und mit ""Steuerdaten übernehmen"" hierher übertragen."
stText=stText & chr(10)
msgbox (stText,0+64,"Formular 8e-Steuerdaten")
End Sub
Standard Infos Info_StromGas   Basic 6 - MitgliederStromGas|Hilfe (Control)
9c - InteressentenStromGas|Hilfe (Control)
Info (Procedure)
11
Sub Info_StromGas ' 6 und 9c
stText = "Daten nur zur eigenen Dokumentation und Abgleich mit den Daten des Versorgers."
stText=stText & chr(10)
stText=stText & chr(10) & "Status ""Familie"": kein eigener Vertrag, also Anzahl der Zähler = 0"
stText=stText & chr(10) & "- dient nur der Verhinderung von unsinniger Werbung!"
stText=stText & chr(10)
stText=stText & chr(10) & "Ist VertragsinhaberIn kein Mitglied, muss er/sie"
stText=stText & chr(10) & " im Formular ""9c-InteresssentenStromGas"" eingetragen werden."
stText=stText & chr(10)
msgbox (stText,0+64,"Formular Strom-/Gasverträge")
End Sub
Standard Navigation Ansicht100   Basic Hauptformular_oeffnen (Procedure)
Formular_Direktstart (Procedure)
Zu_Formular_von_Formular (Procedure)
Zu_Formular_von_Formular_mit_Ordner (Procedure)
8
sub Ansicht100
' muss VOR dem Wechsel zum neuen Formular aufgerufen werden!
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:Zoom100Percent", "", 0, Array())
end sub
Standard Navigation Fenster_mini   Basic Formular_Direktstart (Procedure) 10
SUB Fenster_mini
DIM oFrame AS OBJECT
DIM oWin AS OBJECT
wait 10
oFrame = StarDesktop.getCurrentFrame()
'oFrame.setTitle "Mitglieder und InteressentInnen"
oWin = oFrame.getContainerWindow()
wait 10
oWin. IsMinimized = true
END SUB
Standard Navigation Fenstergroesse   Basic StartFormular_close (Procedure) 17
SUB Fenstergroesse
DIM oFrame AS OBJECT
DIM oWin AS OBJECT
DIM oLayoutMng AS OBJECT
DIM aElemente()
wait 100
oFrame = StarDesktop.getCurrentFrame()
'oFrame.setTitle "Mitglieder und InteressentInnen"
oWin = oFrame.getContainerWindow()
wait 10
' Xray(oWin)
oWin.setPosSize(0,0,800,600,15)
' x, y, Breite,Höhe, Flag mit
' Flag= Summe von x=1, y=2, Breite=4, Höhe=8
' oWin. IsMaximized = true
' oWin. IsMinimized = true
END SUB
Standard Navigation Formular_Direktstart   Basic GENOBASEv40x_LEER.odb (Database) 16
SUB Formular_Direktstart
' Beim Starten des Programms wird sofort das START-Formular geöffnet,
' wenn dieses Makro unter Extras - Anpassen - Ereignisse - Dokument öffnen
' eingetragen wurde.
DIM oDatenquelle AS OBJECT
wait 1000
oDatenquelle = ThisDatabaseDocument.CurrentController
If NOT ( oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
Fenster_mini
' Fenstergroesse
Symbolleisten_Ausblenden
Ansicht100
ThisDatabaseDocument.FormDocuments.getByName( "0 - START").open
END SUB
Standard Navigation Hauptformular_oeffnen   Basic   5
SUB Hauptformular_oeffnen
Symbolleisten_Ausblenden
Ansicht100
ThisDatabaseDocument.FormDocuments.getByName( "0 - START" ).open
END SUB
Standard Navigation StartFormular_close   Basic 0 - START|Schaltfläche_fertig (Control) 7
SUB StartFormular_close
DIM stTag AS STRING
' Fenstergroesse
ThisDatabaseDocument.FormDocuments.getByName( "0 - START" ).close
Fenstergroesse
Symbolleisten_Einblenden
END SUB
Standard Navigation Symbolleisten_Ausblenden   Basic Hauptformular_oeffnen (Procedure)
Formular_Direktstart (Procedure)
Zu_Formular_von_Formular (Procedure)
23
SUB Symbolleisten_Ausblenden 'z.B. beim Öffnen des Formulars
' bei Extras - Anpassen ... - Ereignisse eintragen!
DIM oFrame AS OBJECT
DIM oWin AS OBJECT
DIM oLayoutMng AS OBJECT
DIM aElemente()
' wait 100
oFrame = StarDesktop.getCurrentFrame()
oFrame.setTitle "Mitglieder und InteressentInnen"

oLayoutMng = oFrame.LayoutManager
aElemente = oLayoutMng.getElements()
FOR i = LBound(aElemente) TO UBound(aElemente)
IF aElemente(i).ResourceURL = "private:resource/toolbar/formsnavigationbar" THEN
'IF aElemente(i).ResourceURL = "private:resource/toolbar/menubar" THEN
' oLayoutMng.hideElement( aElemente(i).ResourceURL)
ELSE
' msgbox aElemente(i).ResourceURL
oLayoutMng.hideElement( aElemente(i).ResourceURL)
END IF
NEXT

END SUB
Standard Navigation Symbolleisten_Ausblenden_I   Basic   23
SUB Symbolleisten_Ausblenden_I 'z.B. beim Öffnen des Formulars
' bei Extras - Anpassen ... - Ereignisse eintragen!
DIM oFrame AS OBJECT
DIM oWin AS OBJECT
DIM oLayoutMng AS OBJECT
DIM aElemente()

oFrame = StarDesktop.getCurrentFrame()
oFrame.setTitle "InteressentInnen-Verwaltung"

oLayoutMng = oFrame.LayoutManager
aElemente = oLayoutMng.getElements()
FOR i = LBound(aElemente) TO UBound(aElemente)
' msgbox aElemente(i).ResourceURL
IF aElemente(i).ResourceURL = "private:resource/toolbar/formsnavigationbar" THEN
'IF aElemente(i).ResourceURL = "private:resource/toolbar/standardbar" THEN
ELSE
' msgbox aElemente(i).ResourceURL
oLayoutMng.hideElement( aElemente(i).ResourceURL)
END IF
NEXT

END SUB
Standard Navigation Symbolleisten_Ausblenden_M   Basic   24
SUB Symbolleisten_Ausblenden_M 'z.B. beim Öffnen des Formulars
' bei Extras - Anpassen ... - Ereignisse eintragen!
DIM oFrame AS OBJECT
DIM oWin AS OBJECT
DIM oLayoutMng AS OBJECT
DIM aElemente()

oFrame = StarDesktop.getCurrentFrame()
oFrame.setTitle "Mitgliederverwaltung"

oLayoutMng = oFrame.LayoutManager
aElemente = oLayoutMng.getElements()
FOR i = LBound(aElemente) TO UBound(aElemente)

IF aElemente(i).ResourceURL = "private:resource/toolbar/formsnavigationbar" THEN
' oLayoutMng.hideElement( aElemente(i).ResourceURL)

ELSE
' msgbox aElemente(i).ResourceURL
oLayoutMng.hideElement( aElemente(i).ResourceURL)
END IF
NEXT

END SUB
Standard Navigation Symbolleisten_Einblenden   Basic Über...|Schaltfläche 1 (Control)
StartFormular_close (Procedure)
20
SUB Symbolleisten_Einblenden
DIM oFrame AS OBJECT
DIM oLayoutMng AS OBJECT
DIM aElemente()
wait 100
oFrame = StarDesktop.getCurrentFrame()
oLayoutMng = oFrame.LayoutManager
aElemente = oLayoutMng.getElements()

'Xray(aElemente)
'FOR i = LBound(aElemente) TO UBound(aElemente)
'oLayoutMng.showElement(aElemente(i).ResourceURL)
'NEXT

' eventuell fehlende wichtige Elemente:
' "private:resource/toolbar/standardbar"
' "private:resource/statusbar/statusbar"
' oLayoutMng.showElement("private:resource/toolbar/standardbar")
oLayoutMng.showElement("private:resource/menubar/menubar")
END SUB
Standard Navigation Zu_Formular_von_Formular   Basic 0 - START|Schaltfläche_Back (Control)
0 - START|Schaltfläche_Interessenten_Briefe (Control)
0 - START|Schaltfläche_Briefe (Control)
0 - START|Schaltfläche_StromGas_Mitglieder (Control)
0 - START|Schaltfläche_Bankdaten (Control)
0 - START|Schaltfläche_StromGas_Interessenten (Control)
0 - START|Schaltfläche_Aufnahme (Control)
0 - START|Schaltfläche_Kontakte_Interessenten (Control)
0 - START|Schaltfläche_Dividenden (Control)
0 - START|Schaltfläche_Anteile (Control)
0 - START|Schaltfläche_LDV (Control)
0 - START|Schaltfläche_Raten (Control)
0 - START|Schaltfläche_Aufnahme_Interessenten (Control)
0 - START|Schaltfläche_Kontakte_Mitglieder (Control)
0 - START|Schaltfläche_Projekte (Control)
0 - START|Schaltfläche_MMT (Control)
1 - Mitglieder|Schaltfläche zuAdressen (Control)
1 - Mitglieder|Schaltfläche START (Control)
2 - MitgliederAdressen|Schaltfläche Bankdaten (Control)
2 - MitgliederAdressen|Schaltfläche Listendaten (Control)
2 - MitgliederAdressen|Schaltfläche START (Control)
3 - MitgliederBankdaten|Schaltfläche Anteile (Control)
3 - MitgliederBankdaten|Schaltfläche START (Control)
4 - MitgliedsAnteile|zumDividendenkonto (Control)
4 - MitgliedsAnteile|zumProjektekonto (Control)
4 - MitgliedsAnteile|Schaltfläche START (Control)
4 - MitgliedsAnteile|zumRatenkonto (Control)
5a - RatenKonten|Schaltfläche START (Control)
5a - RatenKonten|zumAnteilekonto (Control)
5b - ProjektKonten|zumDividendenkonto (Control)
5b - ProjektKonten|Schaltfläche START (Control)
5b - ProjektKonten|zumAnteilekonto (Control)
5c - DividendenKonten|zumProjektekonto (Control)
5c - DividendenKonten|zuSteuerdaten (Control)
5c - DividendenKonten|zumAnteilekonto (Control)
5c - DividendenKonten|Schaltfläche START (Control)
6 - MitgliederStromGas|Schaltfläche START (Control)
7a - MitgliederBriefe|Schaltfläche START (Control)
7b - Mailmerge|Schaltfläche START1 (Control)
8 - BACKOFFICE|Schaltfläche_IBAN (Control)
8 - BACKOFFICE|Schaltfläche_Einstellungen Projekte (Control)
8 - BACKOFFICE|Schaltfläche_SteuerDaten (Control)
8 - BACKOFFICE|Schaltfläche_BZStGrundeinstellungen (Control)
8 - BACKOFFICE|Schaltfläche_Grundeinstellungen (Control)
8 - BACKOFFICE|Schaltfläche_Dividenden (Control)
8 - BACKOFFICE|Schaltfläche_SEPAGrundeinstellungen (Control)
8 - BACKOFFICE|Schaltfläche_BZStOnline (Control)
8 - BACKOFFICE|Schaltfläche_SEPA (Control)
8 - BACKOFFICE|Schaltfläche_Zurueck (Control)
8a - ListenDatenVerwaltung|Schaltfläche START (Control)
8b - Grundeinstellungen|Schaltfläche BACK (Control)
8c - ProjekteEinstellungen|Schaltfläche BACK (Control)
8d - DividendenZentrale|zuSteuerdaten (Control)
8d - DividendenZentrale|Schaltfläche BACK (Control)
8e - SteuerDaten|SchaltflächezuDividZ (Control)
8e - SteuerDaten|zumDividendenkonto (Control)
8e - SteuerDaten|Schaltfläche BACK (Control)
8f - BZStEinstellungen|Schaltfläche BACK (Control)
8g - BZStOnline|zuSteuerdaten (Control)
8g - BZStOnline|Schaltfläche BACK (Control)
8h - SEPAEinstellungen|zuUeberweisungen (Control)
8h - SEPAEinstellungen|Schaltfläche BACK (Control)
8i - Ueberweisungen|zumDividendenkonto (Control)
8i - Ueberweisungen|zuSEPAEinstellungen (Control)
8i - Ueberweisungen|Schaltfläche BACK (Control)
8j - IBAN|zumBankDaten (Control)
8j - IBAN|Schaltfläche BACK (Control)
9a - Interessenten|Schaltfläche zuAdressen (Control)
9a - Interessenten|Schaltfläche START (Control)
9b - InteressentenAdressen|Schaltfläche START (Control)
9b - InteressentenAdressen|Schaltfläche zu StromGas (Control)
9b - InteressentenAdressen|Schaltfläche Listendaten (Control)
9c - InteressentenStromGas|Schaltfläche START (Control)
9d - InteressentenBriefe|Schaltfläche START (Control)
Über...|Schaltfläche START1a (Control)
12
REM Hiermit wird das Formular geöffnet, das als nächstes bearbeitet werden soll.
REM Gleichzeitig wird das aktuelle Formular geschlossen.
SUB Zu_Formular_von_Formular(oEvent AS OBJECT)
Ansicht100
DIM stTag AS STRING
stTag = oEvent.Source.Model.Tag 'Tag wird unter den Zusatzinformationen eingegeben
aForms() = Split(stTag, ",") 'Hier steht zuerst der Formularname für das neue Formular, dann der für das alte Formular
ThisDatabaseDocument.FormDocuments.getByName( Trim(aForms(0)) ).open
' Fenstergroesse
Symbolleisten_Ausblenden
ThisDatabaseDocument.FormDocuments.getByName( Trim(aForms(1)) ).close
END SUB
Standard Navigation Zu_Formular_von_Formular_mit_Ordner   Basic   21
SUB Zu_Formular_von_Formular_mit_Ordner(oEvent AS OBJECT)
Ansicht100
REM Das zu öffenende Formular wird als erstes angegeben.
REM Liegt ein Formular in einem Ordner, so ist die Beziehung über "/" zu definieren,
REM so dass der Unterordner zu finden ist.
DIM stTag AS STRING
stTag = oEvent.Source.Model.Tag 'Tag wird unter den Zusatzinformationen eingegeben
aForms() = Split(stTag, ",") 'Hier steht zuerst der Formularname für das neue Formular, dann der für das alte Formular
aForms1() = Split(aForms(0),"/")
aForms2() = Split(aForms(1),"/")
IF UBound(aForms1()) = 0 THEN
ThisDatabaseDocument.FormDocuments.getByName( Trim(aForms1(0)) ).open
ELSE
ThisDatabaseDocument.FormDocuments.getByName( Trim(aForms1(0)) ).getByName( Trim(aForms1(1)) ).open
END IF
IF UBound(aForms2()) = 0 THEN
ThisDatabaseDocument.FormDocuments.getByName( Trim(aForms2(0)) ).close
ELSE
ThisDatabaseDocument.FormDocuments.getByName( Trim(aForms2(0)) ).getByName( Trim(aForms2(1)) ).close
END IF
END SUB
Standard Projekte ProjektdatenEintragen   Basic 8d - DividendenZentrale|SchaltflächeProjekte (Control) 191
REM Aufruf aus dem Formular DividendenZentrale.
REM Holt die Daten der gewählten Zeile und trägt sie in ALLE ProjekteKonten
REM der aktuellen Projektnummer (Tabelle "Projektdaten") ein, dann in "Dividenden"
SUB ProjektdatenEintragen(oEvent AS OBJECT)
stSerie = oEvent.Source.Model.Tag
oPForm = oEvent.Source.Model.Parent
oConnection = oPForm.activeConnection()
oSQL_Statement = oConnection.createStatement()
' hole erst die Daten aus der aktuellen Tabellenzeile
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Formular_Start")
oFeld = oForm.getByName("TabellenElementDividendenHistorie")
oSpalte=oFeld.getByName("DatF_TagEintrag")
TagEintrag = oSpalte.CurrentValue
oSpalte=oFeld.getByName("DatF_TagZahlung")
TagZahlung = oSpalte.CurrentValue
oSpalte=oFeld.getByName("NF_AusProzent")
AusProzent = oSpalte.CurrentValue
oSpalte=oFeld.getByName("NF_KEStproz")
KEStProzent = oSpalte.CurrentValue
oSpalte=oFeld.getByName("NF_Soliproz")
SoliProzent = oSpalte.CurrentValue
oSpalte=oFeld.getByName("NF_PV")
PVorgangID = oSpalte.CurrentValue
oSpalte=oFeld.getByName("TF_VWZ")
VWZweck = oSpalte.CurrentValue 'in Dividenden ist das "Kennungen" -> UStrID
oSpalte=oFeld.getByName("NF_ProjektID")
stAktProjekt = oSpalte.CurrentValue
msgbox "aktuelle Projektnummmer: " & staktProjekt
' einige Formatierungen für sql
f_dat = TagEintrag.Year & "-" & TagEintrag.Month & "-" & TagEintrag.Day ' DateValue("2017-09-03")
f_datZ = TagZahlung.Year & "-" & TagZahlung.Month & "-" & TagZahlung.Day
f_ausproz = join(split(AusProzent, ","), ".")
f_kestproz = join(split(KEStProzent, ","), ".")
f_soliproz = join(split(SoliProzent, ","), ".")
' hole die Mitgliedsnummern mit dieser ProjektID aus der Tabelle ProjektDaten
oSQL_StatementmNRD = oConnection.createStatement()
oSQL_StatementmNRD.ResultSetType =com.sun.star.sdbc.ResultSetType.SCROLL_SENSITIVE
stSql_mNRD = " SELECT ""Mitgliedsnummer"" FROM ""ProjektDaten"" WHERE ""ProjektDaten"".""ProjektID"" = '" + staktProjekt + "' AND ""ProjektDaten"".""ProjVID"" = '1' "
' msgbox stSql_mNRD
oResultmNRD = oSQL_StatementmNRD.executeQuery(stSql_mNRD)
REM wieviele Personen haben Nachrangdarlehen mit Projekt_aktID?
WHILE oResultmNRD.next
WEND
anzNRD = oResultmNRD.Row - 1
msgbox "Anzahl der Mitglieder mit Projektnummer " & staktProjekt & " : " & anzNRD
DIM mitNRDListe(anzNRD) 'nimmt die Nachrang-MitgliedsNummern auf (Positivliste!)
'msgbox anzNRD & " Mitglieder mit NRD"
oResultmNRD.first
jn=1
mitNRDListe(jn) = oResultmNRD.getInt(1)
'msgbox jn & ": " & mitNRDListe(jn)
WHILE oResultmNRD.next
jn = jn + 1
mitNRDListe(jn) = oResultmNRD.getInt(1)
'msgbox jn & ": " & mitNRDListe(jn)
WEND
'Mitgliedsnummern-Bereich aus der Tabelle von_bis holen:
stSql = "SELECT * FROM ""von_bis"" WHERE ""ID"" = '0'"
oResult = oSQL_Statement.executeQuery(stSql)
oResult.next
oColumns = oResult.columns()
IF oColumns.hasByName("von") THEN indexvon = oColumns.findColumn("von")
stvon = oResult.getInt(indexvon)
IF oColumns.hasByName("bis") THEN indexbis = oColumns.findColumn("bis")
stbis = oResult.getInt(indexbis)
msgbox stvon & " - " & stbis

janein = msgbox("Sind wirklich ALLE Nichtveranlagungsdaten" & Chrund3) & "und Freistellungsaufträge" & Chreingetragenngetragen Im,256+32+4,"Im Zweifel bitte JETZT NEIN sagen!")
if janein = 7 then goto Labelraus

i = 1
txanzahl = 0
stMitglListe = "Einträge für Mitgliedsnummer " & chr(10)
REM ====================================
REM Schleife bis LOOP
REM ====================================
DO WHILE (i < anzNRD+1) ' bis LOOP

stMitgl = mitNRDListe(i)

IF (stMitgl >= stvon) AND (stMitgl <= stbis) THEN

REM hole aus der Tabelle ProjektDaten die Vertragsdaten (ProjVID =1) für das laufende Mitglied
' stSql_VID1 = " SELECT * FROM ""ProjektDaten"" WHERE ""ProjektDaten"".""ProjVID"" = '1' AND ""ProjektDaten"".""Mitgliedsnummer"" = '" + stMitgl + "' AND ""ProjektDaten"".""ProjekID"" = '" + staktProjekt + "' "
stSql_VID1 = " SELECT * FROM ""ProjektDaten"" WHERE ""ProjVID"" = '1' AND ""Mitgliedsnummer"" = '" + stMitgl + "' AND ""ProjektID"" = '" + staktProjekt + "' "
'msgbox stSql_VID1
oResult = oSQL_Statement.executeQuery(stSql_VID1)
oResult.next
'xray oResult

oColumns = oResult.columns()
'Xray oResult
IF oColumns.hasByName("Betrag") THEN inIndex = oColumns.findColumn("Betrag")
stBetrag=oResult.getInt(inIndex)
msgbox "Mitglied " & stMitgl & " Betrag: " & stBetrag

REM AusProzent wurde oben aus der Tabelle im Formular genommen
Ausschuettung = stBetrag * AusProzent / 100
f_kapertrag = join(split(Ausschuettung, ","), ".") 'ersetzt , durch .

REM GrundEintrag in "ProjektDaten" : VorgangID =3 (Dividende) oder 4 (Tilgung) oder 5 (Tilgung+Dividende)
stSql = "INSERT INTO ""ProjektDaten"" (""Mitgliedsnummer"",""ProjektID"",""ProjVID"",""Datum"",""Betrag"",""ProjVID"")"
stSql = stSql & " VALUES('" + stMitgl + "','" + stAktProjekt + "','3','" + f_dat + "','" + f_kapertrag + "','" + PVorgangID + "')"
'msgbox stSql
oResult = oSQL_Statement.executeQuery(stSql)

REM hole die weiteren individuellen Angaben aus der Tabelle SteuerDaten
stSql = "SELECT * FROM ""SteuerDaten"" WHERE ""Mitgliedsnummer"" = " + i
oResult = oSQL_Statement.executeQuery(stSql)
While oResult.next
' xray oResult ' andere Möglichkeit: FSARest = oResult.getByName("FSARest").Float
MitNr = oResult.getInt(1) ' "Mitgliedsnummer"
KiStproz = oResult.getFloat(4) ' "KiStproz"
isNV = oResult.getBoolean(5) ' "NV"
isFSA = oResult.getBoolean(7) ' "FSA"
FSARest = oResult.getFloat(9) ' "FSARest" wird am Ende ggf. nach unten korrigiert
Wend

InAnspruch = 0
SPAusschuettung = Ausschuettung
if isFSA then
FSARestneu = FSARest - Ausschuettung
if FSARestneu < 0 then
FSARestneu = 0
SPAusschuettung = Ausschuettung - FSARest 'steuerpflichtig
InAnspruch = FSARest
else
SPAusschuettung = 0 'steuerpflichtig=0
InAnspruch = Ausschuettung
end if
' msgbox "steuerpflichtig=" & SPAusschuettung & " (alter)Rest=" & FSARest & " neuerRest=" & FSARestneu & " inAnspruchgenommen=" & InAnspruch
end if

KESt = SPAusschuettung * KEStProzent / 100
KiSt = KESt * KiStproz / 100
SoliZu = KESt * SoliProzent / 100

REM Sonderausgabe-Kirchensteuer-Korrektur
KESt2 = KESt / (1 + (KiStproz / 100) * (KEStProzent / 100))

Auszahlung = Ausschuettung - KESt2 - SoliZu - KiSt
' msgbox " Ausschuettung= " & Ausschuettung & " KESt2= " & KESt2 & " SoliZu= " & SoliZu & " KiSt= " & KiSt & " Auszahlung= " & Auszahlung

f_kistproz = join(split(KiStproz, ","), ".") 'ersetzt , durch .
f_kist = join(split(KiSt, ","), ".") 'ersetzt , durch .
f_soli = join(split(SoliZu, ","), ".") 'ersetzt , durch .

InAnspruch = InAnspruch * (-1) ' soll bei DividID=1 als FSABetrag mit Minuszeichen erscheinen
' msgbox "InAnspruch: " & InAnspruch
f_fsa = join(split(InAnspruch, ","), ".") 'ersetzt , durch .
f_fsarest = join(split(FSARestneu, ","), ".") 'ersetzt , durch .
f_kest2 = join(split(KESt2, ","), ".") 'ersetzt , durch .
f_auszahl = join(split(Auszahlung, ","), ".") 'ersetzt , durch .

REM Eintrag in "Dividenden" mit DividID = 2 ("andere Kapitalerträge")
stSql = "INSERT INTO ""Dividenden"" (""Mitgliedsnummer"",""DividID"",""TagEintrag"",""KapErtr"",""KapErtrSt"",""Soli"",""KiSt"",""Kennung"",""Auszahlung"",""AusProzent"",""KEStproz"",""Soliproz"",""KiStproz"",""FSABetrag"",""ausgezahlt"",""ProjektID"")"
stSql = stSql & " VALUES('" + stMitgl + "','2','" + f_dat + "','" + f_kapertrag + "','" + f_kest2 + "','" + f_soli + "','" + f_kist + "','" + VWZweck + "','" + f_auszahl + "','" + f_ausproz + "','"+ f_kestproz + "','" + f_soliproz + "','" + f_kistproz + "','" + f_fsa + "', FALSE,'" + stAktProjekt + "')"


' stSql = "INSERT INTO ""Dividenden"" (""ausgezahlt"",""Mitgliedsnummer"",""DividID"",""Kennung"",""TagEintrag"",""AnteileSaldo"",""KEStproz"",""Soliproz"",""KiStproz"",""AusProzent"",""KapErtr"",""KapErtrSt"",""Soli"",""KiSt"",""FSABetrag"",""Auszahlung"" )"
' stSql = stSql & " VALUES('FALSE','" + MitNr + "','1','" + VWZweck + "','" + f_dat + "','" + AnteileSumme + "','" + f_kestproz + "','" + f_soliproz + "','" + f_kistpro + "','" + f_ausproz + "','"+ f_ausschuett + "','" + f_kest2 + "','" + f_soli + "','" + f_kist + "','" + f_fsa + "','" + f_auszahl + "')"

'msgbox stSql
oResult = oSQL_Statement.executeQuery(stSql)
stMitglListe = stMitglListe & stMitgl & ", "
txanzahl = txanzahl + 1
END IF ' stMitgl im von-bis-Bereich
i = i + 1
LOOP

Select Case txanzahl
Case 0
msgbox ("Kein Datensatz geschrieben.",64,"Dividenden-Eintragung")
Case 1
msgbox ("Ein Datensatz geschrieben.",64,"Dividenden-Eintragung")
msgbox ("Einträge für Mitgliedsnummer " & stMitgl,64,"Dividenden-Eintragung")
Case Else
msgbox (txanzahl & " Datensätze geschrieben.",64,"Dividenden-Eintragung")
msgbox (stMitglListe,64,"Dividenden-Eintragung")
End Select

REM aktuell wieder auf Anfangswert:
stSql = "UPDATE ""von_bis"" SET ""aktuell"" ='" + stvon + "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)
oPForm.reload()
wait 100

Labelraus:
END SUB
Standard Projekte ProjektID_lesen   Basic 8d - DividendenZentrale|TabellenElementDividendenHistorie (Control) 39
SUB ProjektID_lesen(oEvent AS OBJECT) 'im Formular DividendenZentrale
DIM stTag AS STRING
stTag = oEvent.Source.Model.Tag 'Tag wird unter den Zusatzinformationen eingegeben
' 'Dividenden oder Projekte
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oForm2 AS OBJECT
DIM oFeld AS OBJECT
DIM oButton0 AS OBJECT
DIM oButton50 AS OBJECT
DIM oSpalte AS OBJECT
oDatenquelle = ThisComponent.Parent.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oVerbindung = oDatenquelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement()

oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Formular_Start")
oFeld = oForm.getByName("TabellenElementDividendenHistorie")
oSpalte=oFeld.getByName("NF_ProjektID") ' enthält die ProjektID
REM Hier könnten Aktionen in Anhängigkeit von der Projekt-ID gestartet werden,
REM z.B. Schaltflächen sichtbar/unsichtbar geschaltet werden.
oForm2 = oDrawpage.forms.getByName("Formular_Serie") 'enthält die Buttons
oButton0 = oForm2.getByName("SchaltflächeAnteile")
oButton50 = oForm2.getByName("SchaltflächeProjekte")
oButton0.EnableVisible = FALSE
oButton50.EnableVisible = FALSE
SELECT CASE oSpalte.CurrentValue
CASE 0
oButton0.EnableVisible = TRUE
CASE ELSE
oButton50.EnableVisible = TRUE
END SELECT

END SUB
Standard Projekte test   Basic   235
SUB test
REM stSerie = "Projekte???"

oPForm = oEvent.Source.Model.Parent
oVerbindung = oPForm.activeConnection()

oSQL_Statement = oVerbindung.createStatement()
stSql = " SELECT ""Integer"" FROM ""Projekt_aktID"" WHERE ""ID"" = 0 "
oResult = oSQL_Statement.executeQuery(stSql)
oResult.next
stProjekt = oResult.getInt(1)
msgbox "aktuelle Projektnummmer: " & stProjekt

oSQL_Statement = oVerbindung.createStatement()
oSQL_Statement.ResultSetType =com.sun.star.sdbc.ResultSetType.SCROLL_SENSITIVE
stSql = " SELECT ""Mitgliedsnummer"" FROM ""Anteile"" WHERE ""VorgangID"" = 50 ORDER BY ""Mitgliedsnummer"" "
'msgbox stSql
oResult = oSQL_Statement.executeQuery(stSql)
'wieviele Personen haben Nachrangdarlehen?
WHILE oResult.next
WEND
anzProjekt = oResult.Row - 1
msgbox "Anzahl der Mitglieder mit Projekt ist " & anzProjekt
DIM mitProjektListe(anzProjekt) 'nimmt die Nachrang-MitgliedsNummern auf (Positivliste!)
' msgbox anzNRD & " Mitglieder mit NRD"
oResult.first
jn=1
mitProjektListe(jn) = oResult.getInt(1)
' msgbox jj & ": " & mitNRDListe(jj)
WHILE oResult.next
jn = jn + 1
mitProjektListe(jn) = oResult.getInt(1)
msgbox jn & ": " & mitProjektListe(jn)
WEND
EXIT SUB

REM hier brauchen wir die Positivliste der Mitglieder mit Projekt einer bestimmten ProjektNummer

oEForm = oPForm.getByName("Ehemalige") 'siehe Abfrage "Ehemalige"!
soviele = oEForm.RowCount
DIM negativListe(soviele) 'nimmt die Mitgliedsnumern auf, die NICHT gedruckt werden dürfen
oEForm.reload()
oEForm.first()
stehemaligField = oEForm.findColumn("Mitgliedsnummer") 'sollte 1 sein
ineg=0
negativListe(ineg) = oEForm.getInt(1)
WHILE oEForm.next
ineg = ineg + 1
negativListe(ineg) = oEForm.getInt(1)
WEND

REM hole die allgemeinen Angaben:
REM ... den Wert eines Anteils aus der Tabelle Fiwerte
stSql = "SELECT ""Wert"" FROM ""Fixwerte"" WHERE ""Fixwerte"".""Art""=" + "'1Anteil'"
oResult = oSQL_Statement.executeQuery(stSql)
oResult.next
Wert1Anteil = oResult.getFloat(1)

REM aktive Zeile?
DHZeile = DivHistoZeile()
REM ... alle Daten (TagEintrag, TagZahlung,...) der gewählten Zeile
stSql = "SELECT * FROM ""DividendenHistorie"" WHERE ""ID""="+DHZeile+""
REM Problem: erster Datensatz für Zeile 1 hat ID = 0
oResult = oSQL_Statement.executeQuery(stSql)
oResult.next
'xray oResult
TagEintrag = oResult.getDate(2)
TagZahlung = oResult.getDate(3)
AusProzent = oResult.getFloat(4) ' % auf die Anteile werden ausgeschuettet
VWZweck = oResult.getString(5) 'in Dividenden ist das "Kennungen" -> UStrID
KEStProzent = oResult.getFloat(6)
SoliProzent = oResult.getFloat(7)
'msgbox cDateFromUnoDate(stTagEintrag) & " " & cDateFromUnoDate(stTagZahlung) & " " & stAusProzent & " " & stKEStProzent & " " & stSoliproz
REM Formatierung der Werte für sql:
f_dat = TagEintrag.Year & "-" & TagEintrag.Month & "-" & TagEintrag.Day ' DateValue("2017-09-03")
f_datZ = TagZahlung.Year & "-" & TagZahlung.Month & "-" & TagZahlung.Day
f_ausproz = join(split(AusProzent, ","), ".")
f_kestproz = join(split(KEStProzent, ","), ".")
f_soliproz = join(split(SoliProzent, ","), ".")

REM hole den Arbeitsbereich stvon..stbis
stIDField = oPForm.findColumn("ID")
stID = oPForm.getString(stIDField)
stvonField = oPForm.findColumn("von")
stvon = oPForm.getInt(stvonField)
stbisField = oPForm.findColumn("bis")
stbis = oPForm.getInt(stbisField)
anzdiff = stbis - stvon +1
janein = msgbox("Wirklich die Daten mit ID=" & DHZeile & " in alle (außer übersprungene) " & anzdiff & " Konten durchführen?",256+32+4,"Überleg nochmal:")
IF janein = 7 THEN EXIT SUB

REM Aktuell-Feld wird auf "von" gesetzt
staktuellField = oPForm.findColumn("aktuell")
i = stvon
oPForm.updateInt(staktuellField,i)

txanzahl=0

janein = msgbox("Sind wirklich ALLE Nichtveranlagungsdaten" & Chrund3) & "und Freistellungsaufträge" & Chreingetragenngetragen Im,256+32+4,"Im Zweifel bitte JETZT NEIN sagen!")
if janein = 7 then goto Labelraus

'============================================================
REM Beginn der Schleife für das Mitglied mit Mitgliedsnummer in von_bis.aktuell


DO WHILE i < stbis+1 ' bis LOOP
drucken = TRUE
j=0 ' Ehemaligen überspringen
WHILE (j < ineg + 1)
if negativListe(j) = i then
drucken = FALSE
end if
j=j+1
WEND
IF NOT drucken THEN
GOTO Labelnichtweiter
ELSE
stSql = "UPDATE ""von_bis"" SET ""aktuell"" ='" + i + "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)
END IF
' msgbox i
txanzahl=txanzahl + 1

'=========================================================
REM berechne die Summe der Anteile (hier noch ohne Datumsgrenze!)
stSql = "SELECT ""Anteile"".""Mitgliedsnummer"", SUM( ""Anteile"".""AnteilePlusMinus"" ) ""AnteileSumme"" FROM ""Anteile"", ""von_bis"" WHERE ""Anteile"".""Mitgliedsnummer"" = ""von_bis"".""aktuell"" GROUP BY ""Anteile"".""Mitgliedsnummer"""
oResult = oSQL_Statement.executeQuery(stSql)
While oResult.next
MitNr = oResult.getInt(1)
AnteileSumme = oResult.getInt(2)
Wend
Ausschuettung = Wert1Anteil * AnteileSumme * AusProzent / 100
f_ausschuett = join(split(Ausschuettung, ","), ".") 'ersetzt , durch .

REM Eintrag der Ausschüttung in "Anteile"
stSql = "INSERT INTO ""Anteile"" (""Mitgliedsnummer"",""VorgangID"",""TagEintrag"",""AnteileSaldo"",""AusProzent"",""Ausschuettung"")"
stSql = stSql & " VALUES('" + MitNr + "','20','" + f_dat + "','" + AnteileSumme + "','" + f_ausproz + "','"+ f_ausschuett + "')"
oResult = oSQL_Statement.executeQuery(stSql)

REM Eintrag in "Dividenden"
REM hole die weiteren individuellen Angaben aus der Tabelle SteuerDaten
stSql = "SELECT * FROM ""SteuerDaten"" WHERE ""Mitgliedsnummer"" = " + i
oResult = oSQL_Statement.executeQuery(stSql)
While oResult.next
' xray oResult ' andere Möglichkeit: FSARest = oResult.getByName("FSARest").Float
MitNr = oResult.getInt(1) ' "Mitgliedsnummer"
KiStproz = oResult.getFloat(4) ' "KiStproz"
isNV = oResult.getBoolean(5) ' "NV"
isFSA = oResult.getBoolean(7) ' "FSA"
FSARest = oResult.getFloat(9) ' "FSARest" wird am Ende ggf. nach unten korrigiert
Wend

InAnspruch = 0
SPAusschuettung = Ausschuettung
if isFSA then
FSARestneu = FSARest - Ausschuettung
if FSARestneu < 0 then
FSARestneu = 0
SPAusschuettung = Ausschuettung - FSARest 'steuerpflichtig
InAnspruch = FSARest
else
SPAusschuettung = 0 'steuerpflichtig=0
InAnspruch = Ausschuettung
end if
' msgbox "steuerpflichtig=" & SPAusschuettung & " (alter)Rest=" & FSARest & " neuerRest=" & FSARestneu & " inAnspruchgenommen=" & InAnspruch
end if

KESt = SPAusschuettung * KEStProzent / 100
KiSt = KESt * KiStproz / 100
SoliZu = KESt * SoliProzent / 100

REM Sonderausgabe-Kirchensteuer-Korrektur
KESt2 = KESt / (1 + (KiStproz / 100) * (KEStProzent / 100))

Auszahlung = Ausschuettung - KESt2 - SoliZu - KiSt
' msgbox " Ausschuettung= " & Ausschuettung & " KESt2= " & KESt2 & " SoliZu= " & SoliZu & " KiSt= " & KiSt & " Auszahlung= " & Auszahlung

f_kistproz = join(split(KiStproz, ","), ".") 'ersetzt , durch .
f_kist = join(split(KiSt, ","), ".") 'ersetzt , durch .
f_soli = join(split(SoliZu, ","), ".") 'ersetzt , durch .

InAnspruch = InAnspruch * (-1) ' soll bei DividID=1 als FSABetrag mit Minuszeichen erscheinen
' msgbox "InAnspruch: " & InAnspruch
f_fsa = join(split(InAnspruch, ","), ".") 'ersetzt , durch .
f_fsarest = join(split(FSARestneu, ","), ".") 'ersetzt , durch .
f_kest2 = join(split(KESt2, ","), ".") 'ersetzt , durch .
f_auszahl = join(split(Auszahlung, ","), ".") 'ersetzt , durch .

' stSql = "INSERT INTO ""Dividenden"" (""ausgezahlt"",""Mitgliedsnummer"",""DividID"",""Kennung"",""TagEintrag"",""TagZahlungAblauf"",""AnteileSaldo"",""KEStproz"",""Soliproz"",""KiStproz"",""AusProzent"",""KapErtr"",""KapErtrSt"",""Soli"",""KiSt"",""FSABetrag"",""Auszahlung"" )"
' stSql = stSql & " VALUES('FALSE','" + MitNr + "','1','" + VWZweck + "','" + f_dat + "','" + f_datZ + "','" + AnteileSumme + "','" + f_kestproz + "','" + f_soliproz + "','" + f_kistpro + "','" + f_ausproz + "','"+ f_ausschuett + "','" + f_kest2 + "','" + f_soli + "','" + f_kist + "','" + f_fsa + "','" + f_auszahl + "')"
stSql = "INSERT INTO ""Dividenden"" (""ausgezahlt"",""Mitgliedsnummer"",""DividID"",""Kennung"",""TagEintrag"",""AnteileSaldo"",""KEStproz"",""Soliproz"",""KiStproz"",""AusProzent"",""KapErtr"",""KapErtrSt"",""Soli"",""KiSt"",""FSABetrag"",""Auszahlung"" )"
stSql = stSql & " VALUES('FALSE','" + MitNr + "','1','" + VWZweck + "','" + f_dat + "','" + AnteileSumme + "','" + f_kestproz + "','" + f_soliproz + "','" + f_kistpro + "','" + f_ausproz + "','"+ f_ausschuett + "','" + f_kest2 + "','" + f_soli + "','" + f_kist + "','" + f_fsa + "','" + f_auszahl + "')"
REM Erst der Überweisungsversuch (siehe Abfrage_in_XML) setzt "ausgezahlt" wieder auf TRUE und trägt ""TagZahlungAblauf"" + f_datZ + "','" ein.
REM Die nicht ausgeführten Überweisungen müssen PER HAND im Formular "5c - Dividendenkonten" auf FALSE
REM gesetzt werden, damit sie bei der Wiederholung des Versuchs erkannt werden!
REM Dadurch wird dann auch das Datum ""TagZahlungAblauf"" gelöscht.
REM (oder per Hand in der Tabelle Dividenden)

'msgbox stSql
oResult = oSQL_Statement.executeQuery(stSql)

REM falls Freibetrag in Anspruch genommen wurde: weitere Zeile mit DividID=3 für den Rest
if InAnspruch < 0 then
' muss in Dividenden eine Zeile für DividID=3 mit neuem Rest eingetragen werden
stSql = "INSERT INTO ""Dividenden"" (""Mitgliedsnummer"",""DividID"",""TagEintrag"",""FSABetrag"" )"
stSql = stSql & " VALUES('" + MitNr + "','3','" + f_dat + "','" + f_fsarest + "')"
'msgbox stSql
oResult = oSQL_Statement.executeQuery(stSql)
' und in SteuerDaten der neue FSARest
stSql = "UPDATE ""SteuerDaten"" SET ""FSARest"" = '" + f_fsarest + "' WHERE ""Mitgliedsnummer"" = '" + MitNr + "'"
' msgbox stSql
oResult = oSQL_Statement.executeQuery(stSql)
end if

Labelnichtweiter:
i = i + 1
stAusgabeb = stAusgabeb & chr(10)
oPForm.updateInt(staktuellField,i)
LOOP

Select Case txanzahl
Case 0
msgbox ("Kein Datensatz geschrieben.",64,"Dividenden-Eintragung")
Case 1
msgbox ("Ein Datensatz geschrieben.",64,"Dividenden-Eintragung")
Case Else msgbox (txanzahl & " Datensätze geschrieben.",64,"Dividenden-Eintragung")
End Select

REM aktuell wieder auf Anfangswert:
stSql = "UPDATE ""von_bis"" SET ""aktuell"" ='" + stvon + "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)
oPForm.reload()
wait 100
Labelraus:
END SUB
Standard Serienbrief Datumgedreht   Basic   4
FUNCTION Datumgedreht ( stDat AS STRING ) AS STRING
stmutad() = split (stDat,"-")
Datumgedreht = stmutad(2) & "." & stmutad(1) & "." & stmutad(0)
END FUNCTION
Standard Serienbrief Einzeldruck_obsolet   Basic   32
SUB Einzeldruck_obsolet(oEvent AS OBJECT)
DIM oPFormF AS OBJECT
DIM stSerie AS STRING
DIM stIDField AS STRING
DIM stID AS STRING
DIM oConnection AS OBJECT
DIM oSQL_Statement AS OBJECT
DIM stSql AS STRING
DIM oResult AS OBJECT


stSerie = oEvent.Source.Model.Tag

oPFormF = oEvent.Source.Model.Parent ' hier: Formular_Filter
oConnection = oPFormF.activeConnection()
oSQL_Statement = oConnection.createStatement()

stIDField = oPFormF.findColumn("Integer")
stID = oPFormF.getString(stIDField)

'msgbox stID
REM von_bis auf diese eine Mitgliedsnummer einstellen
stSql = "UPDATE ""von_bis"" SET ""von"" ='" +stID+ "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)
stSql = "UPDATE ""von_bis"" SET ""bis"" ='" +stID+ "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)
stSql = "UPDATE ""von_bis"" SET ""aktuell"" ='" +stID+ "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)
wait 100
' Inhalt_zusammenstellen_Tabelle_Serie(stPfadvor, stDateivor, stPfadDruck, stMuster, inSpalten)
Seriendruck(oEvent)
END SUB
Standard Serienbrief Filter_I_holen_Einzelbrief   Basic 9d - InteressentenBriefe|Schaltfläche_Einzeldruck (Control) 33
SUB Filter_I_holen_Einzelbrief
REM aus der Tabelle Filter_I, dann FormularSerienbrief_I
Dim oDoc As Object
Dim oDrawpage As Object
Dim oneuMit As Object
oDoc = thisComponent
oDrawpage = oDoc.drawpage

DIM oConnection AS OBJECT
DIM oSQL_Statement AS OBJECT ' das Objekt, das den SQL-Befehl ausführt
DIM stSql AS STRING ' Text des eigentlichen SQL-Befehls
DIM oResult AS OBJECT ' Ergebnis für executeQuery

oForm = oDrawpage.forms.getByName( "Formular_Filter") 'egal welches Formular
oConnection = oForm.activeConnection()
oSQL_Statement = oConnection.createStatement()
stSql = "SELECT ""Integer"" FROM ""Filter_I"" WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)
oResult.next
stID = oResult.getint(1)
'msgbox stID
REM von_bis auf diese eine Mitgliedsnummer einstellen
stSql = "UPDATE ""von_bis_I"" SET ""von"" ='" +stID+ "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)
stSql = "UPDATE ""von_bis_I"" SET ""bis"" ='" +stID+ "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)
stSql = "UPDATE ""von_bis_I"" SET ""aktuell"" ='" +stID+ "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)

oFormS = oDrawpage.forms.getByName( "Formular_Serie" )
wait 100
oFormS.reload()
END SUB
Standard Serienbrief Filter_M_holen_Einzelbrief   Basic 7a - MitgliederBriefe|Schaltfläche_Einzeldruck (Control)
8d - DividendenZentrale|Schaltfläche_Einzeldruck (Control)
8i - Ueberweisungen|Schaltfläche_Einzeldruck (Control)
33
SUB Filter_M_holen_Einzelbrief
REM aus der Tabelle Filter_M, dann FormularSerienbrief
Dim oDoc As Object
Dim oDrawpage As Object
Dim oneuMit As Object
oDoc = thisComponent
oDrawpage = oDoc.drawpage

DIM oConnection AS OBJECT
DIM oSQL_Statement AS OBJECT ' das Objekt, das den SQL-Befehl ausführt
DIM stSql AS STRING ' Text des eigentlichen SQL-Befehls
DIM oResult AS OBJECT ' Ergebnis für executeQuery

oForm = oDrawpage.forms.getByName( "Formular_Filter") 'egal welches Formular
oConnection = oForm.activeConnection()
oSQL_Statement = oConnection.createStatement()
stSql = "SELECT ""Integer"" FROM ""Filter_M"" WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)
oResult.next
stID = oResult.getint(1)
'msgbox stID
REM von_bis auf diese eine Mitgliedsnummer einstellen
stSql = "UPDATE ""von_bis"" SET ""von"" ='" +stID+ "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)
stSql = "UPDATE ""von_bis"" SET ""bis"" ='" +stID+ "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)
stSql = "UPDATE ""von_bis"" SET ""aktuell"" ='" +stID+ "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)

oFormS = oDrawpage.forms.getByName( "Formular_Serie" )
wait 100
oFormS.reload()
END SUB
Standard Serienbrief Inhalt_zusammenstellen_Serie   Basic Seriendruck (Procedure) 264
FUNCTION Inhalt_zusammenstellen_Serie(stPfadvor, stDateivor, stPfadDruck, stMuster, stAbfrage, inSpalten, stSerie) AS BOOLEAN

REM Druckt den Brief für die aktuelle Mitgliedsnummer/ID
REM
REM ott-Vorlage enthält ggf. eine Tabelle mit dem Namen Tabelle_Anteilekonto
REM Andere Tabellen könnten über den Tabellennamen (z.B. Mitgliederliste) alternative Ausgabeblöcke steuern
REM Die Daten für die Felder werden
REM direkt aus einer Abfrage (stAbfrage = Name in der Pfade-Tabelle) geholt.
REM Diese Abfrage stellt gggf. das Adressfeld und die Briefanrede zur Verfügung.

Inhalt_zusammenstellen_Serie = TRUE

DIM oDatenquelle AS OBJECT
DIM oVerbindung AS OBJECT
DIM oSQL_Anweisung AS OBJECT
DIM oAbfrageergebnis AS OBJECT
DIM oPForm AS OBJECT
DIM oForm AS OBJECT
DIM oColumns AS OBJECT
DIM oDB AS OBJECT
DIM oNewDoc AS OBJECT
DIM oTabelle AS OBJECT
DIM oRows AS OBJECT
DIM oTextfields AS OBJECT
DIM oTextfield AS OBJECT
DIM stColumnname AS STRING
DIM stDir AS STRING
DIM stSql AS STRING
DIM stText AS STRING
DIM inIndex AS Long
DIM i AS INTEGER
DIM loID AS LONG
DIM MitNr AS INTEGER
DIM stDatum AS STRING
DIM stBetrag AS STRING
DIM intAnteilePlusMinus AS INTEGER
DIM intAnteilesaldo AS INTEGER
Dim params As Variant

oPForm = thisComponent.Drawpage.Forms.getByName("Formular_Serie")

wait 100
oPForm.reload()
oPForm.last()

oDatenquelle = ThisComponent.Parent.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oVerbindung = oDatenquelle.ActiveConnection()
oDatenDatei = oDatenquelle.DataSource
oAbfragen = oDatenDatei.getQueryDefinitions()


REM ======= Dateinamen der Ausgabedatei
REM Es kann die Mitgliedsnummer und/oder der Name an das "Muster" angehängt werden.
mitNamenFeld = oPForm.getByName("Markierfeld_Namen")
mitNamen = mitNamenFeld.State
mitMitNrFeld = oPForm.getByName("Markierfeld_MitNr")
mitMitNr = mitMitNrFeld.State
nurOdtFeld = oPForm.getByName("Markierfeld_odt")
nurOdt = nurOdtFeld.State

oDB = ThisComponent.Parent
stDir = Left(oDB.Location,Len(oDB.Location)-Len(oDB.Title))
stPrintDir = stDir & stPfadDruck & "/"
stDir = stDir & stPfadvor & "/" & stDateivor
' msgbox "Dateivorlage " & stDir

REM Ermittlung der Daten, die in den Brief eingetragen werden

'msgbox "Name der Abfrage: " & stAbfrage
IF stAbfrage <> "" THEN
' On Error GoTo ErrorHandlerAbfrage
oAbf = oAbfragen.getByName( stAbfrage )
stQuery = oAbf.command
oSQL_Anweisung = oVerbindung.createStatement()
oForm = oSQL_Anweisung.executeQuery(stQuery)
oForm.next 'notwendig, um aus dem Tabellenkopf in die erste Datenzeile zu kommen
oColumns = oForm.Columns
splast= oForm.Columns.Count

REM Vorbereitung für _INWORTEN mit der Calc-Funktion NUMBERTEXT.
REM Dazu muss die Extension numbertext.oxt (http://numbertext.org) installiert sein!
IF oColumns.hasByName("Betrag") THEN
inIndexBetrag = oForm.findColumn("Betrag")
On Error Goto ErrorHandlerLeer
EUROBetrag = oForm.getString(inIndexBetrag) ' merken für _INWORTEN
' msgbox EUROBetrag & " EURO"
params = Array(EUROBetrag,"de-DE")
stinWorten = inWorten(params())
' msgbox stinWorten
END IF
ELSE
msgbox ("Abfrage fehlt!" & ChrVorgang "Vorgang wird abgebrochen.",48,"Problem")
Reset
Inhalt_zusammenstellen_Serie = FALSE
EXIT FUNCTION
END IF

REM Dokument-Vorlage (.ott) öffnen
DIM args(0) AS NEW com.sun.star.beans.PropertyValue
args(0).Name = "AsTemplate"
args(0).Value = True
On Error GoTo ErrorHandlerVorlage
oNewDoc = StarDesktop.loadComponentFromURL(stDir,"_blank",0,args)
REM oNewDoc unsichtbar schalten
oNewDocView = oNewDoc.CurrentController.Frame.ContainerWindow
REM falls das Writer-Dokument nicht noch verändert werden soll:
oNewDocView.Visible = False

REM Textfelder der Vorlage holen
oTextfields = oNewDoc.Textfields.createEnumeration
DO WHILE oTextfields.hasMoreElements
oTextfield = oTextfields.nextElement
IF oTextfield.supportsService("com.sun.star.text.TextField.JumpEdit") THEN
stColumnname = oTextfield.PlaceHolder 'Placeholder ist Bennennung für das Textfeld
'msgbox stColumnname

'Wenn der Name des Textfeldes gleich dem Spaltennamen der Abfrage-Daten ist,
' die dem Formular SDruck/StBescheidDruck zugrunde liegen ...
IF oColumns.hasByName(stColumnname) THEN
inIndex = oForm.findColumn(stColumnname)

REM Betrag in Worten erledigen wir separat/vorher
IF stColumnname = "_INWORTEN" THEN
oTextfield.Anchor.String = stinWorten
ELSE

'msgbox stColumnname & " " & inIndex 'hier kann man gemütlich das Eintragen der Daten beobachten

REM Abfagen von leeren Datensätzen
On Error Goto ErrorHandlerLeer
oTextfield.Anchor.String = oForm.getString(inIndex) 'geht nur wenn Datensatz nicht leer?
IF stColumnname = "Mitgliedsnummer" THEN
MitNr = oForm.getInt(inIndex) 'merken für Dateiname
END IF

IF stSerie = "Interessenten" THEN
IF stColumnname = "ID" THEN
MitNr = oForm.getInt(inIndex)
END IF
END IF
END IF 'für _INWORTEN
END IF
END IF
LOOP

REM beim Anteilekonto muss eine Tabelle mit mehreren Zeilen gefüllt werden
IF inSpalten > 0 THEN
REM Tabelle holen
oTabellen = oNewDoc.getTextTables

oTabelle = oTabellen.getByName("Tabelle_Anteilekonto") 'für andere Tabellen müsste ...?

oSQL_Anweisung = oVerbindung.createStatement()

' stSql = "SELECT RIGHT( '0' || DAY( ""a"".""TagZahlung"" ), 2 ) || '.' || RIGHT( '0' || MONTH(""a"".""TagZahlung"" ), 2 ) || '.' || YEAR( ""a"".""TagZahlung"" ), "
stSql = "SELECT RIGHT( '0' || DAY( ""a"".""TagEintrag"" ), 2 ) || '.' || RIGHT( '0' || MONTH(""a"".""TagEintrag"" ), 2 ) || '.' || YEAR( ""a"".""TagEintrag"" ), "
stSql = stSql + "REPLACE( ""a"".""AnteilePlusMinus"" * ( SELECT ""Wert"" FROM ""Fixwerte"" WHERE ""ID"" = 2 ) || ' €','.',',') AS ""PlusMinusBetrag"", "
stSql = stSql + """a"".""AnteilePlusMinus"", "
stSql = stSql + """a"".""AnteileSaldo"" FROM ""Anteile"" AS ""a"", ""Mitglieder"", ""von_bis"""
stSql = stSql + "WHERE ""a"".""Mitgliedsnummer"" = ""Mitglieder"".""Mitgliedsnummer"" AND ""Mitglieder"".""Mitgliedsnummer"" = ""von_bis"".""aktuell"" "
' stSql = stSql + "AND ""a"".""VorgangID"" <> 50 ORDER BY ""a"".""TagZahlung"" ASC, "
' stSql = stSql + "AND ( ""a"".""VorgangID"" = 2 OR ""a"".""VorgangID"" = 3 ) ORDER BY ""a"".""TagEintrag"" ASC, "
stSql = stSql + "AND ( ""a"".""VorgangID"" > 1 AND ""a"".""VorgangID"" < 12 ) ORDER BY ""a"".""TagEintrag"" ASC, "

stSql = stSql + """a"".""AnteileSaldo"" ASC"


oAbfrageergebnis = oSQL_Anweisung.executeQuery(stSql)' Ergebnis auswerten

' folgendes für 4-spaltige Tabelle_Anteilskonto String/String/Int/Int... ist nun mal speziell...
i = 0 'Tabelle mit nur einer Zeile (Spaltenüberschriften stehen in einer extra Tabelle
WHILE oAbfrageergebnis.next
stDatum = oAbfrageergebnis.getString(1)
stBetrag = oAbfrageergebnis.getString(2)
intAnteilePlusMinus = oAbfrageergebnis.getInt(3)
intAnteileSaldo = oAbfrageergebnis.getInt(4)

oTabelle.getCellByPosition(0,i).setString(stDatum)
oTabelle.getCellByPosition(1,i).setString(stBetrag)
oTabelle.getCellByPosition(2,i).setValue(intAnteilePlusMinus)
oTabelle.getCellByPosition(3,i).setValue(intAnteileSaldo)
oRows = oTabelle.getrows()
oRows.insertByIndex(oRows.getCount(),1)
i = i + 1
WEND ' nächster Datensatz
oRows.removeByIndex(oRows.getCount()-1,1)

END IF 'inSpalten <>0

REM ===Behandlung des Dateinamens===============

stMitNr = ""

IF mitMitNr THEN
stMitNr = "_" & Right("0000" & MitNr, 4)
END IF

IF stSerie = "Interessenten" THEN stMitNr = ""

stNachname = ""
stVorname = ""
stOrga = ""
IF mitNamen Then
IF oColumns.hasByName("_ORGA") THEN
inIndex = oForm.findColumn("_ORGA")
stOrga = "_" & oForm.getString(inIndex)
END IF
IF oColumns.hasByName("_NNAME") THEN
inIndex = oForm.findColumn("_NNAME")
stNachname = "_" & oForm.getString(inIndex)
END IF
IF oColumns.hasByName("_VNAME") THEN
inIndex = oForm.findColumn("_VNAME")
stVorname = "_" & oForm.getString(inIndex)
END IF
END IF

REM Ausgabe
IF stOrga <> "_" THEN
stDatei = stMuster & stMitNr & stOrga & ".pdf"
stWriterDatei = stMuster & stMitNr & stOrga & ".odt"
ELSE
stDatei = stMuster & stMitNr & stNachname & stVorname & ".pdf"
stWriterDatei = stMuster & stMitNr & stNachname & stVorname & ".odt"
END IF
stPrintDatei = stPrintDir & stDatei
stWriterDatei = stPrintDir & stWriterDatei
'xray oNewDoc

IF nurOdt Then
DIM prop(0) AS NEW com.sun.star.beans.PropertyValue
prop(0).name = "Overwrite"
prop(0).value = False
oNewDoc.storeToURL(stWriterDatei, prop())
oNewDoc.close(true)
ELSE
DIM arg(0) AS NEW com.sun.star.beans.PropertyValue
arg(0).name = "FilterName"
arg(0).value = "writer_pdf_Export"
oNewDoc.storeToURL(stPrintDatei, arg())
oNewDoc.close(true)
END IF
wait 1000

EXIT FUNCTION
ErrorHandlerLeer:
' oNewDoc.close(true)
Reset
' msgbox ("LeererDatensatz!" & Chr$(13) & "Vorgang wurde abgebrochen.",48,"Problem")
Inhalt_zusammenstellen_Serie = FALSE
EXIT FUNCTION
ErrorHandlerVorlage:
Reset
msgbox ("Dateivorlage " & stdir & " nicht gefunden!" & ChrVorgang "Vorgang wurde abgebrochen.",48,"Problem")
Inhalt_zusammenstellen_Serie = FALSE
EXIT FUNCTION
ErrorHandlerAbfrage:
Reset
msgbox ("Abfrage " & stAbfrage & " nicht gefunden!" & ChrVorgang "Vorgang wurde abgebrochen.",48,"Problem")
Inhalt_zusammenstellen_Serie = FALSE
END FUNCTION
Standard Serienbrief inWorten   Basic Inhalt_zusammenstellen_Serie (Procedure) 5
Function inWorten(liste As Variant) As String
Dim acceder As Object
acceder = CreateUnoService("com.sun.star.sheet.FunctionAccess")
inWorten = acceder.callFunction("NUMBERTEXT", liste)
End Function
Standard Serienbrief min_bis_max   Basic 7a - MitgliederBriefe|Bereich_alle (Control)
8d - DividendenZentrale|Bereich_alle (Control)
8i - Ueberweisungen|Bereich_alle (Control)
39
SUB min_bis_max(oEvent AS OBJECT)
REM SELECT MIN( "Mitgliedsnummer" ) "mini", MAX( "Mitgliedsnummer" ) "maxi" FROM "Mitglieder"
REM alle oder einzeln
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oSubForm AS OBJECT
DIM oFeld AS OBJECT
DIM minwert AS INTEGER
DIM letzter AS INTEGER
DIM oColumns AS OBJECT
DIM oConnection AS OBJECT
DIM oSQL_Statement AS OBJECT ' das Objekt, das den SQL-Befehl ausführt
DIM stSql AS STRING ' Text des eigentlichen SQL-Befehls
DIM oResult AS OBJECT ' Ergebnis für executeQuery
steinzelalle = oEvent.Source.Model.Tag
oDoc = thisComponent
oDrawpage = oDoc.drawpage
' oFormM=oDrawpage.forms.getByName( "Formular_Mitglieder" )
oForm = oDrawpage.forms.getByName("Formular_Serie")
oConnection = oForm.activeConnection()
oSQL_Statement = oConnection.createStatement()
stSql = "SELECT MIN(""Mitgliedsnummer"") AS ""MINIMIT"", MAX(""Mitgliedsnummer"") AS ""MAXIMIT"" FROM ""Mitglieder"""
oResult = oSQL_Statement.executeQuery(stSql)
oResult.next
oColumns = oResult.columns()
'Xray oResult
IF oColumns.hasByName("MINIMIT") THEN inIndex = oColumns.findColumn("MINIMIT")
erster=oResult.getInt(1)
IF oColumns.hasByName("MAXIMIT") THEN inIndex = oColumns.findColumn("MAXIMIT")
letzter=oResult.getInt(2)
'msgbox erster & " " & letzter
oFeld = oForm.getByName("Num_von")
oFeld.value=erster
oFeld.commit()
oFeld = oForm.getByName("Num_bis")
oFeld.value=letzter
oFeld.commit()
END SUB
Standard Serienbrief min_bis_max_I   Basic 9d - InteressentenBriefe|Bereich_alle (Control) 48
SUB min_bis_max_I(oEvent AS OBJECT)
REM SELECT MIN( "ID" ) "mini", MAX( "ID" ) "maxi" FROM "Interessenten"
REM alle oder einzeln

DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oSubForm AS OBJECT
DIM oFeld AS OBJECT
DIM minwert AS INTEGER
DIM letzter AS INTEGER
DIM oColumns AS OBJECT
DIM oConnection AS OBJECT
DIM oSQL_Statement AS OBJECT ' das Objekt, das den SQL-Befehl ausführt
DIM stSql AS STRING ' Text des eigentlichen SQL-Befehls
DIM oResult AS OBJECT ' Ergebnis für executeQuery

steinzelalle = oEvent.Source.Model.Tag

oDoc = thisComponent
oDrawpage = oDoc.drawpage

oDoc = thisComponent
oDrawpage = oDoc.drawpage

' oFormM=oDrawpage.forms.getByName( "Formular_Mitglieder" )
oForm = oDrawpage.forms.getByName("Formular_Serie")
oConnection = oForm.activeConnection()
oSQL_Statement = oConnection.createStatement()
stSql = "SELECT MIN(""ID"") AS ""MINIMIT"", MAX(""ID"") AS ""MAXIMIT"" FROM ""Interessenten"""
oResult = oSQL_Statement.executeQuery(stSql)
oResult.next
oColumns = oResult.columns()
'Xray oResult
IF oColumns.hasByName("MINIMIT") THEN inIndex = oColumns.findColumn("MINIMIT")
erster=oResult.getInt(1)
IF oColumns.hasByName("MAXIMIT") THEN inIndex = oColumns.findColumn("MAXIMIT")
letzter=oResult.getInt(2)
' msgbox erster & " " & letzter

oFeld = oForm.getByName("Num_von")
oFeld.value=erster
oFeld.commit()

oFeld = oForm.getByName("Num_bis")
oFeld.value=letzter
oFeld.commit()
END SUB
Standard Serienbrief OberOrdner   Basic   9
SUB OberOrdner
DIM oDoc AS OBJECT
DIM oFeld AS OBJECT
oDoc = thisComponent
oDB = ThisComponent.Parent
stDBDir = Left(oDB.Location,Len(oDB.Location)-Len(oDB.Title))
xstDBDir = Mid(stDBDir,9)
msgbox xstDBDir
END SUB
Standard Serienbrief Pfadzeile   Basic Seriendruck (Procedure) 20
FUNCTION Pfadzeile AS LONG 'gibt die aktive Zeilennummer im Tabellen-Kontrollfeld zurück
REM In der Tabelle Pfade muss ID=Zeilennummer gesetzt sein. (Zählung ab 1)
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
DIM oZ AS OBJECT
oDoc = thisComponent
oDrawpage = oDoc.Drawpage
oForm = oDrawpage.Forms.getByName("Formular_Pfad")
oFeld = oForm.getByName("Tabellen-KontrollfeldPfade")
'xray oFeld
oSpalte = oFeld.getByName("TextField_PfadVor")
oSpalte.HelpText = "HALLO"
'xray oSpalte
wait 100
oZ=oFeld.getRowSet()
wait 100
Pfadzeile = oZ.Row
END FUNCTION
Standard Serienbrief Projektfilter_umschalten   Basic 7a - MitgliederBriefe|Markierfeld_NRD (Control) 16
SUB Projektfilter_umschalten
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oSubForm AS OBJECT
DIM oFeld AS OBJECT
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Formular_ProjID")
oFeld = oForm.getByName("KF_Projekt_ID")
'xray oFeld
oFeld.EnableVisible = NOT oFeld.EnableVisible
' oFeld.commit()
' oFeld.refresh()
' oForm.reload()
END SUB
Standard Serienbrief Schalterfarbe   Basic 7a - MitgliederBriefe|Markierfeld_odt (Control)
9d - InteressentenBriefe|Markierfeld_odt (Control)
19
SUB Schalterfarbe (oEvent AS OBJECT)
DIM oSchalter AS OBJECT

oPForm = oEvent.Source.Model.Parent 'das ist Formular_Serie (Tabelle von_bis)
nurOdtFeld = oPForm.getByName("Markierfeld_odt")
nurOdt = nurOdtFeld.State

oSchalter = oPForm.getByName("SchaltflächeSeriendruck")

IF nurOdt THEN
oSchalter.BackgroundColor = 16737992
oschalter.Label = "Briefe als .odt - Dateien erzeugen"
oSchalter.HelpText = "Die Writer-Datei(en) können bearbeitet und dann als .pdf gespeichert weerden."
ELSE
oSchalter.BackgroundColor = 16737792
oschalter.Label = "Briefe als .pdf - Dateien erzeugen"
oSchalter.HelpText = "Automatische Erstellung der .pdf-Datei(en)"
END IF
END SUB
Standard Serienbrief Seriendruck   Basic 7a - MitgliederBriefe|SchaltflächeSeriendruck (Control)
9d - InteressentenBriefe|SchaltflächeSeriendruck (Control)
Einzeldruck_obsolet (Procedure)
337
SUB Seriendruck(oEvent AS OBJECT)
DIM oPForm AS OBJECT
DIM oEForm AS OBJECT
DIM stSerie AS STRING
DIM stIDField AS Integer
DIM stvonField AS Integer
DIM stbisField AS Integer
DIM staktuellField AS Integer
DIM stID AS Integer
DIM stvon AS Integer
DIM stbis AS Integer
DIM i AS Long
DIM PZeile AS Long
DIM oConnection AS OBJECT
DIM oSQL_Statement AS OBJECT ' das Objekt, das den SQL-Befehl ausführt
DIM oSQL_StatementoM AS OBJECT ' das Objekt, das den SQL-Befehl ausführt
DIM stSql AS STRING ' Text des eigentlichen SQL-Befehls
DIM oResult AS OBJECT ' Ergebnis für executeQuery

stSerie = oEvent.Source.Model.Tag
REM stSerie = "Mitglieder"
REM stSerie = "Interessenten"

oPForm = oEvent.Source.Model.Parent 'das ist Formular_Serie (Tabelle von_bis)
oConnection = oPForm.activeConnection()

REM Auswertung des Markierfelds für "nur an die ohne Email"
oohneEMailFeld = oPForm.getByName("Markierfeld_nurohneEmail")
ohneEMail = oohneEMailfeld.State
IF ohneEMail Then
msgbox ("Ausgabe nur für EmpfängerInnen ohne Email",,"Info")
END IF

REM Auswertung des Markierfelds für "nur an die mit Nachrangdarlehen", nur für Mitglieder
IF stSerie = "Mitglieder" THEN
onurNachrangDFeld = oPForm.getByName("Markierfeld_NRD")
nurmitNRD = onurNachrangDFeld.State
IF nurmitNRD Then
msgbox ("Ausgabe nur für EmpfängerInnen mit Nachrangdarlehen",,"Info")
END IF
ELSE
nurmitNRD = FALSE
END IF

REM Auswertung des Markierfelds für "nur an StromkundInnen"
omitStromFeld = oPForm.getByName("Markierfeld_Strom")
nurmitStrom = omitStromFeld.State
IF nurmitStrom Then
msgbox ("Ausgabe nur für StromkundInnen",,"Info")
END IF

IF stSerie = "Mitglieder" THEN
REM Auswertung des Markierfelds für "Überspringliste ignorieren"
oexignoreFeld = oPForm.getByName("Markierfeld_exignore")
exignore = oexignorefeld.State
IF exignore Then
msgbox ("Ausgabe auch für ehemalige Mitglieder, die normalerweise übersprungen werden",,"Info")
END IF
REM negativListe() definieren und Nicht(mehr)-Mitglieder aus dem Formular eintragen
oEForm = oPForm.getByName("Ehemalige") 'siehe Abfrage "Ehemalige"!
soviele = oEForm.RowCount
DIM negativListe(soviele) 'nimmt die Mitgliedsnumern auf, die NICHT gedruckt werden dürfen
oEForm.reload()
oEForm.first()
stehemaligField = oEForm.findColumn("Mitgliedsnummer") 'sollte 1 sein
ineg=0
negativListe(ineg) = oEForm.getInt(1)
WHILE oEForm.next
ineg = ineg + 1
negativListe(ineg) = oEForm.getInt(1)
WEND
END IF

IF stSerie = "Interessenten" THEN
REM "fehlende IDs nicht ausgeben - Positivliste"
oSQL_Statement_IID = oConnection.createStatement()
oSQL_Statement_IID.ResultSetType =com.sun.star.sdbc.ResultSetType.SCROLL_SENSITIVE
stSql_IID = " SELECT ""ID"" FROM ""Interessenten"" ORDER BY ""ID"" ASC "
oIvorhanden = oSQL_Statement_IID.executeQuery(stSql_IID)
WHILE oIvorhanden.NEXT
WEND
letzteID=oIvorhanden.Row - 1
DIM IvorhandenListe(letzteID)
oIvorhanden.first
ji = 1
IvorhandenListe(ji) = oIvorhanden.getInt(1)
WHILE oIvorhanden.NEXT
ji = ji+ 1
IvorhandenListe(ji) = oIvorhanden.getInt(1)
WEND
END IF

REM nur falls "nurohneEMail" gesetzt, ohneMailListe() definieren und füllen
IF ohneEMail THEN
oSQL_StatementoM = oConnection.createStatement()
oSQL_StatementoM.ResultSetType =com.sun.star.sdbc.ResultSetType.SCROLL_SENSITIVE
stSql_oM = " SELECT ""Mitgliedsnummer"" FROM ""Kontakte"" WHERE ""Email1"" IS NULL"
IF stSerie = "Interessenten" THEN stSql_oM = " SELECT ""ID"" FROM ""Interessenten"" WHERE ""Email1"" IS NULL"
'msgbox stSql_oM
oResultoM = oSQL_StatementoM.executeQuery(stSql_oM)
'wieviele Personen haben keine Email-Adresse?
WHILE oResultoM.next
WEND
anzohne = oResultoM.Row - 1
DIM ohneMailListe(anzohne) 'nimmt die Mitgliedsnummern ohne Email auf (Positivliste!)
' msgbox anzohne & " Mitglieder ohne EMail"
oResultoM.first
jj=1
ohneMailListe(jj) = oResultoM.getInt(1)
' msgbox jj & ": " & ohneMailListe(jj)
WHILE oResultoM.next
jj = jj + 1
ohneMailListe(jj) = oResultoM.getInt(1)
' msgbox jj & ": " & ohneMailListe(jj)
WEND
END IF

REM nur falls "nurStromkundInnen" gesetzt, mitStromListe() definieren und füllen
IF nurmitStrom THEN
oSQL_StatementoM = oConnection.createStatement()
oSQL_StatementoM.ResultSetType =com.sun.star.sdbc.ResultSetType.SCROLL_SENSITIVE
stSql_mS = " SELECT ""Mitgliedsnummer"" FROM ""StromGas_Mitglieder"" WHERE ""StatusStromID"" = 1 OR ""StatusStromID"" = 2 "
IF stSerie = "Interessenten" THEN stSql_mS = " SELECT ""ID"" FROM ""StromGas_Interessenten"" WHERE ""StatusStromID"" = 1 OR ""StatusStromID"" = 2 "
'msgbox stSql_mS
oResultmS = oSQL_StatementoM.executeQuery(stSql_mS)
'wieviele Personen haben keine Email-Adresse?
WHILE oResultmS.next
WEND
anzstrom = oResultmS.Row - 1
DIM mitStromListe(anzstrom) 'nimmt die Stromkunden-Nummern auf (Positivliste!)
' msgbox anzstrom & " Mitglieder mit Strom"
oResultmS.first
js=1
mitStromListe(js) = oResultmS.getInt(1)
' msgbox jj & ": " & ohneMailListe(jj)
WHILE oResultmS.next
js = js + 1
mitStromListe(js) = oResultmS.getInt(1)
' msgbox js & ": " & mitStromListe(js)
WEND
END IF

REM falls "nurmitNachrangD" gesetzt, mitNRDListe() definieren und füllen
IF nurmitNRD THEN
' hole erst die aktuelle Projektnummer
oSQL_Statement = oConnection.createStatement()
stSql = " SELECT ""Integer"" FROM ""Projekt_aktID"" WHERE ""ID"" = 0 "
oResult = oSQL_Statement.executeQuery(stSql)
oResult.next
staktProjekt = oResult.getInt(1)
msgbox "aktuelle Projektnummmer: " & staktProjekt
oSQL_StatementmNRD = oConnection.createStatement()
oSQL_StatementmNRD.ResultSetType =com.sun.star.sdbc.ResultSetType.SCROLL_SENSITIVE
' stSql_mNRD = " SELECT ""Mitgliedsnummer"" FROM ""Anteile"" WHERE ""VorgangID"" = 50 ORDER BY ""Mitgliedsnummer"" "
stSql_mNRD = " SELECT ""Mitgliedsnummer"" FROM ""ProjektDaten"" WHERE ""ProjektDaten"".""VorgangID"" = 1 AND ""ProjektDaten"".""ProjektID"" = '" + staktProjekt + "' "
'msgbox stSql_mNRD
oResultmNRD = oSQL_StatementmNRD.executeQuery(stSql_mNRD)
'wieviele Personen haben Nachrangdarlehen?
WHILE oResultmNRD.next 'geh zum letzten Datensatz
WEND
anzNRD = oResultmNRD.Row - 1
msgbox "Anzahl der Mitglieder mit NRD ist " & anzNRD
DIM mitNRDListe(anzNRD) 'nimmt die Nachrang-MitgliedsNummern auf (Positivliste!)
' msgbox anzNRD & " Mitglieder mit NRD"
oResultmNRD.first
jn=1
mitNRDListe(jn) = oResultmNRD.getInt(1)
' msgbox jj & ": " & mitNRDListe(jj)
WHILE oResultmNRD.next
jn = jn + 1
mitNRDListe(jn) = oResultmNRD.getInt(1)
'msgbox jn & ": " & mitNRDListe(jn)
WEND
END IF

stIDField = oPForm.findColumn("ID")
stID = oPForm.getString(stIDField)

stvonField = oPForm.findColumn("von")
stvon = oPForm.getInt(stvonField)

stbisField = oPForm.findColumn("bis")
stbis = oPForm.getInt(stbisField)

IF ohneEmail THEN
janein = msgbox("Wirklich (höchstens) " & anzohne & " Briefe nur an Empfänger ohne Email ausgeben?",256+32+4,"Überleg nochmal !")
IF janein= 7 THEN EXIT SUB
ELSEIF nurmitStrom THEN
janein = msgbox("Wirklich (höchstens) " & anzstrom & " Briefe nur an StromkundInnen ausgeben?",256+32+4,"Überleg nochmal !")
IF janein= 7 THEN EXIT SUB
ELSEIF nurmitNRD THEN
janein = msgbox("Wirklich (höchstens) " & anzNRD & " Briefe nur an Mitglieder mit Projekt-ID " & staktProjekt & " ausgeben?",256+32+4,"Überleg nochmal !")
IF janein= 7 THEN EXIT SUB
ELSE
anzdiff = stbis - stvon +1
janein = msgbox("Wirklich alle (außer übersprungene) " & anzdiff & " Briefe ausgeben?",256+32+4,"Überleg nochmal:")
IF janein = 7 THEN EXIT SUB
END IF

REM Aktuell-Feld wir auf "von" gesetzt
staktuellField = oPForm.findColumn("aktuell")
i = stvon
oPForm.updateInt(staktuellField,i)

REM Auswahl der Vorlagendatei: welche Zeile der Tabelle ist aktiv?
PZeile = Pfadzeile()

REM hole die Daten (stPfadvor,stDateivor,stPfadDruck,stMuster,stAbfrage) der gewählten Zeile in der Pfadetabelle
oSQL_Statement = oConnection.createStatement()
stSql = "SELECT * FROM ""Pfade_Briefe"" WHERE ""ID""="+PZeile+""
IF stSerie = "Interessenten" THEN stSql = "SELECT * FROM ""Pfade_Briefe_I"" WHERE ""ID""="+PZeile+""

oResult = oSQL_Statement.executeQuery(stSql)
oResult.next
stPfadvor = oResult.getString(2)
'Fehler wenn Vorlage nicht vorhanden
stDateivor = oResult.getString(4)
stPfadDruck = oResult.getString(3)
stMuster = oResult.getString(5)
inSpalten = oResult.getInt(6)
stAbfrage = oResult.getString(7)

REM ====================================
REM Schleife für die odt/pdf-Ausgabe
REM ====================================
i = stvon 'ok... war schon oben...
txanzahl = 0
Durchmarsch = FALSE
DO WHILE i < stbis+1 ' bis LOOP
drucken = TRUE

REM Filter, falls ohneEmail gesetzt
IF ohneEmail THEN
drucken = FALSE
jj = 1
WHILE (jj < anzohne + 1)
if ohneMailListe(jj) = i then drucken = TRUE
jj = jj + 1
WEND
END IF
IF NOT drucken THEN GOTO Labelnichtdrucken

REM Filter, falls nurmitStrom gesetzt
IF nurmitStrom THEN
drucken = FALSE
js = 1
WHILE (js < anzstrom + 1)
if mitStromListe(js) = i then drucken = TRUE
js = js + 1
WEND
END IF
IF NOT drucken THEN GOTO Labelnichtdrucken

REM Filter, falls nurmitNRD gesetzt
IF nurmitNRD THEN
'msgbox i & "=i, jn=" & jn & " Liste=" & mitNRDListe(jn)
drucken = FALSE
jn = 1
WHILE (jn < anzNRD + 1)
'msgbox i & "=i, jn=" & jn & " Liste=" & mitNRDListe(jn)
if mitNRDListe(jn) = i then drucken = TRUE
jn = jn + 1
WEND
END IF
IF NOT drucken THEN GOTO Labelnichtdrucken

REM Filter Ehemalige, deaktivierbar
IF stSerie = "Mitglieder" THEN
j=0
WHILE (j < ineg + 1)
if negativListe(j) = i then
drucken = FALSE
if exignore then
janein = msgbox ("Soll der Brief für Mitgliedsnummer " & i & " trotzdem ausgegeben werden?",256+32+4,"Mitgliedsnummer " & i & "wird normalerweise übersprungen!")
if janein = 6 then drucken = TRUE
end if
end if
j=j+1
WEND
END IF

IF stSerie = "Interessenten" THEN
REM Filter IDvorhanden, immer!
Iistda = FALSE
j=0
WHILE (j < ji + 1)
if IvorhandenListe(j) = i then
Iistda = TRUE
end if
j=j+1
WEND
IF NOT Iistda THEN drucken = FALSE
END IF


IF drucken THEN
stSql = "UPDATE ""von_bis"" SET ""aktuell"" ='" + i + "' WHERE ""ID""=0"
IF stSerie = "Interessenten" THEN
stSql = "UPDATE ""von_bis_I"" SET ""aktuell"" ='" + i + "' WHERE ""ID""=0"
END IF
oResult = oSQL_Statement.executeQuery(stSql)
'msgbox i & " wird jetzt versucht"

IF NOT Inhalt_zusammenstellen_Serie(stPfadvor, stDateivor, stPfadDruck, stMuster, stAbfrage,inSpalten, stSerie) THEN
IF NOT Durchmarsch THEN
janein = msgbox("Trotzdem weitere Briefe erstellen?",256+32+4,"Evtl. leerer Datensatz bei Nummer " & i & " !?")
IF janein = 7 THEN GOTO hinterLoop
IF janein = 6 THEN Durchmarsch = TRUE
ENDIF
ELSE
txanzahl = txanzahl + 1
END IF
END IF

Labelnichtdrucken:
i = i + 1
oPForm.updateInt(staktuellField,i)
LOOP

hinterLoop:
Select Case txanzahl
Case 0
msgbox ("Kein Brief geschrieben.",64,"")
Case 1
msgbox ("Ein Brief geschrieben.",64,"")
Case Else msgbox (txanzahl & " Briefe geschrieben.",64,"")
End Select

REM aktuell wieder auf Anfangswert:
stSql = "UPDATE ""von_bis"" SET ""aktuell"" ='" + stvon + "' WHERE ""ID""=0"
IF stSerie = "Interessenten" THEN
stSql = "UPDATE ""von_bis_I"" SET ""aktuell"" ='" + stvon + "' WHERE ""ID""=0"
END IF
oResult = oSQL_Statement.executeQuery(stSql)
oPForm.reload()
wait 100
END SUB
Standard Serienbrief vonbis_aktualisieren   Basic 7a - MitgliederBriefe|Aktualisiere (Control)
8d - DividendenZentrale|Aktualisiere (Control)
8i - Ueberweisungen|Aktualisiere (Control)
66
SUB vonbis_aktualisieren
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oSubForm AS OBJECT
DIM oFeld AS OBJECT
DIM minwert AS INTEGER
DIM letzter AS INTEGER
DIM oColumns AS OBJECT
DIM oConnection AS OBJECT
DIM oSQL_Statement AS OBJECT ' das Objekt, das den SQL-Befehl ausführt
DIM stSql AS STRING ' Text des eigentlichen SQL-Befehls
DIM oResult AS OBJECT ' Ergebnis für executeQuery

oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Formular_Serie")

oConnection = oForm.activeConnection()
oSQL_Statement = oConnection.createStatement()

stSql = "SELECT MAX(""Mitgliedsnummer"") AS ""MAXIMIT"" FROM ""Mitglieder"""
oResult = oSQL_Statement.executeQuery(stSql)
oColumns = oResult.columns()
'Xray oResult
IF oColumns.hasByName("MAXIMIT") THEN inIndex = oColumns.findColumn("MAXIMIT")
oResult.next
letzter=oResult.getInt(1)
'msgbox letzter

oFeld = oForm.getByName("Num_von")
'Xray(oFeld)
minwert=oFeld.value
IF minwert > letzter THEN
msgbox(letzter & " ist die höchste Mitgliedsnummer!",1,"Nööö!")
minwert=1
oFeld.value=minwert
ENDIF
oFeld.commit()

oFeld = oForm.getByName("Num_bis")
maxwert=oFeld.value
IF maxwert > letzter THEN
msgbox(letzter & " ist die höchste Mitgliedsnummer!",1,"Nööö!")
maxwert=letzter
ENDIF
IF maxwert < minwert THEN
msgbox("bis kann nicht kleiner sein als von!",1,"Nööö!")
maxwert=minwert
ENDIF
oFeld.value=maxwert
oFeld.commit()

oFeld = oForm.getByName("Num_aktuell")
oFeld.value=minwert
oFeld.commit()

oConnection = oForm.activeConnection()
oSQL_Statement = oConnection.createStatement()
stSql = "UPDATE ""von_bis"" SET ""von"" ='" + minwert + "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)
stSql = "UPDATE ""von_bis"" SET ""bis"" ='" + maxwert + "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)
stSql = "UPDATE ""von_bis"" SET ""aktuell"" ='" + minwert + "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)
END SUB
Standard Serienbrief vonbis_aktualisieren_I   Basic   66
SUB vonbis_aktualisieren_I
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oSubForm AS OBJECT
DIM oFeld AS OBJECT
DIM minwert AS INTEGER
DIM letzter AS INTEGER
DIM oColumns AS OBJECT
DIM oConnection AS OBJECT
DIM oSQL_Statement AS OBJECT ' das Objekt, das den SQL-Befehl ausführt
DIM stSql AS STRING ' Text des eigentlichen SQL-Befehls
DIM oResult AS OBJECT ' Ergebnis für executeQuery

oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Formular_Serie")

oConnection = oForm.activeConnection()
oSQL_Statement = oConnection.createStatement()

stSql = "SELECT MAX(""ID"") AS ""MAXIMIT"" FROM ""Interessenten"""
oResult = oSQL_Statement.executeQuery(stSql)
oColumns = oResult.columns()
'Xray oResult
IF oColumns.hasByName("MAXIMIT") THEN inIndex = oColumns.findColumn("MAXIMIT")
oResult.next
letzter=oResult.getInt(1)
'msgbox letzter

oFeld = oForm.getByName("Num_von")
'Xray(oFeld)
minwert=oFeld.value
IF minwert > letzter THEN
msgbox(letzter & " ist die höchste ID!",1,"Nööö!")
minwert=1
oFeld.value=minwert
ENDIF
oFeld.commit()

oFeld = oForm.getByName("Num_bis")
maxwert=oFeld.value
IF maxwert > letzter THEN
msgbox(letzter & " ist die höchste ID!",1,"Nööö!")
maxwert=letzter
ENDIF
IF maxwert < minwert THEN
msgbox("bis kann nicht kleiner sein als von!",1,"Nööö!")
maxwert=minwert
ENDIF
oFeld.value=maxwert
oFeld.commit()

oFeld = oForm.getByName("Num_aktuell")
oFeld.Value=minwert
oFeld.commit()

oConnection = oForm.activeConnection()
oSQL_Statement = oConnection.createStatement()
stSql = "UPDATE ""von_bis_I"" SET ""von"" ='" + minwert + "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)
stSql = "UPDATE ""von_bis_I"" SET ""bis"" ='" + maxwert + "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)
stSql = "UPDATE ""von_bis_I"" SET ""aktuell"" ='" + minwert + "' WHERE ""ID""=0"
oResult = oSQL_Statement.executeQuery(stSql)
END SUB