Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Bernie110 am März 05, 2014, 17:22:50

Titel: Mehrfachauswahl im Listenfeld
Beitrag von: Bernie110 am März 05, 2014, 17:22:50
Hallo,

weiss jetzt nicht ob dieses Thema unter Programmierung richtig ist. Sorry hierfür. Notfalls bitte verschieben.

Ich habe eine Frage zum Listenfeld mit Mehrfachauswahl.

Ich möchte die im Listenfeld ausgewählten DS mit einer Nr aus dem HF verknüpfen.
Im Prinzip so.

Das HF hat die NR 110
Im Listenfeld stehen folgende Daten
Listenfeld
LfdNR     Artikel     HFNR
---------------------------------
1           Hose
2           Tasche
3           Anzug
4           Jacke

Wähle ich jetzt im Listenfeld z.b. Hose und Jacke aus,
dann soll       HFNR = NR 110 sein.

Geht so was oder ist das der flasche Ansatz ? ( wenn ihr versteht was ich meine  )?

Lg Bernie
Titel: Re: Mehrfachauswahl im Listenfeld
Beitrag von: Hondo am März 05, 2014, 18:37:17
Hallo,
verstehe was du meinst. Du musst die RowSource des Listenfeldes im Ereignis "Beim Anzeigen" anpassen.
Private Sub Form_Current()
    Me.Liste1.ColumnCount = 3
    Me.Liste1.RowSource = "Select LfdNR, Artikel, '" & Me.HFNR & "' As HFNR From tblArtikel"
    Me.Liste1.Requery
End Sub


Andreas
Titel: Re: Mehrfachauswahl im Listenfeld
Beitrag von: Bernie110 am März 06, 2014, 08:56:26
Hi Andi,

danke ersteinmal für deine Antwort. Funktioniert leider nicht, weil ich mich vll mal wieder falsch ausgedrückt habe.

Also das Listenfeld wird wie folgt befüllt :

Me!Liste43.RowSource = "Select Menge, Einheitencode, Ausprägungscode, Packstück_ID, Ladungsträger_ID_ACC FROM ARTIKEL_ERFASSUNG_UFO_f_Packstückauswahl  WHERE Ladungsträger_ID_ACC  =" & Me!Ladungsträger_ID

HF = Packstück..Abfrage : ARTIKEL_ERFASSUNG_UFO_f_Packstückauswahl
Hier gibt es  die Felder
Packstück_ID = Autowert_PK
Auftrags_ID = Zahl Integer  ( Wert wird mitgeliefert )

        (es werden dann noch Länge/Breite ect für des Packstückes erfasst )

Um alle Artikel eines Auftrages angezeigt zu bekommen, befülle ich das Listenfeld erst einmal mit allen Artikel des Auftrages.
Listenfeld = TblArtikel

Hier soll der User dann eben auswählen. welche Artikel aus dem Auftrag  in das Packstück kommen.

Die Verküpfung dieses Vorgangs ist

HF Packstück_ID
ARTIKEL Packstück_ID

Lg Bernie






Titel: Re: Mehrfachauswahl im Listenfeld
Beitrag von: Hondo am März 06, 2014, 09:21:42
Bernie, die Rowsource stimmt aber nicht mit der Aussage überein dass nur lfdNr und Artikel in der Liste steht....
Wie heißt denn das Feld HFNR im Hauptformular wirklich? Was für ein Datentyp?

Andreas
Titel: Re: Mehrfachauswahl im Listenfeld
Beitrag von: Bernie110 am März 06, 2014, 12:34:00
Hi Andi,

das Feld im HF Tbl_Packstücke heisst Packstück_ID
und das Feld in der Tabelle Artikel heisst auch Packstück_ID
Sind beide Zahlenfelder.

In Beziehung stehen 3 Tabellen:

1. )  Tbl_Ladungsträger   = Ladungsträger_ID
2. )  Tbl_Packstücke       =  Packstück_ID und Ladungsträger_ID_ACC
3. )  Tbl_Artikel             = Artikel_Nr und Ladungsträger_ID und Packstück_ID

Als erstes werden die Daten in Tbl_Packstücke und Tbl_Artikel  via den Ladungsträger_IDs mit der Tabelle :  Tbl_Ladungsträger verknüpft.

Das heisst man weiss welcher Artikel  in einem Ladungsträger ist.
So und jetzt kommt es, dass ich auch noch wissen möchte welcher Artikel in welchem Packstück ist.
Daher muss die Verknüpfung so lauten :
TBL_Packstücke.Packstücke.ID = TBL_Artikel.Packstück_ID     

so und nun dachte ich mir, anhand eines Listenfeldes mit mehrfachauswahl, die artikel einfach anzuklicken und die o.g. Verknüpfung per Button_Click für die ausgewählten DS zuerhalten.

Weiss nicht ob das der richtige weg ist.

Momentan erfolgt diese Verknüpfung in dem Man die Pckstück_ID des HF kopiert und in die Einzelnen DS im UFO ( Datenblatt welches eben mit Ladungsträger_ID = Ladunsträger_ID_ACC verknüpft ist ) in das Feld Packstück_ID einfüge.   

ich wollte es jetzt nicht so kompliziert machen, daher das etwas einfachere Schaubild :


Das HF_Packstück hat die NR 110
Im Listenfeld stehen folgende Daten
Listenfeld
LfdNR     Artikel     Artikel_verknüpguns_NR_zum_HF_Packstücke
------------------------------------------------------------------------------
1           Hose 
2           Tasche
3           Anzug 
4           Jacke                     

jetzt möchte ich eben die dick angezeigten DS anklicken und dann
dieses Ergebnis bekommen
Eben die Daten verknüpfen.

LfdNR     Artikel     Artikel_verknüpguns_NR_zum_HF_Packstücke
------------------------------------------------------------------------------
1           Hose  NR 110
2           Tasche
3           Anzug  NR 110
4           Jacke

So sind Hose und Jacke mit dem Packstück verknüpft.

ist das jetzt besser verständlich ? Sorry tu mich da imemr etwas schwer dies zu erklären. Daher bitte um etwas Nachsicht ;-)

Lg Bernie
Titel: Re: Mehrfachauswahl im Listenfeld
Beitrag von: Hondo am März 06, 2014, 12:47:59
Aber die RowSource des Listenfeldes lautet doch:
Select Menge, Einheitencode, Ausprägungscode, Packstück_ID, Ladungsträger_ID_ACC FROM ARTIKEL_ERFASSUNG_UFO_f_Packstückauswahl  WHERE Ladungsträger_ID_ACC  =" & Me!Ladungsträger_ID

Was ist davon jetzt LfdNr und was Artikel??
Da stimmt doch was nicht!
Titel: Re: Mehrfachauswahl im Listenfeld
Beitrag von: Bernie110 am März 06, 2014, 16:17:28
Hi,

das sind alles Felder die aus der Artikel Tabelle stammen.
Die Liste wird auch mit den richtigen Daten befüllt.
Das funktioniert soweit auch.

Meine Frage ist doch nur, wenn diese Liste befüllt ist, dann befinden sich doch DS darin.
Wenn ich mittels Mehrfachauswahl mehre Datensätze markiere .. (und hier nochmals die Frage,)
kann ich dann den markierten DS einen Wert verpassen, der wiederum mein Packstück mit den markierten DS verknüpft ?

Ich weiss ja nicht ob oder wie das funktioniert.

Selbst Access bietet dir so eine ähnliche Funktion.

Du schiebst DS von einem Listenfeld in das Andere .. und genau so was möchte ich umsetzen

Lg Bernie
P.s. Bitte nicht mit mir verzeifeln.


 
Titel: Re: Mehrfachauswahl im Listenfeld
Beitrag von: DF6GL am März 06, 2014, 17:52:33
Hallo,

ich befürchte, Du eierst immer noch mit falschen/ungenügenden Tabellen-Beziehungen herum....

Du brauchst Tabellen, die die Stammdaten (Artikel, Packstücke etc ) enthalten und (mindestens) eine Tabelle, die es erlaubt, diese Daten miteinander zu verbinden (z. B: "tblPackstückArtikel") .


Über Listenfelder sich zu unterhalten, wenn die dahinterliegenden Tabellen nicht vorhanden sind, ist fehl am Platz.


ZitatDu schiebst DS von einem Listenfeld in das Andere .. und genau so was möchte ich umsetzen

Durchlaufe das Listenfeld über die markierten Einträge (SelectedItems) und aktualisiere jedes Mal die entspr. Tabelle mit einer Aktionsabfrage (Update, bzw. Insert-SQL-String).
Titel: Re: Mehrfachauswahl im Listenfeld
Beitrag von: Bernie110 am März 06, 2014, 20:58:29
Hi,

ZitatDu brauchst Tabellen, die die Stammdaten (Artikel, Packstücke etc ) enthalten und (mindestens) eine Tabelle, die es erlaubt, diese Daten miteinander zu verbinden (z. B: "tblPackstückArtikel")

Wie noch eine Tabelle ? also eine 4te ? Ich dachte eigentlich, dass die Tbl_Packstücke diesen Part übernimmt.

ZitatDurchlaufe das Listenfeld über die markierten Einträge (SelectedItems) und aktualisiere jedes Mal die entspr. Tabelle mit einer Aktionsabfrage (Update, bzw. Insert-SQL-String).

???
Ok das ist zu hoch für mich. Hättest du hierfür vll ein Code Beispiel ?

Lg Bernie

Titel: Re: Mehrfachauswahl im Listenfeld
Beitrag von: Bernie110 am März 07, 2014, 09:18:51
Hi,

ich habs jetzt mal so probiert,

ZitatIf MsgBox("Wollen Sie diese Artikel in das Packstück übernehmen ?", vbYesNo) = vbYes Then

'---------------------------------------------------------------------
    If Me!ARTIKEL_ERFASSUNG_Auswahl_UFO.Form.Recordset.RecordCount > 0 Then
        Dim rs As DAO.Recordset
        Dim varItem As Variant
        Set rs = Me!ARTIKEL_ERFASSUNG_Auswahl_UFO.Form.RecordsetClone
        Do Until rs.EOF
        rs.Edit

   '---------------------------------------------

  For Each varItem In Me!Liste43.ItemsSelected
  rs!Packstück_ID = Me.Packstueck_ID
  Next varItem
       
                 
    '--------------------------------------------
   
    rs.Update
    rs.MoveNext
    Loop

    rs.Close
    Set rs = Nothing

Me!ARTIKEL_ERFASSUNG_Auswahl_UFO.Requery
Me.ARTIKEL_ERFASSUNG_UFO_f_Packstueck.Requery
   
End If
Me.ARTIKEL_ERFASSUNG_UFO_F_PACKSTÜCKAUSWAHL.Requery
Me.ARTIKEL_ERFASSUNG_UFO_f_Packstueck.Requery
End If

Er übernimmt jetzt alle und leider nicht die im Listenfeld ausgewählten.