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
-
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?
-
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
-
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
-
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
-
ups, ja, “first” vorneweg sollte nicht vergessen werden. Danke Torsten
-
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
-
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
-
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? ;-)
-
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.
-
Nein es gibt 25 Leistungszifdfern. Ich versuch das mal am WE VIELEN DANK
-
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 4 JahrenZuletzt aktiv
- 11Antworten
- 1165Ansichten