0

Wie Anschriften aus unterschiedlichen Tabellen sinnvoll im Rechnungslayout ansprechen?

Ich habe eine Rechnungstabelle. Aus der ich automatisch ein Rechnungslayout generiere. Die Rechnungsempfänger können Mitglieder oder Externe sein. Bei Mitgliedern hole ich die Adresse aus der verknüpften Tabelle Mitglieder. Bei Externen mit der verknüpften Tabelle ExterneEmpfänger. Das Problem das ich mit der Vorgehensweise habe, ist dass ich im Rechnungslayout mit if oder case abfragen die Anschriften aus verschiedenen Tabellen und Feldern holen muss, das ist recht unkomfortabel. Gibt es eine bessere Variante?

8 Antworten

null
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Die bessere Alternative wäre es, alle Kontakte in eiiner Tabelle zu halten und die Mitglieder entwerden mit einem Ja/Nein Feld zu kennzeichen oder, wenn es zu viele spezifiesche Felder für Mitglieder gibt, die Kontakte dann mit der Tabelle Mimitglieder zu verknüpfen. 

    Leo

    • Markus.2
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Macht auf jeden Fall Sinn allerdings ist das bei uns leider nicht gut möglich in diesem Fall. Gibt es vielleicht eine andere Idee wie ich einfach dafür sorgen kann die richtigen Adressfelder anzusprechen.

    • Markus.2
    • vor 6 Jahren
    • Gemeldet - anzeigen

    @Leonid Semik Könntest du mir bitte nochmal auf die Sprünge helfen, wie ich Mitgliedertabelle sinnvoll mit einer Kontakt Tabelle verknüpfe? Wo es bei mir hakt ist: Wenn ich eine Kontakttabelle mit Adressfeld habe kann das doch entweder nur das verknüpfte Feld aus der verknüpften Mitgliedertabelle sein oder eins aus Kontakte. Dann hätte ich wieder zwei unterschiedliche was ich ja nicht wollte.

    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Hallo M,

    du kannst die Tabellen nicht einfach verknüpfen. Es muss eine Tabelle sein, wo alle Kontaktdaten drin sind und du kannst dann die Tabelle Mitglieder so gestallten dass dort eine Verknüpfung zu Kontakten steht und die restlichen Daten (Mitglied seit, Beiträge etc.) separat angelegt sind.

    Die bereits vorhandenen Daten kann man z.B. über Konsole übertragen. Etwa so:

    ---

    for ii in select Kundentabelle do

    let newC:= create Kontakte;

    newC.Vorname:=ii.Vorname;

    newC.Nachname:=ii.Nachname;

    newC.'Straße':=ii.'Sraße';

    ...;

    ...;

    ...;

    ii.'Verknüpfung zu Kontakte' :=newC

    end

    ---

    Dann kannst du in der Tabelle Kontakte die Textfelder für Adressdaten und Telefone duchrch Funktionsfelder ersetzen.

    Leo

    • Ninox-Professional
    • planoxpro
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Was ich nicht verstehe: Wird die Adresse nur über eine Verknüpfung zugeordnet? Und wieso erst im Drucklayout?

     

    Wäre es nicht generell sinnvoller, die betreffende Adresse schon in die Rechnung zu übernehmen (aus welcher Tabelle auch immer) und als Bestandteil dieser Rechnung dort zu speichern? Dann müsste man im Drucklayout nur dieses Adressfeld angeben und die Rechnungsadresse würde sich auch nicht im Nachhinein ändern, wenn man sie im Kundendatensatz aktualisiert.

     

    Oder habe ich das Problem falsch interpretiert?

    • Markus.2
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Hi, danke für Eure Antworten.

    >Wäre es nicht generell sinnvoller, die betreffende Adresse schon in die Rechnung zu übernehmen (aus >welcher Tabelle auch immer) und als Bestandteil dieser Rechnung dort zu speichern?

    Wie erreicht man das, verknüpfen ist mir ja bekannt. Aber wie erreiche ich, dass die Daten nur einmal aus einer Tabelle geholt werden und dann dort bleiben ohne sich zu verändern wenn sich der datensatz in der quelltabelle ändert.

    • Ninox-Professional
    • planoxpro
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Das ist relativ einfach. Dazu erstellst du erst mal die betreffenden Felder in der Tabelle 'Rechnungen', also Name, Strasse, PLZ, Ort und was du evtl. sonst noch übernehmen willst. Dann erstellst du in dem Verknüpfungsfeld, über das du jeweils den Kunden wählst, einen Trigger unter "Nach Änderungen folgendes Script ausführen:" (zu finden unter "Erweiterte Optionen").

     

    Dort kannst du aus der Feldliste links im Grunde ganz einfach die Daten auswählen, die du aus dem verknüpften Kundendatensatz (Tabelle 'Kunden') in den Rechnungsdatensatz übernehmen willst. Dann sieht dann bspw. so aus:

     

    Name := Kunden.Name;

    Strasse := Kunden.Strasse;

    PLZ := Kunden.PLZ;
    ...

     

    Ich bin in dem Beispiel davon ausgegangen, dass die Felder in beiden Tabellen denselben Namen haben (Name, PLZ usw.), Voraussetzung ist das aber nicht.

     

    Das war's im Grunde schon. Die Daten sind jetzt statisch in diesem Datensatz der Tabelle 'Rechnungen' gespeichert und bleiben auch erhalten, wenn der Kunde bspw. umzieht und man seine Adressdaten in den Kundenstammdaten ändert. Was ja auch wichtig ist, da sich einmal erstellte Rechnungen nicht ändern dürfen. Das heißt, alle Daten, die auf der gedruckten Rechnung stehen, sollten auch im Rechnungsdatensatz gespeichert sein. Und im Drucklayout greift man natürlich auch direkt auf die Felder der Rechnung zu, nicht auf verknüpfte aus anderen Tabellen.

     

    Infos wie immer nach bestem Wissen und Gewissen, aber ohne Gewähr. ;)

    • Markus.2
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Super, sehr gut erklärt. Ich werde das mal in Ruhe ausprobieren.

Content aside

  • vor 6 JahrenZuletzt aktiv
  • 8Antworten
  • 2773Ansichten