0

Mehrere Einträge in Tabelle erstellen

Guten Abend

Ich bin Hobbyimker und erstelle eine App, damit ich meine Imkerei besser verwalten kann. Etwas Imkerlatein vorneweg, damit Ihr besser versteht, was ich machen möchte.

Der Ort, an dem Bienen stehen nennt man Bienenstand. An diesem Bienenstand habe ich dann x Völker stehen. Während dem Jahr führe ich verschieden Arbeiten durch, die ich im Bienenjournal dokumentieren möchte / bzw. muss. 

Datenmodell

Aktuell kann ich beim einzelnen Bienenvolk Einträge in das Bienenjournal erstellen. Das funktioniert soweit gut und ist im Einzelfall auch gut machbar. Meistens aber arbeite ich alle Völker an einem Bienenstand durch, z.Bsp. beim Einfüttern oder bei der Entmilbung. Dann ist es super mühsam, wenn ich dann jeweils für jedes Volk (aktuell 40 Stk. ) die selben Einstellungen vornehmen muss. 

Einfacher wäre es, wenn ich auf Stuffe Bienenstand Einträge erstellen könnte. Z.Bsp. via Button würde ein Formular erscheinen. Ich wähle dann Füttern und das verwendete Futter aus und könnte dann in einer Liste bei jedem Bienenvolk an diesem Bienenstand noch die verwendete Menge Futter eintragen. Beim Abschluss des Formulars würde dann für jedes Bienenvolk automatisch ein Journal-Eintrag erstellt.

Ich habe aber gerade keine Ahnung, wie ich das umsetzen müsste und freue mich über jede Hilfestellung. Vielen Dank 😊 

9 Antworten

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

    Hallo Andre, einen Journaleintrag für alle Völker eines Bienenstandes zu erstellen, ist an sich kein Problem. Ich habe mal eine Datenbank mit einem ganz einfachen Beispiel erstellt. Du kannst sie hier herunterladen:

     

    https://www.dropbox.com/s/9awxrean6tp7awj/Imkerei_Andre.ninox?dl=0

     

    Problem: Das funktioniert nur mit denselben Werten. Wenn bspw. zu jedem Volk unterschiedliche Futtermengen einzutragen sind, dann muss man das in jedem Datensatz manuell machen. Man könnte in einem solchen Fall per Schaltfläche für alle betreffenden Völker einen Journaleintrag mit den identischen Werten erzeugen, dann in die Tabelle 'Bienenjournal' wechseln und dort im Tabellenmodus (Doppelklick in den sichtbaren Bereich der Tabelle) nacheinander die fehlenden Werte zu den Futtermengen eintragen. Das ginge dann so wie bei Excel und entspräche in etwa deiner "Liste".

    • Geeklab
    • Andre_Zumsteg
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Copytexter
    Vielen Dank für deine Beispiel Datenbank und deine Zeit. Ich habe gestern im der offenen Sprechstunde meine Frage ebenfalls stellen können und wir haben für ein erstes Feld eine Schleife angelegt. Wie bei deinem Beispiel wird dann einfach der selbe Wert eingetragen, was in 90% der Fälle auch korrekt ist. Ich habe das nun für weitere Felder erweitert, aktuell sieht es so aus:

    let myauswahl := Auswahl;
    let mydatum := Datum;
    let mymenge := 'Menge (kg)';
    let myart := Art;
    let mymittel := Mittel;
    let mymethode := Methode;
    let mymenge := Menge;
    let myvnb := 'Varroabefall n. Behandlung';
    let mywit := 'Wartezeit in Tagen';
    for i in 'Bienenvölker' do
    let neu := (create 'Bienen Journal');
    neu.('Bienenvölker' := i);
    neu.(Auswahl := myauswahl);
    neu.(Datum := mydatum);
    neu.('Menge (kg)' := mymenge);
    neu.(Art := myart);
    neu.(Mittel := mymittel);
    neu.(Methode := mymethode);
    neu.(Menge := mymenge);
    neu.('Varroabefall n. Behandlung' := myvnb);
    neu.('Wartezeit in tagen' := mywit)
    end

    In deinem Beispiel habe ich gesehen, dass du 

    let me := this;

    nutzt. Verstehe ich das richtig, dass ich mir damit die ganze let Liste oberhalb von for ersparen könnte? 

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

    Jepp, geht sogar noch kürzer...

     

    let me := this;
    for i in 'Bienenvölker' do
    let neu := (create 'Bienen Journal');
    neu.(
      'Bienenvölker' := i;

      Auswahl := me.Auswahl;
      Datum := me.Datum;
      'Menge (kg)' := me.'Menge (kg)';
      Art := me.Art;
      Mittel := me.Mittel;
      Methode := me.Methode;
      Menge := me.Menge;
      'Varroabefall n. Behandlung' := me.'Varroabefall n. Behandlung';
      'Wartezeit in Tagen' := me.'Wartezeit in Tagen'
    )

    end

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

    Genau. Mit dem "let me := this" speichert man die ID des aktuellen Datensatzes in der Variable 'me' und kann über diese dann immer wieder auf alle Felder des betreffenden Datensatzes zugreifen, ohne sie in Variablen zwischenspeichern zu müssen. Die Variable 'neu' wiederum enthält die ID des mit "create" erzeugten Datensatzes im 'Bienen Journal'. Wenn man in selbigem mehrere Felder ansprechen will, kann man das verkürzt so darstellen, wie Torsten es zeigt.

    • Geeklab
    • Andre_Zumsteg
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Das hilft mir echt weiter und so wird der Code auch wieder viel übersichtlicher. Vielen Dank Copytexter und Torsten Stang. Toll das in diesem Forum der Community Support noch so richtig gelebt wird :-)

    • Geeklab
    • Andre_Zumsteg
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ich hätte noch eine Frage. Es wäre cool, wenn sich nach dem Betätigen des Buttons das Popup wieder schliessen würde. Damit ist die Chance für doppelte Einträge kleiner. Gibts dafür auch einen Befehl?

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

    Hey,

     

    closeRecord(this) schliesst den aktuellen Datensatz.

    • Geeklab
    • Andre_Zumsteg
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Torsten

    Mit closeRecord(this) hatte ich immer einen Fehler, aber mit closeReport() hat's super funktioniert. Vielen Dank für den Tip 😊

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

    Öhm, ich denke Du meinst closeRecord() ;-)