11 Antworten Neueste Antwort am Dec 15, 2016 8:35 AM von user17080

    briefanrede erstellen FM12

    user17080

      hallo in die weite des virtuellen raumes,

       

       

      ich hab da mal eine frage: ich habe in filemaker eine adressdatenbank, darin ist das geschlecht durch die anrede herr bzw. frau geregelt. ich möchte nun die anrede in einem brief entsprechend verknüpfen oder besser gesagt erstellen. also sehr geehrte frau oder sehr geehrter herr. wie kann ich dies erreichen. wie sähe bsw. eine formel hierzu aus oder regelt man soetwas über einen script?

       

       

      danke für eure antworten schonmal im voraus

        • 1. Re: briefanrede erstellen FM12
          erolst

          Leg mal ein neues Formelfeld an, sagen wir cAnrede, mit Ergebnistyp Text und definiert als

           

          Wenn (

            Anrede = Frau ;

            "Sehr geehrte Frau " ;

            "Sehr geehrter Herr "

          )

          & nameNach

           

          Dann kannst du im Drucklayout Platzhalterfelder verwenden, z. B. ...

           

          <<cAnrede>>,

           

          <<briefText>>

           

           

          Je nachdem, wie deine Tabellen zusammen hängen oder welche FM-Version du verwendest, gäbe es noch andere Lösungen, die auch ohne Formelfeld auskommen.

          1 von 1 Personen fanden dies hilfreich
          • 2. Re: briefanrede erstellen FM12
            user17080

            hallo erolst,

             

            danke für deine antwort,

             

            aber das funktioniert nicht. mein feld anrede wird über eine werteliste befüllt. wenn ich es so wie von dir beschrieben eingebe, dann gibt mir fm im formeleditor die meldung aus: feld nicht vorhanden. wenn ich die frau in "" setze, dann kann ich das formelfeld schließen, passieren tut aber nix.

             

            ich verwende filemaker 12. als tabelle existiert im moment nur eine.

            • 3. Re: briefanrede erstellen FM12
              erolst

              Da hast du mich anscheinend falsch verstanden: du sollst ein neues Feld erstellen (lass dein bestehendes Feld 'Anrede' bloß in Ruhe! ), Typ Formel, Ergebnistyp Text. Ich habe das cBriefanrede genannt, damit man sieht, dass es ein Formelfeld ist.

               

              Du hast übrigens recht, dass ich meiner Beispielformel einen Fehler gemacht habe; richtig ist

               

              Wenn (

                anrede = "Frau" ;

                ...

               

              also den abgefragten Wert in Anführungszeichen setzen. Die Feldreferenz (fett) musst du durch den Namen deines Anredefeldes ersetzen.

               

              Wie du dein Anredefeld befüllst, ist übrigens für die Formel unerheblich; wichtig ist, was drinsteht, nicht wie es dort hineinkam.

              1 von 1 Personen fanden dies hilfreich
              • 4. Re: briefanrede erstellen FM12
                user17080

                nochmal dank, denn es funktioniert.

                 

                es war natürlich ertsmal mein fehler, denn ich hatte ein text und kein formelfeld angelegt. nun gehts, allerdings kein wortzwischenraum auch müßte ich vor dem nachnamen noch den titel einfügen (beides als felder vorhanden).

                 

                und da habe ich dann das problem, wenn ich nach einem platzhalter einen zwischenraum einfüge, das ich dann unter umständen (wenn feld leer) einen doppelten wortzwischenraum habe.

                 

                • 5. Re: briefanrede erstellen FM12
                  user17080

                  das leerzeichen habe ich in der formel mit " " eingefügt, allerdings habe ich wegen des titels nach wie vor in der ausgabe 2 leerzeichen. also: wenn titel leer ist, dann kein leerzeichen.

                  • 6. Re: briefanrede erstellen FM12
                    erolst

                    Dann bau dir ein Feld für den kompletten Namen: cNameKomplettMitTitel (Formel, Text) =

                     

                    SetzeVar (

                      namensListe = Liste ( titel ; nameVor ; nameNach ) ;

                      Austauschen ( namensListe ; Char(10) ; " "

                    )

                     

                    Dann verwendest du in der Formel für cBriefanrede dieses neue Feld - also

                     

                    Wenn (

                      anredeFeld = "Frau" ;

                      "Sehr geehrte Frau " ;

                      "Sehr geehrter Herr "

                    )

                     

                    & cNameKomplettMitTitel

                    1 von 1 Personen fanden dies hilfreich
                    • 7. Re: briefanrede erstellen FM12
                      user17080

                      ok, da sagt mir frau filemaker, zuviele oder zuwenig klammer oder die erwartung nach einem operator wird nicht erfüllt.

                       

                      ich habe hier ein feld als text angelegt: namensListe, denn dies hatte fm zuvor erwartet bzw. stellte fest, daß ein solches feld nicht vorhanden ist.

                       

                      formel sieht nun mal so aus:

                       

                      SetzeVars (

                      namensListe = Liste ( titel ; Nachname ; )

                      Austauschen ( namensListe ; Char(10) ; " "

                      )

                      • 8. Re: briefanrede erstellen FM12
                        erolst

                        SetzeVars (

                          namensListe = Liste ( titel ; Nachname ) ; // du hast Klammer und Semikolon vertauscht

                          Austauschen ( namensListe ; Char(10) ; " " ) // du hast die schließende Klammer vergessen

                        )

                         

                        Erste Regel: Klammern zählen; wenn Ergebnis ungerade: Fehler

                        Zweite Regel: wenn direkt vor einer schl. Klammer ein Semikolon steht: Fehler

                        (nicht direkt eine Regel, aber dennoch immer ein Fehler )

                         

                        user17080 wrote:

                        ich habe hier ein feld als text angelegt: namensListe, denn dies hatte fm zuvor erwartet bzw. stellte fest, daß ein solches feld nicht vorhanden ist.

                        Nope: namensListe ist eine Variable (daher kommt das SetzeVars( )), mit deren Hilfe du sowohl Hilfsfelder als auch übermäßig verschachtelte Formeln vermeiden kannst.

                         

                        Ich kann dir in Kürze mal eine (minimalistische) Beispieldatei posten.

                        • 9. Re: briefanrede erstellen FM12
                          user17080

                          sagen wir mal so, wir waren beide etwas vergesslich

                          aber ansonsten klappt das nun ganz gut, allerdings macht mir die formel einen zeilenumbruch wenn ein titel dabei ist. aber ich muß schon sagen, fm begeistert mich immerwieder aufs neue.

                          • 10. Re: briefanrede erstellen FM12
                            erolst

                            user17080 wrote:

                            allerdings macht mir die formel einen zeilenumbruch wenn ein titel dabei ist.

                            Das sollte aber nicht sein.

                             

                            Als Anlage findest du die versprochene Beispieldatei, aus der du ersehen kannst, wie man es richtig macht ...

                             

                            user17080 wrote:

                            sagen wir mal so, wir waren beide etwas vergesslich

                            (Datenbank-)programmierer sind faul und vergesslich, darum versuchen sie, möglichst viel Arbeit weg zu programmieren …

                            1 von 1 Personen fanden dies hilfreich
                            • 11. Re: briefanrede erstellen FM12
                              user17080

                              die formel aus der beispieldatei funktioniert wunderbar!

                               

                              merci!