Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Teileintrag aus aktive Zeile der Werteliste auslesen

Begonnen von cyberchris, August 03, 2010, 12:30:42

⏪ vorheriges - nächstes ⏩

cyberchris

Hallo,

ich habe ein Problem mit meiner Werteliste im Formular. Hat 7 Spalten und 1 Überschrift.
Wird wie folgt befüllt:

...
xSQL = "SELECT KDATUM, BELEGART, KDIENST, DFORMAT, ADATUM, ARCUSER, GUID From PMM_PROTOKOLL WHERE PMID = '" & PMIDx & "'"
Set rs = db.OpenRecordset(xSQL)
Do Until rs.EOF

If ch = False Then Me.lstVorhanden.RowSource = "Datum;Belegart;Kalibrierdienst;Dateiformat;Archiv-Datum;Archiv-User;GUID;"
If ch = True Then Me.lstVorhanden.RowSource = Me.lstVorhanden.RowSource & ";"
Me.lstVorhanden.RowSource = Me.lstVorhanden.RowSource & rs!kdatum & ";"
Me.lstVorhanden.RowSource = Me.lstVorhanden.RowSource & rs!BELEGART & ";"
Me.lstVorhanden.RowSource = Me.lstVorhanden.RowSource & rs!KDIENST & ";"
If Not IsNull(rs!DFORMAT) Then formatx = Replace(rs!DFORMAT, ";", ",")
Me.lstVorhanden.RowSource = Me.lstVorhanden.RowSource & formatx & ";"
Me.lstVorhanden.RowSource = Me.lstVorhanden.RowSource & rs!ADATUM & ";"
Me.lstVorhanden.RowSource = Me.lstVorhanden.RowSource & rs!ARCUSER & ";"
Me.lstVorhanden.RowSource = Me.lstVorhanden.RowSource & rs!Guid
ch = True
rs.MoveNext
...

Wenn ich im Formular auf eine Zeile klicke .._DblClick... benötige ich die "Guid" wie kann ich diesen Wert auslesen/weitergeben? Bzw. wie bekomme ich die "Guid" in einen String?

Vielen Dank

database

Hallo,

also zuerst mal zum besehendem Code:
Wenn deine Abfrage mehr als einen Datensatz liefert dann solltest du beim Erstellen der Werteliste hier
= Me.lstVorhanden.RowSource & rs!Guid & ";"
das Semikolon am Ende des Strings anhängen, andernfalls kommen die ´Spalten in der folgenden Zeile durcheinander.

Durch die Bezeichnung 'lstVorhanden' nehme ich stark an, dass das ein Listenfeld sein wird.
Um aus dem Listenfeld einen Wert zu entnehmen gibt es mehrere Möglichkeiten -  eine davon wäre es die gebundene Spalte auszulesen.
Die Angabe welche nun die gebundene Spalte sei kann im Formularenwurf über die Eigenschaften des Listenfeldes definiert werden oder du weist diese Info dem Listenfeld im Zuge deines VBA-Codes zu.
Im VBA-Fall wäre es dann so anzugeben:
ZitatMe!lstVorhanden.BoundColumn = "7"
7 deshalb, weil du die 7.Spalte auslesen willst.
Diese Codezeile plazierst du am Besten am Beginn deiner Prozedur, bzw. bevor du die Liste befüllst.

Ausgelesen wird diese dann - in deinem Fall im Ereignis 'Beim Doppelklick' auf das Listenfeld (Die entsprechende Zeile MUSS markiert sein)

   Dim Listenwert as Long
   Listenwert = Me!lstVorhanden


Eine andere Möglichkeit ist es den Wert in der 7. Spalte zu lesen ohne dass diese die gebundene Spalte ist:


   Dim Listenwert as Long
   Listenwert = Me!lstVorhanden.Column(6)



HTH

Peter

cyberchris

Das mit ";" habe ich gelöst mit einer Var "ch". Wenn einmal durchlaufen ist, wir diese auf true gesetzt und beim nächsten Durchlauf zuerst ein ";" hinzugefügt.

Ja, ist ein Listenfeld.

FUNKTIONIERT

Vielen Dank
Christoph

cyberchris

ich habe noch eine Frage zu meinem Listenfeld.

Ich möchte das Listenfeld nach KDATUM und nach ADATUM absteigend sortiert angezeigt haben.
Ist das möglich? Wenn ja, wie?

DANKE

database

Hallo,

indem du bei der Datenherkunft die Sortierung angibst:

xSQL = "SELECT KDATUM, BELEGART, KDIENST, DFORMAT, ADATUM, ARCUSER, GUID From PMM_PROTOKOLL WHERE PMID = '" & PMIDx & "' ORDER BY KDATUM DESC, ADATUM DESC"