0

Den zweiten Wert einer Tabelle ermitteln

Liebe Leute, ich benötige eure Hilfe:

Ich möchte in einer Druckansicht den zweiten Eintrag in einer Tabelle mit vielen Einträgen ermitteln und darstellen. 

Weiss jemand wie man dies erreichen kann?

Vielen lieben Dank! 

Adrian

18 Antworten

null
    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hi Adrian. Dies gibt Dir den zweiten Datensatz einer Tabelle wieder. Mirko

    first((select TABELLE)[!= first(select TABELLE)])
    
      • Senectute_24
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Mirko 

      Hallo Mirko & danke vorerst... es klappt leider nicht.

      • mirko3
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Senectute 24 Du mußt natürlich noch Dein Datenfeld anhängen, das Script gibt Dir nur den Record wieder.

      first((select TABELLE)[!= first(select TABELLE)]).FELD
      • Senectute_24
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Mirko 

      ok, hab es so ausprobiert

      first((select Personaleinsatz).Personal[!= first((select Personaleinsatz).Personal)]).Nachname
      

      aber ich bekomme folgenden Fehler:  "Expression does not return multiple values". Hmm... 

      • mirko3
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Senectute 24 Dann sind wahrscheinlich die Tabellen Personaleinsatz und Personal 1:N verknüpft. Es müßte so gehen, wenn das Script in der Tabelle Personaleinsatz steht. Wenn es immer noch nicht stimmt, dann offenbare mal ein paar Infos zum Datenbankmodell und Position des Scripts.

      PS. Die Varianten von Planox funktionieren natürlich auch, wenn Du sie umschreibst.

      first(Personal[!= first(Personaleinsatz.Personal)]).Nachname
      
    • Ninox-Professional
    • planoxpro
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Eine Möglichkeit:

    let myArray := ((select TABELLE) order by number(Nr));
    item(myArray, 1)

    Eine andere:

    let myFirst := first((select TABELLE) order by number(Nr)).number(Nr);
    first(select TABELLE where number(Nr) > myFirst)
    
      • Senectute_24
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Hallo planox. pro 

      Vielen lieben Dank dafür! ich hab Deinen Lösungsansatz ausprobiert..

      let myArray := ((select Personaleinsatz).Personal.Nachname order by number(Nr));
      item(myArray, 1)
      

      aber ich bekommen den Fehler: "Expression does not return a complex" Spalte 77. d.h. "Nr"   

      • Ninox-Professional
      • planoxpro
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Senectute 24 Versuch's mal so:

      let myArray := ((select Personaleinsatz) order by number(Nr));
      item(myArray, 1).Personal.Nachname
      
    • Senectute_24
    • vor 1 Jahr
    • Gemeldet - anzeigen

    ich stell mal eine Abbildung meines Datenmodells rein. 

    Ich versuche also in der Druckansicht der Tabelle 'Klienten', den zweiten Eintrag (den Nachnamen) aus der Tabelle 'Personal'  auf ein Dokument darzustellen.  Vielen lieben Dank! 

      • mirko3
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Senectute 24 Siehe oben Planox, oder

      first((select Personaleinsatz)[!= first(select Personaleinsatz)]).Personal.Nachname
      

      ;-)

      • Senectute_24
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Mirko sorry, aber ich bekomme immer noch nicht der erwarteten Eintrag :(

      • Ninox-Professional
      • planoxpro
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Senectute 24 

      Da 'Klienten' 1:N mit 'Personaleinsatz' verknüpft ist, gehe ich davon aus, dass der zweite aus der Menge der mit diesem Klienten verknüpften Datensätze ermittelt werden soll. Dann muss man das "select" weglassen, sonst werden alle Datensätze der Tabelle 'Personaleinsatz' angesprochen.

      let myArray := ((Personaleinsatz) order by number(Nr));
      item(myArray, 1).Personal.Nachname
      • Senectute_24
      • vor 1 Jahr
      • Gemeldet - anzeigen

      planox. pro  Hallo nochmal, gibt es eine ähnliche Lösung für den VORLETZTEN WERT in der selben Tabelle?

      Vielen lieben Dank! 

      • Ninox-Professional
      • planoxpro
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Senectute 24 Auf die Array-Lösung bezogen müsste es so gehen:

      let myArray := ((Personaleinsatz) order by number(Nr));
      let myL := length(myArray);
      item(myArray, myL - 2).Personal.Nachname
      
      • Senectute_24
      • vor 1 Jahr
      • Gemeldet - anzeigen

      planox. pro Hallo ! 

      Nein, die Lösung liefert leider kein Ergebnis.

      liebe Grüße 

      • Ninox-Professional
      • planoxpro
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Senectute 24 

      Hab's gerade getestet. Bei mir funktioniert's. Alternativ mal den anderen Weg probieren:

      let myLast := max(Personaleinsatz.number(Nr));
      last(Anschriften[number(Nr) < myLast]).Personal.Nachname
      
    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Senectute 24 Kann natürlich auch am 1.1. liegen, daß ich etwas schwer begreife. Der zweite Nachname aus der Tabelle Personal ist

    first((select Personal)[!= first(select Personal)]).Nachname
    

    ...so zu bekommen. Der Umweg liefert ja nur den einen Namen des zweiten,  verknüpften Datensatzes von Personaleinsatz und ist also falsch von mir. Dann schauen wir mal, ob ich es jetzt begriffen habe.

    • Senectute_24
    • vor 1 Jahr
    • Gemeldet - anzeigen

    ich bedanke mich recht herzlich bei Mirko  und planox. pro . Letztendlich hat es mit der Lösung von planox. pro geklappt.

    Vielen lieben Dank nochmal! Ein wunderschönes neues Jahr!

    beste Grüße!

Content aside

  • Status Answered
  • vor 1 JahrZuletzt aktiv
  • 18Antworten
  • 96Ansichten
  • 3 Folge bereits