Datensatz-Auswahl aus selektierten Zeilen einer Array-Listbox

Hallo,
ich stehe gerade auf dem Schlauch und vermutlich ist es ganz einfach.

Gegeben ist eine Array-Listbox, die aus einer Datensatz-Auswahl entstanden ist.
Der User kann mit Mehrfach-Auswahl verschiedene Zeilen selektieren.
Jetzt benötige ich die korrespondierende Auswahl der Datensätze der selektierten Zeilen.

Ok, ich könnte beim Erstellen der Arrays die Record-Nummern mitschreiben und verwenden.
Aber werden die Spalten der Listbox sortiert, nutzt mir das nichts mehr.

Kann mir jemand sagen, wie ich vorgehen könnte?
Vielen Dank!

suchen Sie nach
<http://livedoc.4d.com/4D-Programmiersprache-16-R5/Suchen/QUERY-WITH-AR
AY.301-3481585.de.html>QUERY WITH ARRAY>?

: Johannes PUFF

Ok, ich könnte beim Erstellen der Arrays die Record-Nummern
mitschreiben und verwenden.
Aber werden die Spalten der Listbox sortiert, nutzt mir das nichts
mehr.
Warum sollten die nicht mehr helfen? Unsichtbare Spalten der Listbox werden mitsortiert.

Ja, vielen Dank, der Befehl klingt gut.
Aber leider meckert er: Argumenttypen sind nicht kompatibel.

Das finde ich umso verwundbarer, als das Array vorher aus dem gleichen Datenfeld via SELECTION TO ARRAY entstanden war.
Zur Info: das Datenfeld ist vom Typ Ganzzahl, der Compiler hat das Array als ARRAY INTEGER typisiert.
Ein Gegentest mit Typ String hat funktioniert.

Haben Sie vielleicht noch ein Idee?
Vielen Dank!

Wieso benutzen Sie nicht USE SET mit der Auswahlmenge???
Sonst verstehe ich ihre Frage nicht…

Naja, die Auswahl-Menge, aus der die Arrays erstellt wurden, wird doch nicht durch die Listbox sortiert - oder?
Wie dann von den angeklickten Zeilen der Listbox auf die richtigen Datensätze kommen?

Ja, die unsichtbare Spalte ist eine gute Lösung!
Ich hatte diese Möglichkeit total aus den Augen verloren.

Danke für die Hilfestellung!

: Johannes PUFF

Aber leider meckert er: Argumenttypen sind nicht kompatibel.

Wenn Sie mit QUERY WITH ARRAY nach einem LongInt-Feld suchen wollen, dann müssen Sie auch ein LongInt-Array dafür benutzen, sonst gibt es einen Runtime-Error.

Also vor SELECTION TO ARRAY das Array nicht als ARRAY INTEGER deklarieren, sondern als ARRAY LONGINT.

: Johannes PUFF

Ok, ich könnte beim Erstellen der Arrays die Record-Nummern mit…

Ich würde nicht die Record-Nummern nehmen, sondern das Primärschlüssel-Feld.

: Joerg BUCHWITZ

Ich würde nicht die Record-Nummern nehmen, sondern das
Primärschlüssel-Feld.
Kann man machen, doch es gibt diesen schönen Befehl und der nutzt Datensatz-Nummern
http://livedoc.4d.com/4D-Programmiersprache-16-R5/Auswahl/CREATE-SELECTION-FROM-ARRAY.301-3481346.de.htmlCREATE SELECTION FROM ARRAY>
Ich schätze der ist schneller

: Ortwin ZILLGEN

Ich schätze der ist schneller
No doubt, much faster. The fastest, I’d say.

Joerg,
very schematically:

  • if records must be retrieved some time after, on another machine, etc. -> use PK
  • short use -> use record numbers
: Arnaud DE MONTARD

short use -> use record numbers

Basically, Yes, but what is “short use”?

Example 4D Client:

  • You have a listbox of 20 persons, and want to delete 2 of them (Alice and Bob).
  • But first, you go to lunch.
  • After lunch, you select Alice and Bob in your listbox and click “Delete”.
  • But then you realize that you have deleted Charlie instead of Bob.
    Why:
  • During your lunch, another user has already deleted Bob.
  • And after that, someone created a new person, named “Charlie”.
  • Charlie has now the record number of Bob.

That’s why I prefer primary keys.

Nice example…
User is evil, he should never be hungry.

Herr Puff

das Thema kann als gelöst markiert werden oder funktionieren die Lösungen nicht?