Leere Zeilen löschen bzw. nicht speichern

  • Hallo zusammen,


    ich habe eine Tabelle angelegt welche mit Verborgenformeln quasi aufgeklappt werden.


    Sprich sobald in dem ersten Feld Kategorie etwas eingegeben wird, öffnet sich automatisch darunter ein neues Eingabefeld. Hintergrund ist der, das ich eine Tabelle mit 45 Eingabemöglichkeiten hinterlegt habe. Aber wenn man diese nicht verbirgt, erschlägt einen die Eingabemaske. So wird wirklich nur das angezeigt was auch ausgefüllt ist.


    Problem beim abspeichern ist, das die Leerzeile immer mit abgespeichert wird und mir z.B. bei Ansichten Probleme macht.


    Ich habe schon versucht mit dieser Bedingung im Querysafe die nicht ausgefüllten Felder zu löschen, aber das funktioniert nicht.


    @If(Kategorie_1="";FIELD Status_Punkte_1 :="" & FIELD Erinnerung_1:=@DeleteField;"");


    Kann mir hier jemand helfen wie ich die letzte leere Zeile irgendwie beim speichern löschen oder ignorieren kann?

  • Du kannst deine Hide When-Formel anpassen. Frag ab, ob es sich um ein neues Dokument handelt, oder ob das Dokument im Edit-Mode ist. Wenn ja, zeig die Zeile, wenn nicht, dann versteck sie.

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • Sollte es dann trotzdem funktionieren das ich beim querysafe die Felder, die nicht belegt sind bzw. wo die Kategorie ="" ist gelöscht werden. Weil wenn ich den Datensatz öffne und die Felder anschau, dann gibt es z.B. trotzdem ein Feld Kategorie_11 usw. Die dürften doch überhaupt nicht mehr auftauchen oder?

  • Wo schaust du dir die Felder an ? In den Dokumenteigenschaften ?
    Dort sind die Felder immer vorhanden unabhängig von der Hide-When Formel
    Das kannst du auch nicht verhindern
    Und bei der Anzeige in Views kannst du ja leere Felder einfach per @Trim entfernen

  • Das ist schon alles klar. Aber in der Ansicht erscheint mir dann immer die letzte leere Zeile als nicht kategorisiert.=> Screenshot


    Ich schau mir die Dokumenteigenschaften an, nachdem das Dokument gespeichert wurde. Mein Ansatz war es zu sagen, das beim speichern einfach geprüft wird ob die Kategorie leer ist. Wenn ja danach einfach die weiteren Felder in der Zeile löschen.


    Aber was passiert dann wenn ich doch noch was erfassen muss. Daher wird es "besser" sein die nicht kategorisierten Einträge aus der Ansicht zu bekommen. Aber wie?

  • Was steht denn in der Spalte "Ziel" für eine Formel?


    Ich nehme mal an:


    Ziel : Ziel_1 : Ziel_2 ...


    dann wäre ein


    @Trim(Ziel : Ziel_1 : Ziel_2 ...)


    hilfreich, da damit leere Einträge nicht dargestellt.

  • Das steht in der Zeile Ziel


    (@If(Kategorie !="" ;Ziel;"")):
    (@If(Kategorie_1 !="" ;Ziel_1;"")):
    (@If(Kategorie_2 !="" ;Ziel_2;"")):
    (@If(Kategorie_3 !="" ;Ziel_3;"")):
    .
    .
    .

  • Dann mach da mal komplett ein @Trim(..) drum und die "Nicht kategorisiert" Kategorie wird wegfallen.


    Denn wenn Kategorie_1 nicht gefüllt ist, machst du mit : "" trotzdem ein Leerelement in die Liste und damit entsteht die leere Kategorie.

  • hm...einen habe ich aber noch. In der Zeile Erinnerungsdatum habe ich folgende Formel hinterlegt. Problem ist, das die Spalte dann nicht nach Datum sortiert ist wegen dem @text. Wenn ich aber das @text heraus nehme, bekomme ich den Fehler:


    FEHLER:Falscher Datentyp für Operatir oder @Funktion: Zeit/Datum erwartet.


    Ich denke es liegt eventuell auch an der Leerzeile die gespeichert wird, da hier kein Datumswert eingetragen ist sondern leer. Kann das sein?




    (@If(Kategorie !="" & Status_Punkte ="offen";@Text(Erinnerung);"")):
    (@If(Kategorie_1 !="" & Status_Punkte_1 ="offen" ;@Text(Erinnerung_1);"")):
    (@If(Kategorie_2 !="" & Status_Punkte_2 ="offen";@Text(Erinnerung_2);"")):
    (@If(Kategorie_3 !="" & Status_Punkte_3 ="offen" ;@Text(Erinnerung_3);"")):

  • Ja genau so ist es.
    Nach dem Trim kannst du die Ergebnisliste ja wieder in Datumswerte umwandeln oder du gibst eben keine Leerstrings zurück


    Und das mit dem @Trim hatte ich dir ebenfalls schon am Anfang gesagt.
    Du solltest die Antworten vielleicht auch mal sorgfältiger lesen