Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: HeinzT am November 06, 2016, 02:03:54

Titel: Listbox Markier - Reihenfolge merken und übergeben
Beitrag von: HeinzT am November 06, 2016, 02:03:54
Hallo Ihr Gurus !

Hab da ein Problem:

In einer Listbox mit Mehrfachauswahl (Recordset) sind Dokumente (Path und Dateiname) eingetragen, nun soll ich in der richtigen Reihenfolge so wie ich es Markiert habe als ein Dokument zusammenbauen.

Mit einer for earch schleife funkt das nicht, kann nur von oben nach unten oder umgekehrt aber nicht in der Reihenfolge wie sie markiert wurden.

Gibt es ein anderes Listen-Ding kann auch was kosten, wenn es sich wie ein Unterformular in Datenblattansicht nur mit Mehrfachauswahl wie Listbox und sich die Reihenfolge merkt und auch so mit VBA abfragen kann. Da ich mehrere Formulare offen habe würde es super sein wenn Drag/Drop funktionieren würde muss aber nicht unbedigt sein.

MFG
Heinz


Titel: Re: Listbox Markier - Reihenfolge merken und übergeben
Beitrag von: markusxy am November 06, 2016, 12:51:04
Du musst dir die Reihenfolge ja nur merken.
Nutze das klick event und speichere das Ergebnis ab. Dann hast du alles was du brauchst.

Allerdings wird es dann etwas trickreich, wenn du Elemente wieder entfernst. Unterformular mit einer checkbox wäre ja auch denkbar und eventuell einfacher handzuhaben.

Um einen sinnvollen Vorschlag zu machen, wäre es günstig, wenn du erklärst um was es genau geht. Möglichkeiten gibt es viele.

LG Markus
Titel: Re: Listbox Markier - Reihenfolge merken und übergeben
Beitrag von: HeinzT am November 06, 2016, 15:56:21
Hallo Markus !
Danke für Antwort !
Projekt: Dokumenetenmanagement

Also befüllt wird über Recordset von MS-SQL-Server:
    .oF!Liste1.RowSource = "select ID, iif(Auswahl,'x',''), Feld1, Haus, iif(erledigt,'ok','') from dbo_SPLIT WHERE(Korb='" & .cCaption & "' and User='" & left(.cUserPath, Len(.cUserPath) - 1) & "') order by ID DESC;"

In ein Listboxfeld kann ich nicht reinklicken

In der Listbox kann ich mit Strg einzelne oder mit Maus gedrückt mehrere Markieren oder von der mitte wieder eines entfernen, weiters Klick auf 5. und mit Shift auf den 2. DS aber keine Eingabereihenfolge die ich abfragen kann. Das sind unzählige Ereignisse in der Box, bin nicht bereit eine Woche zu experimentieren wenn es vielleicht ein OCX zum kaufen gibt das den Ablauf automatisch verwaltet und die ID's in einer Textvariablen reinschreibt und mit Split auszulesen sind.

Bei der OCX-Auswahl sind einige, aber Fehlermeldung 'Der OLE-Server ist nicht registriert' ?


Würde das dringend brauchen, Dokumentenreihenfolge stimmt sonnst nicht.

MFG
Heinz






Titel: Re: Listbox Markier - Reihenfolge merken und übergeben
Beitrag von: MzKlMu am November 06, 2016, 17:01:02
Hallo,
ZitatIn der Listbox kann ich mit Strg einzelne oder mit Maus gedrückt mehrere Markieren oder von der mitte wieder eines entfernen, weiters Klick auf 5. und mit Shift auf den 2. DS aber keine Eingabereihenfolge die ich abfragen kann.
Ich glaube nicht, dass es möglich sein wird das zu realisieren, auch nicht mit einem käuflichen OCX.
Warum nimmst Du nicht ein Endlosformular und markierst mit einem Haken (Wie bereits gesagt) ? Scheint auch mir einfacher zu sein.

Und erkläre das Vorhaben mal genauer, warum ist die Reihenfolge wichtig ?
Möglicherweise gibt es ja andere Lösungsansätze.
Titel: Re: Listbox Markier - Reihenfolge merken und übergeben
Beitrag von: DF6GL am November 06, 2016, 17:05:14
Hallo,

ich verstehe Deine Vorstellung nicht... Die Anzeigereihenfolge in einem Listenfeld hängt von der Order by -Klausel der zugrundeliegenden Abfrage ab.  Die Reihenfolge, mit der einzelne Einträge markiert wurden, kann nicht im Nachhinein ermittelt werden.

Um alle markierten Listenfeld-Einträge zu ermitteln, kann prinzipiell der folgende Code angepasst werden.

Aus  der VBA-Hilfe zu "Itemsselected":

Sub AllSelectedData()
Dim frm As Form, ctl As Control
Dim varItm As Variant, intI As Integer

Set frm = Forms!Contacts
Set ctl = frm!Names
For Each varItm In ctl.ItemsSelected
For intI = 0 To ctl.ColumnCount - 1
Debug.Print ctl.Column(intI, varItm)
Next intI
Debug.Print
Next varItm
End Sub



Wie die einzelnen Werte weiterverarbeitet werden müssen, musst Du selbst bestimmen.


Titel: Re: Listbox Markier - Reihenfolge merken und übergeben
Beitrag von: Josef P. am November 06, 2016, 17:52:23
Hallo!

[etwas OT]
ZitatDokumentenreihenfolge stimmt sonnst nicht.
Eine Frage dazu:
Da die Reihenfolge wichtig ist und der Anwender diese durch die Klick-Reihenfolge festlegt: Wie wird die geklickte Reihenfolge dem User visualisiert? Je nach Anzahl der Auswahlmöglichkeiten und einem möglichem Scrollen in der Listbox, verklickt sich der User vielleicht einmal oder kommt beim 12. Klick drauf, dass an 3. Stelle eine andere Auswahl kommen sollte. Dann muss er wieder von vorne anfangen?
Wäre es vielleicht benutzerfreundlicher, wenn du die geklickte Auswahl in ein weiters Listenfeld (oder was auch immer) überträgst, bei dem der User vielleicht später auch noch die Reihenfolge ändern kann?

Vielleicht auch eine Möglichkeit:
Du fügst in der Listbox eine Spalte dazu, die die Klickreihenfolge (als Zahl) anzeigt.
Statt der Listbox wäre, wie bereits von Klaus vorgeschlagen, auch ein Endlosformular mit einer Anzeige der Auswahlreihenfolge eine gut programmierbare Alternative.

mfg
Josef
Titel: Re: Listbox Markier - Reihenfolge merken und übergeben
Beitrag von: MaggieMay am November 06, 2016, 17:54:09
Hallo,

ich würde dem Vorschlag von Markus nachgehen:
Zitat von: markus888 am November 06, 2016, 12:51:04Du musst dir die Reihenfolge ja nur merken.
Dazu könntest du einen Array verwenden, in dem du dir die ID der ausgewählten Einträge merkst. Ob die Markierung gesetzt oder weggeklickt wurde, müsste sich feststellen lassen, dann wird der Eintrag einfach gelöscht. Am Ende (bei der Auswertung) werden leere Einträge im Array einfach übersprungen.
Oder stelle ich mir das zu einfach vor?

Dazu müsste es dann auch noch einen Button geben, mit dem die Listenfeldauswahl sowie auch der Array zurückgesetzt wird.

PS:
Zitat von: Josef P. am November 06, 2016, 17:52:23Wäre es vielleicht benutzerfreundlicher, wenn du die geklickte Auswahl in ein weiters Listenfeld (oder was auch immer) überträgst
Auch das ist eine gute Idee, die ich gerade noch hinzufügen wollte. ;-)
Titel: Re: Listbox Markier - Reihenfolge merken und übergeben
Beitrag von: HeinzT am November 06, 2016, 18:02:34
Hallo !

Die Wichtigkeit der Reihenfolge:

Jeder Datensatz steht für ein PDF-File, Damit die Dokumente in einer vom User vorgegebener Reihenfolge digital geheftet werden (es entsteht also ein neues Dokument welches dann Archiviert wird).

ZB.: Ein Schadensfall -> Mail an Versicherung -> retourschreiben -> Anbote einholen und auswahl wer den Auftrag bekommt -> Bilder einscannen -> Rechnung ....

Mit einen Unterformular ja geht aber nur alle zwischen Klick halten auslassen dazwischen werden alle Markiert. Ich habe Vorgaben von den Usern wie Sie arbeiten wollen und auch vom Design habe ich einen engen Spielraum. :)

Das ganze soll schnell gehen, in der Abteilung sind 3 User und haben im Schnitt 2000 Dokumente im Monat darum auch der MS-SQL-Server.

Gruss an alle
Heinz


Spiele jetzt mit Maustaste ab und Mausbewegung  >:(




Titel: Re: Listbox Markier - Reihenfolge merken und übergeben
Beitrag von: HeinzT am November 06, 2016, 18:21:44
Hallo Josef !

Mit dem Verklickt geht es mit Strg und Klick das nimmt die eine Markierung wieder weg ohne die anderen zu löschen, werde das mit dem zusätzlichen Textfeld als Zähler+user probieren ist halt blöd das es mehrere Eventseigenschaften gibt (Shift, Strg , ohne, kilck und weiter unten mit Shift Klick = alles dazwischen ......)

Danke an alle
werde berichten wie .....
gruss Heinz
Titel: Re: Listbox Markier - Reihenfolge merken und übergeben
Beitrag von: Josef P. am November 06, 2016, 18:26:51
ZitatMit einen Unterformular ja geht aber nur alle zwischen Klick halten auslassen dazwischen werden alle Markiert.
Ist das Klicken mit gedrückter Strg-Taste ist so praktisch?
Ich würde in einem Unterformular eher auf einen "Auswahlbutton" oder eine Checkbox klicken, um sie auszuwählen. Dann sieht man die Auswahl, kann später sogar die Daten in passender Reihenfolge ohne die nicht aktivierten Daten zur Kontrolle anzeigen usw.

ZitatIch habe Vorgaben von den Usern wie Sie arbeiten wollen
Du hast dabei aber schon hinterfragt, ob sie alle Möglichkeiten kennen, wie sie arbeiten könnten? Machmal wissen es die User nämlich nicht besser. ;)
Ich stelle zumindest regelmäßig fest, dass die Anwender zuerst eine bestimmte Vorstellung bei einer Maske haben, aber dann eine ganz andere Wahl treffen, wenn man ihnen zeigt, was noch möglich wäre, wenn man z. B. nicht alles so umsetzt, wie man es bisher in Excel gemacht hat.

Vielleicht könnte es für deine Anwender interessant sein, wenn sie die ausgewählten Werte aus der Listbox in eine andere Listbox per Drag&Drop an die passende Position schieben können.
Dann könnten sie die Auswahllistbox von oben nach unten durcharbeiten und würde mit dem Ziehen in die andere Listbox die Reihenfolge festlegen.


ZitatSpiele jetzt mit Maustaste ab und Mausbewegung
Warum?

mfg
Josef
Titel: Re: Listbox Markier - Reihenfolge merken und übergeben
Beitrag von: MzKlMu am November 06, 2016, 19:07:06
Hallo,
ist die Reihenfolge wirklich vom User abhängig, ich kann mir das nicht vorstellen.
Es kann doch nicht sein, dass der eine User die Rechnung vor dem Angebot abheftet und der andere es anders rum macht.

Könnte man nicht die Dokumente in einen Typ einteilen und ´über den Typ dann automatisch die Reihenfolge bestimmt wird?
Titel: Re: Listbox Markier - Reihenfolge merken und übergeben
Beitrag von: HeinzT am November 06, 2016, 19:37:30
Ja ist notwendig, wenn es einige Mails sind und in den Scanpriefkorb sind einige hundert verschiedener Projekte es ist nicht so einfach, die Beschlagwortung erfolgt erst beim Archivieren.

Titel: Re: Listbox Markier - Reihenfolge merken und übergeben
Beitrag von: HeinzT am November 06, 2016, 19:39:42
Zitat von: Josef P.Vielleicht könnte es für deine Anwender interessant sein, wenn sie die ausgewählten Werte aus der Listbox in eine andere Listbox per Drag&Drop an die passende Position schieben können.
Drag&Drop bei Access Formularen ?? hab ich da was verpasst ?
Titel: Re: Listbox Markier - Reihenfolge merken und übergeben
Beitrag von: MzKlMu am November 06, 2016, 19:45:46
Hallo,
@HeinzT
Bitte unterlasse das Zitieren vollständiger Beiträge. Du verlängerst nur unnötigerweise die Themen.
Die Zitate habe ich gelöscht bzw. gekürzt.
Titel: Re: Listbox Markier - Reihenfolge merken und übergeben
Beitrag von: Josef P. am November 06, 2016, 20:16:13
Hallo!

Drag&Drop ist nicht standardmäßig nutzbar. Machbar ist es aber schon. ;)

mfg
Josef
Titel: Re: Listbox Markier - Reihenfolge merken und übergeben
Beitrag von: HeinzT am November 06, 2016, 20:52:17
Hallo Josef !

Habs erst jetzt gesehen ich bin in der nähe Neusiedlersee daheim.

also Drag&Drop in einer Listbox die auf ein Recordset gebunden ist ? ist das nicht ein irrer Aufwand um die Datensätze richtig zu Transferieren ? Hab bereits irre Transaktionen auf dem SQL-Server mit Heften und Ablegen, im Betrieb arbeiten 38 User da bewegt sich schon einiges.
Titel: Re: Listbox Markier - Reihenfolge merken und übergeben
Beitrag von: Josef P. am November 06, 2016, 21:46:29
Hallo!

Drag&Drop hat erstmal nichts mit dem Datenbanksystem zu tun.
Ich würde die Ziel-Listbox sogar eher mit Wertliste gestalten. Erst wenn der User mit dem Einreihen fertig ist, würde ich die Daten zum Server übertragen.

mfg
Josef