PDA

Vollständige Version anzeigen : Listenfeld nach Mehrfachauswahl in zweitem Listenfeld auswerten


Maverick
08.09.2003, 14:08
Hallo,

Ich habe folgendes Problem
In einem Listenfeld (VersandListe) mit Mehrfachauswahl habe ich folgende Felder. Datenherkunft ist eine Abfrage.

Titel__ Artikel Anzahl Kategorie
Test01 Kauf 10 0
Test01 Kauf 20 2
Test01 Kauf 30 3
Test02 Kauf 15 2
Test02 Leih 10 0
Test02 Leih 15 2

Wenn der User den Artikel Test01 (3 Zeilen) ausgewählt hat, soll das zweite Listenfeld (VersanListe2) so aussehen.
Titel__ Artikel Anzahl
Test01 Kauf 60

Wenn er alle Zeilen markiert hat:
Titel__ Artikel Anzahl
Test01 Kauf 60
Test02 Kauf 15
Test02 Leih 25


Das heisst eine Gruppierung über Titel und Artikel mit der jeweiligen Gesamtsumme.

habe schon so einiges ausprobiert, klappt aber nicht.

Liebe Grüsse

jmc
08.09.2003, 14:16
Hallo Klaus

wie soll's denn aussehen, wenn der User die rot markierten auswählt:

Titel__ Artikel Anzahl Kategorie
Test01 Kauf 10 0
Test01 Kauf 20 2
Test01 Kauf 30 3
Test02 Kauf 15 2
Test02 Leih 10 0
Test02 Leih 15 2

Resultat so ?

Titel__ Artikel Anzahl
Test01 Kauf 40
Test02 Kauf 15
Test02 Leih 10

Oder soll gar nicht erlaubt werden, dass von einem "Titel__Artikel" nur teilweise ausgewählt wird ?

Und was hast du schon alles probiert ? (Code?)

Die Frage wäre dann auch noch, was denn nachfolgend mit der Auswahl passieren soll - oder geht es rein nur um die Anzeige der Summe ?

Maverick
08.09.2003, 14:35
Hallo jmc,

Das Resultat sollte dann so aussehen wie Du gepostet hast.
Der User kann auswählen was er will, und die Summe(n) sollte dann im Listenfeld2 ( VersandListe) zur Kontrolle der GesamtSumme(n) angezeigt werden.
Aber eben nur die ausgewählten.

Die Auswahl der Einzeldatensätze lasse ich mir in einem Unterformular anzeigen.

Liebe Grüsse

Maverick
08.09.2003, 14:37
Hallo jmc,

das Artikel und Titel sind übrigends zwei Felder.

Hab das nur etwas doof dargestellt.
:)

Liebe Grüsse

Maverick
08.09.2003, 15:08
Hallo jmc,

hier der Code in meinem Formular:


Private Sub VersandListe_Click()

Dim varPosition As Variant

Dim ctl As Control, Suche As String, j As Long, varelem As Variant, Suche2 As String

Set ctl = Me!VersandListe

j = 0
For Each varelem In ctl.ItemsSelected
j = j + 1
If j > 1 Then
Suche = Suche & " Or [ID_Titel] = " & ctl.Column(0, varelem) & " And [Inhalt_Kategorie] = '" & ctl.Column(6, varelem) & "'"
Suche2 = Suche2 & " Or [NR] = " & ctl.Column(0, varelem) & ctl.Column(6, varelem)

Else

Suche = " ([ID_Titel] = " & ctl.Column(0, varelem) & " And [Inhalt_Kategorie] = '" & ctl.Column(6, varelem) & "'"
Suche2 = " ([NR] = " & ctl.Column(0, varelem) & ctl.Column(6, varelem)

End If
Next

If j > 0 Then
Suche = Suche & ")"
Suche2 = Suche2 & ")"

End If
SQL = "SELECT * From abfr_VersandX groupby ID_Titel Where " & Suche
'MsgBox SQL

Me.Suche = Suche
Me.Suche2 = Suche3



Forms![frm_DVDVHS_Versand]![frm_Versand].Form.RecordSource = "Select * From abfr_VersandX Where " & Suche
Me.frm_Versand.Requery
Me.Versandliste2.RowSource = "Select * From abfr_Datenherkunft_VersandListe2 Where " & Suche2
Me.frm_Versand.Visible = True




Liebe Grüsse



Moderatorenanmerkung: Code-Tag wurde von mir noch geschlossen.

jmc
08.09.2003, 15:45
Hallo Klaus

versuchs mal so (konnte es natürlich nicht testen, da mir die entsprechende Umgebung fehlt ... ;))

Private Sub VersandListe_Click()

Dim ctl As Control, strSuche As String, strSQL As String

Set ctl = Me!VersandListe
strSuche = "("

For Each varelem In ctl.ItemsSelected
strSuche = strSuche & ctl.Column(0, varelem) & ","
Next

strSuche = left(strSuche, len(strSuche)-1) & ")"
' strSuche sieht nun z.B. so aus: (2,4,5,10,11)

strSQL = "SELECT Titel, Artikel, Sum(Anzahl) From abfr_VersandX "
strSQL = strSQL & " Where ID_Titel in " & strSuche
strSQL = strSQL & " Group by Titel, Artikel

Me!VersandListe2.RowSource = strSQL


strSQL = "Select * From abfr_Datenherkunft_VersandListe2 Where Nr in " & strSuche
Forms![frm_DVDVHS_Versand]![frm_Versand].Form.RecordSource = strSQL
Me.frm_Versand.Requery
Me.frm_Versand.Visible = True

Maverick
08.09.2003, 16:25
Hallo jmc,

Hab den Code eingebaut,
Er zeigt mir die Titel (gruppiert) im Listenfeld an, jedoch mit der Gesamtsumme über den Titel (ohne Rücksicht darauf, ob der Titel im Listenfeld1 (VersandListe) ausgewählt wurde oder nicht.

Die Verknüpfung zu ItemSelected fehlt glaube ich noch.

Liebe Grüsse

jmc
08.09.2003, 16:35
Hi Klaus

eigentlich nicht, aber mach doch mal einen Break hier

Me!VersandListe2.RowSource = strSQL

und schau, was in strSQL drin steht, da müssten eigentlich die Nummern derjenigen drin sein, die selektiert wurden ...

Wie heisst denn das Key-Feld in der Abfrage "abfr_VersandX" und in "abfr_Datenherkunft_VersandListe2" ?

(sonst stell mal die mdb hier ins Forum, dann kann man's anschauen ..)

Maverick
08.09.2003, 17:07
Hallo jmc,

Das ist ja gerade das Problem. Es werden mir die Artikel, die ausgewählt wurden, angezeigt und dann die Summe über den gesamten Artikel gebildet. Es sollen aber nur die Summen angezeigt werden, wo der Titel und gleichzeitig der ARtikel und gleichzeitig die Kategorie übereinstimmen.

Ich denke da liegt der Fehler.

Das steht im strsql:
"SELECT Titel, Artikel, Sum(Stückzahl) From abfr_VersandX Where ID_Titel in (4231,4232) Group by Titel, Artikel"

Das Key-Feld heisst ID.

Die DB kann ich leider nicht ins Forum stellen, da zu gross und Firmendaten!

Liebe Grüsse
Klaus

jmc
08.09.2003, 19:01
Hi Klaus

das wiederspricht nun aber dem, was du ganz am Anfang gezeigt hast:

Wenn er alle Zeilen markiert hat:
Titel__ Artikel Anzahl
Test01 Kauf 60
Test02 Kauf 15
Test02 Leih 25

hier steht nix von Kategorie !!

Und wenn jede Zeile in der Listbox einen eindeutigen Schlüssel hat, dann MUSS es so funktionieren.

Wenn du schon nicht was hochladen kannst/willst, dann habe ich eben schnell eine Tabelle erstellt und eine Abfrage/SQL dazu. Schau's dir an.

sonst musst du eben einen Extrakt machen und neutralisieren ... mindestens die Tabellenstruktur und die Listbox, bzw. deren RowSource sollte mal klar erkennbar sein ...
.

Maverick
08.09.2003, 19:13
Hallo jmc,

ich glaube ich weiss jetzt wo mein Fehler liegt.
ich habe dem Listenfeld1 nicht die ID sondern die Artikel_ID zugrundegelegt, und diese kommt natürlich mehrfach vor.

Dadurch frage ich bei der Auswahl im Listenfeld die mehrfach vorkommende Artikel_ID ab.

Kann es heute leider nicht mehr ausprobieren, bin schon zu Hause.

Werde es morgen machen und Dir Beschiiiiiid geben.

Vielen Dank schon mal für die tolle Hilfe.

Liebe Grüsse
Klaus