🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

n:m Beziehung

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Freischreiber
* LO-Experte *
Beiträge: 833
Registriert: Fr 28. Mär 2014, 10:41

Re: n:m Beziehung

Beitrag von Freischreiber » Di 25. Nov 2014, 16:51

Nochn Problem:

Für so ein Listenfeld erstelle ich eine Abfrage, die Firma, Nachname, Vorname anzeigen soll:

SELECT "Firma" || ', ' || "Nachname" || ', ' || "Vorname" AS "Name", "ID" FROM "t-adressen"

Macht sie auch, ABER: in dem Listenfeld erscheinen nur die Adressen, wo überhaupt eine "Firma" angegeben ist, die anderen Adressen werden als leere Zeile angezeigt. Kann man das ändern?

Danke und Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: n:m Beziehung

Beitrag von RobertG » Di 25. Nov 2014, 17:05

Hallo Freischreiber,

Code: Alles auswählen

SELECT IFNULL("Firma", 'keine Firma') || ', ' || "Nachname" || ', ' || "Vorname" AS "Name", "ID" FROM "t-adressen"
Das dürfte reichen. Willst Du stattdessen direkt mit dem Nachnamen anfangen:

Code: Alles auswählen

SELECT IFNULL("Firma" || ', ' , '')|| "Nachname" || ', ' || "Vorname" AS "Name", "ID" FROM "t-adressen"
Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Freischreiber
* LO-Experte *
Beiträge: 833
Registriert: Fr 28. Mär 2014, 10:41

Re: n:m Beziehung

Beitrag von Freischreiber » Di 25. Nov 2014, 17:15

Hallo Robert,

manchmal komm ich doch selber auf was:

Code: Alles auswählen

SELECT IFNULL( "Firma", '' ) || ', ' || IFNULL( "Nachname", '' ) || ', ' || IFNULL( "Vorname", '' ) AS "Name", "ID" FROM "t-adressen"
Weil auch Nachname oder Vorname mal leer sein können bei mir. *stolz*

Cool, || im Ifnull bringt das Komma am Anfang zum Verschwinden... danke!
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

Freischreiber
* LO-Experte *
Beiträge: 833
Registriert: Fr 28. Mär 2014, 10:41

Re: n:m Beziehung

Beitrag von Freischreiber » Mi 26. Nov 2014, 09:10

Hallo F3K Total,

zu deinem Beispiel von oben
M_N_KUNDEN_AUFTRAEGE.zip, http://www.libreoffice-forum.de/downloa ... hp?id=2453

hab ich jetzt doch noch eine Frage: Das sind ja offenbar zwei Hauptformulare nebeneinander auf demselben Formulardokument. So hab ich das noch nie gesehen. Kann man über so ein "Doppelformular" eventuell alle Daten, die man braucht, mit einem Makro in einen Brief bekommen? (Adresse, Fax, Mail, Auftragsnummer)

Bisher nehme ich dafür dieses Textfieldmakro:

Code: Alles auswählen

Sub Textfieldmakro

       oDoc = thisComponent
       oForm = oDoc.Drawpage.Forms(0)
       oFormKontakt = oForm.getbyname("FormKontakt")
        oColumns = oForm.Columns
        nKontakt = oFormKontakt.getint(oFormKontakt.findcolumn("KontaktartID"))
        scurrentKontakt = oFormKontakt.getString(oFormKontakt.findcolumn("Nummer"))
        select case nKontakt
        case 3
          scurrentKontakt = "per Fax: " & scurrentKontakt                  
        case 6
           scurrentKontakt = "per Mail: " & scurrentKontakt
       Case else
          scurrentKontakt = ""
       end select
       REM Pfad zur Vorlage zusammensetzen
       Globalscope.BasicLibraries.loadLibrary("Tools")
       sURL = oDoc.Parent.URL
       sURL = DirectoryNameoutofPath(sURL,"/") & "/"
       sURL = sURL & "Musterdatenbank Briefvorlage.ott"
       REM Vorlage öffnen
       Dim args(0) as new com.sun.star.beans.PropertyValue
       args(0).Name = "AsTemplate"
       args(0).Value = True
       newDoc = StarDesktop.loadComponentFromURL(sURL,"_blank",0,args)
       REM Textfelder holen
       enumTextfields = newDoc.Textfields.createEnumeration   
       Do While enumTextfields.hasMoreElements
          thisTextfield = enumTextfields.nextElement      
          If thisTextfield.supportsService("com.sun.star.text.TextField.JumpEdit") Then
             sColumnname = thisTextfield.PlaceHolder
             if thisTextfield.PlaceHolder = "Kontakt" Then 'Sonderfall vom Unterformular kommt   
                 thisTextfield.Anchor.String = scurrentKontakt
             end if
             If oColumns.hasByName(sColumnname) Then
                nIndex = oForm.findColumn(sColumnname)
                thisTextfield.Anchor.String = oForm.getString(nIndex)
             End If
                   
          End If
       Loop
    End Sub
Ich habe es noch nicht ausprobiert, weil mein Formular noch nicht so weit ist, aber: kann so etwas gehen?

Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: n:m Beziehung

Beitrag von F3K Total » Mi 26. Nov 2014, 17:05

Hi,
klar, alles was an Daten aus der Datenbank in den vier Formularen abgefragt wird (Datenquelle pro Formular-> siehe Reiter Daten der Formulareigenschaften)
kann auch per Makro abgefragt werden, du bekommst Zugriff auf die Formulare mit z.B.

Code: Alles auswählen

oFormKUNDEN = thisComponent.Drawpage.Forms.getbyName("KUNDEN")
oFormKUNDEN_AUFTRAEGE = oFormKUNDEN.getbyName("KUNDEN_AUFTRAEGE") 'Unterformular von oFormKUNDEN
oFormAUFTRAEGE = thisComponent.Drawpage.Forms.getbyName("AUFTRAEGE")
oFormAUFTRAEGE_KUNDEN = oFormAUFTRAEGE.getbyName("AUFTRAEGE_KUNDEN")'Unterformular von oFormAUFTRAEGE
dann kannst Du die Spalten wieder mit z.B.

Code: Alles auswählen

sNachname = oFormKUNDEN.getstring(oFormKUNDEN.findcolumn("Nachname"))
auslesen.
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

Freischreiber
* LO-Experte *
Beiträge: 833
Registriert: Fr 28. Mär 2014, 10:41

Re: n:m Beziehung

Beitrag von Freischreiber » Mi 26. Nov 2014, 18:35

Hi,

vielen Dank für die konkreten Hinweise! Da gehe ich ran, sobald die Formulare fertig sind und die Stimmung paßt... Makros sind böhmische Dörfer für mich.

Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten