Erste Schritte – Teil III

Öffnen Sie Ninox-Datenbank “Tutorial Teil 2″,
um die Schritte nachzuvollziehen.

1Eine relationale Datenbank

Bisher besteht die Ninox Datenbank nur aus einer Tabelle.
tut_de_pt3_16.21.17

  • Fügen Sie eine neue Tabelle hinzu:
  • Nennen Sie die Tabelle “Bücher” und fügen Sie einige Felder hinzu und übernehmen Sie die Änderungen:

tut_de_pt3_16.21.46

  • Fügen Sie eine weitere Tabelle “Leseerlebnisse” hinzu.
  • Wir wollen ein Feld “Notizen” hinzufügen vom Typ “Text (mehrzeilig)”
  • Ein Auswahlfeld “Bewertung” enthält die Schulnoten 1-5.

tut_de_pt3_16.22.38

Die Leseerlebnisse sollen die Verbindung zwischen Personen und Büchern sein.

2Tabellen verknüpfen

  • Klicken Sie rechts auf “Mit einer Tabelle verknüpfen”.
  • Ziehen Sie die Tabellen “Bücher” und “Personen” als Verknüpfung in die Tabelle “Leseerlebnisse”.

tut_de_pt3_16.22.56

  • Sie können die Referenzen umbenennen.

tut_de_pt3_16.23.04
Nachdem Sie die Änderungen übernommen haben (Admin-Modus), sehen Sie im Reiter “Datenmodell” das Ergebnis:

tut_de_pt3_16.23.10

Es es sind jeweils viele Leseerlebnisse möglich, die auf ein Buch zeigen. Genauso können mehrere Leseerbnisse auf eine Person zeigen.

Ein Leseerlebnis verknüpft jeweil (genau) eine Person mit (genau) einem Buch. Es handelt sich um eine N:M-Verknüpfung.

3Referenzen auf verknüpfte Tabellen

Das Formular “Leseerlebnisse” enthält die definierten Felder und je eine Referenz zur Tabelle “Bücher” und zur Tabelle “Personen.

tut_de_pt3_16.23.34

  • Ändern Sie die Anordnung der Elemente.

Die Refenzfelder auf die anderen Tabellen sind jetzt oben angeordnet:

tut_de_pt3_16.24.24

  • Mit dem ( + ) erstellen Sie eine neue Person bzw. ein neues Buch
  • Die Lupe lässt Sie aus den vorhandenen Büchern und Personen für ein “Leseerlebnis” wählen.

 

  • Und geben Sie ein Leseerlebnis ein.

tut_de_pt3_16.25.10
Ändern Sie die Anzeige des Referenzfelds (für “Bücher” habe ich die Anzeige bereits geändert ):

  • Klicken Sie auf den Schraubenschlüssel (Admin-Modus)

tut_de_pt3_16.25.21

  • Klicken Sie “Anzeigen als”

tut_de_pt3_16.25.34

Der Formel-Editor öffnet sich.

  • Wählen Sie “Text”
  • Geben Sie folgende Formel für die Anzeige des Feldes ein:
    Vorname + ” ” + Nachmane

tut_de_pt3_16.25.54

  • d.h. wir Erwarten Vor- und Nachmanen, durch ein Leerzeichen getrennt.
    Für das Referenz-Feld “Bücher” ist das Ergebnis schon im Screenshot weiter oben zu sehen.

4Mehr Referenzen

  • Öffnen Sie die Tabelle “Bücher”
  • Sie sehen – für mindestens 1 Buch 1 Leseerlebnis, bestehend aus einer Bewertung, und einer (leeren) Notiz.

tut_de_pt3_16.26.48

  • Ändern Sie auch hier anzuzeigenden Spalten.

 

5Mit Formeln: Verknüpfte Tabellen ansprechen

Wir wollen ein weiteres Feld hinzufügen, in dem wir das Durchschnitts-Alter der Leser errechnen und anzeigen wollen:

  • Klicken Sie auf das Feld “+ Feld”.
  • Geben Sie die Formel ein – im “Visuell”-Modus erstellen Sie Formel per drag&drop:

tut_de_pt3_16.27.20

  • Klicken Sie “Ok”, um die Formel zu übernehmen.

tut_de_pt3_16.30.20
Hier sehen Sie das neue Formel-Feld “Leser-Durschnittsalter”.  Es handelt sich – an der grauen Hintergrundfarbe erkennbar – um ein Formel-Feld. Hier können Sie keine Angaben hineinschreiben, das Feld füllt sich automatisch.

Öffnen Sie die Ninox-Datenbank
“Tutorial Teil 3″ und probieren Sie es aus.

15 Gedanken zu „Erste Schritte – Teil III

  1. Hallo,

    ich habe eine Tabelle KUNDEN und eine Tabelle BÜCHER.
    BÜCHER enthält ein Auswahlfeld Status, welches „verliehen“ oder „nicht verliehen“ sein kann.

    Außerdem eine Tabelle BUCHUNGEN und eine Tabelle BUCHUNGSDETAILS.
    BUCHUNGSDETAILS ist verknüpft als Komposition mit BUCHUNGEN.
    BUCHUNGEN ist verknüpft mit KUNDEN.

    In BUCHUNGEN gibt es das Auswahlfeld „Vorgang“, welches „Ausleihe“ oder „Rückgabe“ sein kann.

    Wie kann ich nun in der Tabelle BUCHUNGEN abhängig vom Auswahlfeld „Vorgang“ (also entweder „Ausleihe“ oder „Rückgabe“) dann mir nur die Bücher anzeigen lassen, die bei Vorgang=„Ausleihe“ „nicht verliehen“ sind bzw. bei Vorgang=„Rückgabe“ verliehen sind?

    Gruss Lutz

    1. Hallo Lutz,
      Bei Bücher gibt es auch in erweiterten Einstellungen das Feld “Einschränkungen”
      Dort kannst du Filter setzen. Genaue Formel kann ich dier nur zeigen wenn ich die Datenbank sehe.Es soll etwa so aussehen:
      if a.Vorgang=1 then b.Status=1 else b.Status=2.
      In diesem Fall a-deine Tabelle Buchungen, b-Tabelle Bücher. Die Ziffern 1 und 2 sind die IDs von deinen Auswahl eintragungen bei Vorgang und Status.
      Wenn du die Tabelle Buchungsdetails als n:m Tabelle zu Bücher hast dann sollte die Formel anders aussehen, etwa so:
      if a.Buchungen.Vorgang=1 then b.Status=1 else b.Status=2.

      Grüße
      Leo

      1. hallo Leo, zunächst mal vielen Dank für die schnelle Antwort. ich probiere deinen Lösungsvorschlag in den nächsten Tagen aus. Wie kann ich dir denn meine Datenbank zukommen lassen?
        Gruß, Lutz

          1. Hallo Leo,
            die Datenbank habe ich soeben hochgeladen – Dein Trick mit “Einschränkungen” hat funktioniert (siehe meine Datei).
            Was jetzt noch das i-Tüpfelchen wäre: Nur DIE ausgeliehenen Bücher sollen angezeigt werden, die von dem entsprechenden Kunden ausgeliehen wurden…

            Gruss
            Lutz

            1. Hallo Lutz,
              hier die geänderte Datenbank

              https://www.dropbox.com/s/uwn5l69hbbjvjeu/Lutz%20Kisters.ninox?dl=0

              Habe bei Bücher noch Zusatztextfeld “Ausleiher” eingefügt. den Trigger bei der Tabelle “Buchungsdetails” habe ich auch geändert:

              let AU := Buchungen.Kunden.Name;
              Ausleiher := AU;
              if Vorgang = 2 then
              ‘Bücher’.(Verleihstatus := 2;
              Ausleiher := null)
              else
              ‘Bücher’.(Verleihstatus := 1;
              Ausleiher := AU)

              und die Einschränkungsformel:

              if a.Vorgang = 1 then
              b.Verleihstatus = 2
              else
              b.Verleihstatus = 1 and b.Ausleiher = a.Ausleiher

              Grüße
              Leo

  2. Hallo!
    Ich habe den Träger auf Tabellen-Ebene noch etwas präzisiert, sodaß er auch den Jahreswechsel berücksichtigt. Dieser gibt Nummer nach dem Schema “JJJJ-9999″ aus, in jedem neuen Jahr mit “JJJJ-0001″ beginnend, also aktuell “2016-0001″:

    if text(year(today())) = substr(last((select Bestellung).Nummer), 0, 4) then
    (Nummer := text(year(today())) + “-” + lpad(text(number(substr(last((select Bestellung).Nummer), 5, 4)) + 1), 4, “0″))
    else
    (Nummer := text(year(today())) + “-0001″)

    Vielleicht hilft’s ja jemand…

  3. Hallo Alexander danke für die schnelle Antwort. Besteht eine Möglichkeit diese zu erhöhen beim Druck? Habe Kunden mit mehr als 6 Positionen und möchte nicht einen 2 Rechnung dazu erstellen.

      1. Hallo Alex, das ist nicht gut das man diese in der Tabelle und in der Vorschau vom Drucken nicht sieht, wie kann ich dann überprüfen, ob ich alle Positionen eingetragen habe? Ist das nur bei der Server Version oder bei allen so? Dieses sollte aber dringend geändert werden.
        Alex kann ich dir dazu ein mail mit Bilder sende ? Vielleicht erklärt sich das dann einfacher.
        Gruss
        Max

        1. Hallo Max,

          im Formular werden standardmäßig 6 Zeilen einer verknüpften Tabelle angezeigt. Die Anzahl der angezeigten Zeilen kann man einstellen.
          Schraubenschlüssel aktivieren, oben auf die verknüpfte Tabelle klicken. Jetzt erscheinen weiße Kästchen an den Rändern, die man verschieben kann, um Breite und Höhe anzupassen.
          Hilft das weiter?

          VG, Alex

          1. Hallo Alex
            vielen dank für die Hilfe, ja das hilft und ich habe es gestern durch Zufall entdeckt und kann das nur bestätigen.
            Da ich ein Einsteiger bin suche ich noch Vorlagen, habt ihr noch mehr Vorlagen, ich möchte bei meiner Datenbank eine Tabelle mit Monats bezogen Umsätze, Wareneinsatz und Gewinn erstellen.
            VG Max

            1. Hallo Max, unter Vorlagen findest du in den Kommentaren eine sehr gute Vorlage von Leo Semik zum Thema Lagerverwaltung. Uns ist es ein wichtiges Ziel mehr Vorlagen zur Verfügung zu stellen. Gerne auch an Support schreiben wenn konkrete Fragen bestehen.
              VG, Alex

Hinterlasse eine Antwort