1 2 Previous Next 17 Replies Latest reply on Sep 11, 2015 3:55 AM by kip

    Feldinhalte aus Bezugsdatensätzen in Textfeld schreiben

    kip

      Hallo,

      ich versuche mich gerade an meiner ersten Datenbank mit Filemaker und scheitere gerade an folgendem Problem:

       

      Gegeben ist eine Datenbank u.a. mit folgenden Tabellen:

      - Projekte (Projekttitel, Ort, etc.)

      - Teilprojekte (Bezeichnung, Kosten, etc.)

      - Mitarbeiter (Vorname, Nachname, etc.)

       

      Jedes Projekt kann ein oder mehrere Teilprojekte haben.

      Jeder Mitarbeiter kann an einem oder mehreren Teilprojekten beschäftigt sein.

      Jedes Teilprojekt kann von einem oder mehreren Mitarbeitern bearbeitet werden.

       

      Die Verknüpfung von Projekten, Teilprojekten und Mitarbeitern habe ich hinbekommen. Jetzt zu meiner Frage ;-)

       

      Ich möchte ein (druckbares) Layout erstellen, in dem die Projekte mit ihrem Titel und weiteren Angaben untereinander jeweils in einem kleinen Textblock aufgeführt werden. In diesem Textblock sollen auch Angaben aus den Tabellen Teilprojekte und Mitarbeiter erscheinen, also zum Beispiel

       

      Ort Projekt 1

      Projekttitel Projekt 1

      Projektbeschreibung Projekt 1

      Bezeichnung Teilprojekt 1, Bezeichnung Teilprojekt 2, Bezeichnung Teilprojekt 3

      (Nachname Mitarbeiter 6, Nachname Mitarbeiter 10, Nachname Mitarbeiter 13)

       

      Ort Projekt 2

      Projekttitel Projekt 2

      Projektbeschreibung Projekt 2

      Bezeichnung Teilprojekt 1, Bezeichnung Teilprojekt 2

      (Nachname Mitarbeiter 3, Nachname Mitarbeiter 8, Nachname Mitarbeiter 9)


      etc.


      Ich bin davon ausgegangen, dass das Listen-Layout auf der Tabelle Projekte basieren muss und habe nun versucht, die Feldinhalte aus den anderen Tabellen über Platzhalter in ein Textfeld hinzuzufügen. Das funktioniert jedoch nur mit dem jeweils ersten Eintrag.

       

      Kurz: Kann ich Feldinhalte aus mehreren Bezugsdatensätzen als kommagetrennten Textblock in ein Layout ausgeben, oder mache ich hier einen grundlegenden Denkfehler?

       

      Da ich das Layout gerne auch direkt drucken möchte, möchte ich ungern mit Portalen arbeiten (wenn ich das richtig verstanden habe, sollte man die ohnehin nicht für Drucklayouts verwenden). Die Dateneingabe habe ich über ein Pop-up realisiert.

       

      Gruß,

      kip

        • 1. Re: Feldinhalte aus Bezugsdatensätzen in Textfeld schreiben
          Markus Schneider

          wenn du 'gesammelte' Inhalte aus Bezugstabellen ohne Portale darstellen willst:

          schaue mal bei den folgenden Funktionen nach:

          - Liste(Tabellenauftreten::Feld)

          - SQLAusfuehren(..)

           

          LIste liefert dir eine Liste von Bezugswerten, diese Listen koennen mittels custom functions manipuliert werden (eine grosse Bibliothek von cf ist unter briandunning.com erhaeltlich, FM Advanced noetig)

           

          MIt SQL kann eine Reihe von Werten aus Bezugstabellen 'geholt' werden. SQL ist etwas umstaendlicher als die 'eingebauten' FM Funktionen/Formeln, ist aber maechtiger.

           

          MAn kann damit sogenannte virtuelle Listen erzeugen - die dann wohl der gewuenschten Struktur entsprechen

          • 2. Re: Feldinhalte aus Bezugsdatensätzen in Textfeld schreiben
            etauscher@lhg.de

            Vielleicht würde es im ersten Schritt genügen mit dem Ausschnittwerkzeug zu arbeiten.

            Damit kann mann sehr schön alle Datensätze einer Bezugstabelle anzeigen lassen. Nachdem die Einträge in deiner DB bereits in Feldern vorhanden sind, sollte man sich nicht unbedingt die Arbeit machen, diese in ein Textfile zu quetschen.

             

            Über die Funktion Format:angleichen/ausgeben kann man den Ausschnitt dann so konfigurieren, das leere Zeilen beim Drucken nicht mehr erscheinen.

             

            VG

            ET

            • 3. Re: Feldinhalte aus Bezugsdatensätzen in Textfeld schreiben
              erolst

              kip wrote:

              Ich bin davon ausgegangen, dass das Listen-Layout auf der Tabelle Projekte basieren muss … oder mache ich hier einen grundlegenden Denkfehler?


              Du kannst dein Layout auf Projekte basieren lassen und die gesammelten Daten der Bezugsdatensätze z.B. mit Liste() holen, aber das ist umständlich, unflexibel und benötigt zusätzliche Felder; oder eine Virtuelle Liste verwenden, aber das ist ein wenig kompliziert …

               

              Erst einmal denke ich, dass in deinem beschriebenen Datenmodell noch eine Tabelle fehlt: du solltest

               

              Projekte --< Teilprojekte --< MitarbeiterTeilprojekte >-- Mitarbeiter

               

              haben, denn

              kip wrote:

              Jeder Mitarbeiter kann an einem oder mehreren Teilprojekten beschäftigt sein.

               

              Dann kannst du dein Listenlayout auf MitarbeiterTeilprojekte basieren. Das ist die sauberste Lösung, weil sie die Tabelle mit der höchsten Granularität verwendet.

               

              Das funktioniert allerdings nur dann, wenn jedes Projekt, das du auflisten willst, mindestens einen zugewiesenen Mitarbeiter zu jedem Teilprojekt hat. Hier könnte man ggf. mit automatisch erzeugten, später zu modifizierenden Dummy-Einträgen arbeiten.

              • 4. Re: Feldinhalte aus Bezugsdatensätzen in Textfeld schreiben
                kip

                Vielen Dank für die Rückmeldung! Die Tabelle

                 

                Projekte --< Teilprojekte --< MitarbeiterTeilprojekte >-- Mitarbeiter

                 

                habe ich bereits in meiner Datenbank. Wenn ich die Liste jedoch darauf basieren lasse, erhalte ich bei Projekten mit mehreren Mitarbeitern je Teilprojekt ja jeweils einen gesonderten Eintrag, d.h. die Projekte erscheinen mehrfach in der Liste. Dann fehlt mir der Schritt, mit dem ich die Mehrfachnennungen in einem Eintrag "zusammenfasse", da ich beim Ausdruck ja jedes Projekt nur ein mal in der Liste haben möchte.

                • 5. Re: Feldinhalte aus Bezugsdatensätzen in Textfeld schreiben
                  kip

                  Ja, mit Portalen habe ich auch schon experimentiert. Das fand ich für (später ggf. vielleicht) mehrere kleine Einträge an verschiedenen Stellen in einem Ausdruck etwas umständlich (ein Portal für ein Feld und das dann an mehreren Stellen je angezeigtem Datensatz). Außerdem habe ich bisher keinen Weg gefunden, wie man Bezugsdatensätze in einem Portal nebeneinander anzeigen lassen kann. Im Ergebnis sollte ja

                  Bezeichnung Teilprojekt 1, Bezeichnung Teilprojekt 2, Bezeichnung Teilprojekt 3

                  stehen.

                  • 6. Re: Feldinhalte aus Bezugsdatensätzen in Textfeld schreiben
                    kip

                    Liste() klingt interessant - vor allem in Kombination mit der Funktion Austauschen ( Liste ( Tabelle::Feld ) ; "¶" ; ", " )

                     

                    Nur eine kleine Anfänger-Rückfrage dazu: wo stecke ich diese Liste rein? Ich habe es mit einer Variablen probiert, aber dann werden bei allen Datensätzen alle Bauteile angezeigt - war also keine gute Idee ;-/ Muss ich dann für jede Liste ein eigenes neues Feld definieren?

                     

                    SQL klingt auch interessant. Selbe Anfänger-Frage wie oben: Wo bringe ich diese Funktion unter und wie aktualisiere ich sie?

                    • 7. Re: Feldinhalte aus Bezugsdatensätzen in Textfeld schreiben
                      etauscher@lhg.de

                      Über welche Einträge bzw Felder sind den deine Tabellen miteinander verknüpft ?

                      Evtl fehlt hier nur ein weiterer Eintrag um die Anzeige wie gewünscht darzustellen.

                      • 8. Re: Feldinhalte aus Bezugsdatensätzen in Textfeld schreiben
                        kip

                        Projekte

                        Projekte_ID < = > Projekte_ID in Teilprojekte

                         

                        Teilprojekte

                        Teilprojekte_ID < = > Teilprojekte_ID in Teilprojekte_Mitarbeiter

                         

                        Teilprojekte_Mitarbeiter

                        Mitarbeiter_ID < = > Mitarbeiter_ID in Mitarbeiter

                        • 9. Re: Feldinhalte aus Bezugsdatensätzen in Textfeld schreiben
                          erolst

                          kip wrote:

                          bei Projekten mit mehreren Mitarbeitern je Teilprojekt ja jeweils einen gesonderten Eintrag, d.h. die Projekte erscheinen mehrfach in der Liste. Dann fehlt mir der Schritt, mit dem ich die Mehrfachnennungen in einem Eintrag "zusammenfasse", da ich beim Ausdruck ja jedes Projekt nur ein mal in der Liste haben möchte.

                          Dafür gibt es Auswertungsbreiche.

                           

                          Erstelle einen für Projekte (und nach Wunsch einen weiteren für Teilprojekte) und sortiere nach Projektname/ID (und Teilprojektname/ID). Damit hast du Gruppen und Untergruppen, und im Datenbereich kannst du die für einen Mitarbeiter (bzw. seine Instanz als TeilProjektMitarbeiter) spezifischen Daten anzeigen.

                           

                          Bevor du an Ausschnitten/Portalen scheiterst, an den Eigenheiten von ExecuteSQL() verzweifelst oder fortgeschrittene Methoden wie Virtuelle Liste studierst, wäre es m. E. ratsam, erst einmal die “übliche” Methodik kennen zu lernen und anzuwenden.

                           

                          Das ist zwar weniger “sexy”, aber Grundlagenwissen, das du immer benötigst, egal wie und von woher du die Daten für den Report bekommst.

                          • 10. Re: Feldinhalte aus Bezugsdatensätzen in Textfeld schreiben
                            kip

                            Das klingt sinnvoll, auch wenn ich es noch nicht ganz verstanden habe.

                            Meinst Du damit "Layoutbereiche für Gesamt- und Zwischenergebnisse" (Erläuterung von Layoutbereichen)?

                            Ich verstehe noch nicht, wie das bei

                             

                            Ort Projekt 1

                            Projekttitel Projekt 1

                            Projektbeschreibung Projekt 1

                            Bezeichnung Teilprojekt 1, Bezeichnung Teilprojekt 2, Bezeichnung Teilprojekt 3

                            (Nachname Mitarbeiter 6, Nachname Mitarbeiter 10, Nachname Mitarbeiter 13)

                             

                            helfen kann, aber vielleicht arbeite ich mich noch einmal durch ein Tutorial oder eine Hilfe - als Anfänger ist das ja richtig toll - jeden Tag was neues Lernen, jeden Tag ein neuer Aha-Effekt und das Wissen darum, dass das sehr lange so weiter gehen kann ;-)

                            • 11. Re: Feldinhalte aus Bezugsdatensätzen in Textfeld schreiben
                              etauscher@lhg.de

                              Ich würde das so interpretieren.

                               

                              Projekte

                              Teilprojekte und

                              Mitarbeiter Teilprojekte sind Bewegungsdaten die sich immer wieder verändern können.

                               

                              Mitarbeiter sind Stammdaten.

                               

                              Ich würde die gewünschte Liste wie folgt aufbauen.

                              Basis = Tabelle Projekte

                              Ein Projekt ist hier vermutlich auch nur einmal eingetragen mit einer Zuordnung zu den Mitarbeitern.

                              Einen Ausschnitt, der auf die Tabelle Teilprojekte zeigt. Damit werden alle zugehörigen Teilprojekte zum Hauptprojekt angezeigt.

                              Was aus meiner Sicht noch gemacht werden müsste, ist eine Verknüpfung der Projekt Tabelle und evtl der Teilprojekt Tabelle zum Mitarbeiter um die Namen anzuzeigen. Ich hoffe das die Mitarbeiter ID in beiden Tabellen vorhanden ist.

                              oder

                              wie erholst vorgeschlagen hat, mit Auswertungsbereichen arbeiten.

                              • 12. Re: Feldinhalte aus Bezugsdatensätzen in Textfeld schreiben
                                Markus Schneider

                                ich nutze $$Variablen, die in Layouts angezeigt werden koennen. Soll jemand die Resultate-Texte 'anruehren' (copy, etc.) oder sind Formattierungen noetig, die uU unter Win/Mac nicht identisch sind, dann nutze ich Hilfsfelder (oder auch Hilfstabellen)

                                 

                                Variable setzen ($$MyVar; SqlAusfuehren("SELECT myField FROM myTable WHERE myOtherField=?;"";"";To::feld))

                                 

                                bei SQL Vorsicht mit reservierten Woertern (hatte mal 'Value' nutzen wollen..), Unterstrichen am Anfang etc.

                                 

                                mit SQL kann man 'DISTINCT' anhaengen, dann werden keine doppelten Werte geholt uvm.

                                • 13. Re: Feldinhalte aus Bezugsdatensätzen in Textfeld schreiben
                                  erolst

                                  kip wrote:

                                  Meinst Du damit "Layoutbereiche für Gesamt- und Zwischenergebnisse"

                                   

                                  Wahrscheinlich; ich arbeite mit der englischen Version und bin nicht ganz auf dem laufenden, was die deutsche Loklaisierung betrifft.

                                  kip wrote:

                                  Ort Projekt 1

                                  Projekttitel Projekt 1

                                  Projektbeschreibung Projekt 1

                                  Bezeichnung Teilprojekt 1, Bezeichnung Teilprojekt 2, Bezeichnung Teilprojekt 3

                                  (Nachname Mitarbeiter 6, Nachname Mitarbeiter 10, Nachname Mitarbeiter 13)

                                   

                                  Ich hatte eigentlich angenommen, dass du etwas wie

                                   

                                  Auswertungsbereich nach Auswertungsfeld Projekt:

                                  Ort Projekt 1

                                  Projekttitel Projekt 1

                                  Projektbeschreibung Projekt 1

                                  Auswertungsbereich nach Auswertungsfeld Teilprojekt:

                                  Bezeichnung Teilprojekt 1

                                  Datenbereich

                                  Mitarbeiter 6

                                  … [mehr, falls vorhanden]

                                  Auswertungsbereich nach Auswertungsfeld Teilprojekt:

                                  Bezeichnung Teilprojekt 2

                                  Datenbereich

                                  Mitarbeiter 10

                                  Mitarbeiter 13

                                  … [mehr, falls vorhanden]

                                   

                                  Auswertungsbereich nach Auswertungsfeld Projekt:

                                  Ort Projekt 2

                                  Projekttitel Projekt 2

                                  Projektbeschreibung Projekt 2

                                  Auswertungsbereich nach Auswertungsfeld Teilprojekt:

                                  Bezeichnung Teilprojekt 4

                                  Datenbereich

                                  Mitarbeiter 28

                                  … [mehr, falls vorhanden]

                                  Auswertungsbereich nach Auswertungsfeld Teilprojekt:

                                  Bezeichnung Teilprojekt 5

                                  Datenbereich

                                  Mitarbeiter 35

                                  … [mehr, falls vorhanden]

                                  etc.

                                   

                                  haben willst.

                                   

                                  Soll es tatsächlich so aussehen wie in deinem Beispiel, kannst du das dann tatsächlich vom Projekte-Kontext aus machen; List() is All You Need.

                                   

                                  Schau mal in die angehängte Beispieldatei.

                                  • 14. Re: Feldinhalte aus Bezugsdatensätzen in Textfeld schreiben
                                    kip

                                    Ja, genau so (unusual) sollte es werden ! Klasse - herzlichen Dank für das Beispiel - da kann ich mich als learning-by-doing-Lerner gut dran abarbeiten. Auf das zusätzliche Feld und die Inhalte in Projekte wäre ich sonst nicht gekommen, sondern hätte wahrscheinlich versucht, alles mit einzelnen Feldern im Layout gemacht. Ziemliches Gefummel, v.a. weil die Größen sich in meinem Layout immer wieder selbst anpassen / korrigieren (ich arbeite mit cm-Einstellungen).

                                    So, dann werde ich mir das Beispiel jetzt mal im Detail ansehen ...

                                     

                                    kip

                                    1 2 Previous Next