0

Automatisches Ausfüllen anderer Felder

Hallo in die Runde,

ich versuche mich gerade an einer DB für eine Freundin die ihre Rechnungen am liebsten über die eintragung von Leistungsziffern (Heilpraktiker) erzielen möchte. Das heißt ich will in den rechnungen vor die Leistungsziffer eintragen und er schreibt dann in die anderen Felder die “BEschreibung, Preis   etc” am besten sogar noch mit einer Anzahl oder einem Faktor. 
Leider bin ich noch zu neu um Ohne Euch hier weiter zu kommen, auch in den Beispiel DB habe ich keinen Hinweis gefunden.

11 Antworten

null
    • RMS Immobilière
    • Arsene_Nickels
    • vor 3 Jahren
    • Gemeldet - anzeigen

    so genau versteh ich nicht, was du möchtest. Heisst das, dass die Rechnung (der Preis, die Beschreibung) durch eine Leistungsziffer bestimmt wird?

    Du baust eine komplett neue Datenbank auf?

    du brauchst also eine Tabelle “Kunden”, eine Tabelle “Leistungsziffern” und eine Tabelle “Rechnungen” wo alles zusammengeführt wird. Wo hakt es denn?

    • Sven
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Die Tabellen habe ich bereits mir fehlt nur die lösung wenn ich vor zB eine 1.0 eingebe, dass er dahinter in die anderen Felder schreibt “Massage” und bei Preis “15€” etc. Die Logik hinter wenn feld 1 = 1.0 dann feld 2 Massage und feld 3 15 € fehlt mir

    denn in feld 1 müssen ja ca 25 Ziffern und deren Folgen eingetragen werden

    • Torsten_Stang.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Sven,

     

    Du benötigst, wie Arsène bereits ausgeführt hat, eine Tabelle “Leistungsziffern” - in dieser pflegst Du mittels den Spalten “Leistungsziffer”, “Beschreibung” und “Preis”.

     

    In der Rechnung kannst Du beim dortigen Feld “Leistungsziffer” dann als Trigger bei Änderungen folgenden Code hinterlegen:

     

    let my := this;
    if my.Leistungsziffer then
       let myLZ := first(select “Leistungsziffern” where Leistungsziffer = my.Leistungsziffer);
       my.Beschreibung := myLZ.Beschreibung;
       my.Preis := myLZ.Preis
    end

     

    lg, Torsten

    • RMS Immobilière
    • Arsene_Nickels
    • vor 3 Jahren
    • Gemeldet - anzeigen

    ich versteh immer noch nicht deinen Aufbau. Wenn du, mal angenommen, eine Tabelle “Leistungsziffern” hast, mit, sagen wir, 3 Feldern:

    Ziffer, Beschreibung und Preis. Diese muss ja nur einmal komplett manuell gefüllt werden.

    In der Tabelle Rechnung hast du dann zB wieder ein Feld Leistungsziffer und 2 Brechnungsfelder.

    In den Berechnungsfelder schreibst du

    let me :=this;

    let xx:=select Leistungsziffern where Ziffer=me.Leistungsziffer.Beschreibung ;

    (Leistungsziffern=Name der Tabelle, Ziffer = Name des Feldes in der Tabelle Leistungsziffern, me.Leistungsziffer=Name des Feldes in der Tabelle Rechnungen)

    xx  

    und schon hast du die Beschreibung aus der Tabelle herausgepflückt  

    analog im 2. Berechnungsfeld      

    et me :=this;

    let xx:=select Leistungsziffern where Ziffer=me.Leistungsziffer.Preis ;

    xx                 

    • RMS Immobilière
    • Arsene_Nickels
    • vor 3 Jahren
    • Gemeldet - anzeigen

    ups, ja, “first” vorneweg sollte nicht vergessen werden. Danke Torsten

    • Torsten_Stang.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Arsène,

     

    ich würde in der Tabelle Rechnungen tatsächlich nicht mit Berechnungsfeldern für Beschreibung und Preis arbeiten - im Bedarfsfalle möchte man die ja manuell bearbeiten/eintragen. Von daher ist ein Befüllen durch Eingabe im Feld Leistungsziffer wie von mir angeführt, IMHO der bessere Weg.

     

    lg, Torsten

    • Sven
    • vor 3 Jahren
    • Gemeldet - anzeigen

    ich glaube ich muss mal am Mittwoch in einen Workshop. :-(

    Ich habe eine Tabelle gemacht mit “Rechnungen” in denen eine Verknüpfung zur Tabelle “Leistungsziffern” besteht in der ich die Felder “Ziffer” , “Preis” und “Beschreibung” habe. 

    Das bedeutet für mich, dass ich in der “rechnungen” zwar aussuchen kann welche “Lesitungsziffer” ich auswählen will, ich kann aber nicht in das erste feld eine Ziffer eintragen sodass er in den nächsten Feldern “Beschreibung und Preis automatisch meine hinterlegten ergebnisse auswirft. Finde leider auch keine entsprechende vorlage zum nachlesen und anschauen

    • RMS Immobilière
    • Arsene_Nickels
    • vor 3 Jahren
    • Gemeldet - anzeigen

    doch, per select...where-Anweisung kannst du genau bestimmen, welceh Felder er nimmt

    wenn du in der Tabelle Rechnungen ein Feld hast, das zB LZ heisst (für Leistungsziffer)

    und du gibst in dieses Feld 1.0 ein dann lautet die select-Anweisung

    let me:=this (ob me oder eine andere Bezeichnung für diese Variable ist gleich, aber sie verweist auf genau dieses geöffnete Formulat)

    first(select Leistungsziffern where Ziffer=me.LZ)  (mit select bist du praktisch in der genannten Tabelle, hier Leistungsziffern, deshalb das me.LZ, damit Ninox weiss, dass es das Feld Ziffer in der Tabelle Leistungsziffern mit dem Feld LZ in dieser Tabelle, also der Tabelle Rechnungen vergleichen muss, “first” weil Ninox in dieser Tabelle mehrere Etnträge hat und nicht von vorneweg weiss, ob die Kondition nur ein oder mehrere Felder finden wird, first beschränkt die Suche auf das erste Feld, das diese Kondition erfüllt)

    Damit hast du den Datensatz definiert, und Ninox wird diesen Datensatz finden. Was jetzt noch fehlt, ist, was es mit diesem Datensatz machen soll.

    Also hängst du hinten das Feld dran, nachdem du suchst in diesem Datensatz:

    first(select Leistungsziffern where Ziffer=me.LZ).Preis

    Damit du mit dem Resultat etwas anfangen ksnnt, musst du Ninox sagen, wo es den Preis anzeigen soll, nämlich in dem Feld der Tabelle Rechnungen.

    Es gibt 3 Wege, diese Formel unterzubringen, in eine Schaltfläche, was hier wenig Sinn macht, in eine BErechnung mit dem Nachteil, dass eine Berechnung nicht anderen Feldern Werte zuweisen kann oder in einem vorherdefinierten Feld in der Tabelle mit Hilfe eines Triggers.

    Letzteres ist hier die beste Lösung, weil, wie Thorsten schon sagte, das Feld automatisch bestückt, aber trotzdem noch manuell abgeändert werden kann.

    Du hast also ein Feld mit einem x-beliebigen Namen, sagen wir Endpreis, um nicht 2x den gleichen zu verwenden (was ber kein Problem wäre)

    Also vervollständigst du die select Anweisung wie folgt:

    Endpreis:=first(select Leistungsziffern where Ziffer=me.LZ).Preis

    und schon steht der Preis der Tabelle Leistungsziffern in dem Feld Endpreis der Tabelle Rechnungen

    alle Klarheiten beseitigt damit? ;-)

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

    Mich würde ja noch interessieren, was dieser Satz von Sven bedeutet:

     

    “denn in feld 1 müssen ja ca 25 Ziffern und deren Folgen eingetragen werden”

     

    Geht es da um 25 verschiedene Rechnungs-Positionen oder gibt es Abhängigkeiten wie “Wenn Ziffer = 1.0 dann nimm auch Ziffern 1.01 bis 1.25” oder ...? Jedenfalls: Wenn es mehrere Positionen pro Rechnung geben kann, bräuchte man dafür auf jeden Fall auch noch eine Untertabelle.

    • Sven
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Nein es gibt 25 Leistungszifdfern. Ich versuch das mal am WE VIELEN DANK 

    • mirko3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Sven. Wenn Deine Freundin nach GeBüH abrechnet, dann ist es unkompliziert. Es gibt ja nur vier Felder (Gebührenziffer, Inhalt, Preisspanne, Anzahl). Du könntest sogar die Datenbank “Rechnungen” benutzen und statt “Produkte” die Leistungen erfassen. Die Feldnamen sind ja änderbar. Da die Abrechnung eine Leistungsspanne zuläßt, kannst Du den niedrigsten Preis vortragen und sie kann dann manuell ändern, oder Du baust ein Feld “Faktor” mit ein und dessen Eintrag würde per Script den Preis errechnen. Ich würde das Preisfeld durch ein Auswahlfeld ansprechen und einen minPreis, einen maxPreis und einen fairen Preis in der Mitte festlegen. Hoffe, es hilft. Mirko

Content aside

  • vor 3 JahrenZuletzt aktiv
  • 11Antworten
  • 1163Ansichten