PDA

Vollständige Version anzeigen : Listbox Rowsource aendern zeigt keine Wirkung


ben-nemsi
02.06.2012, 18:21
Hallo Leute,
mein Problem ist, dass ich auf Knopfdruck eine Listbox fuelle und will aber gleich auf den ersten Wert zugreifen um damit eine Textbox zu fuellen.

der verwendete Code:
---------------------------------------
Public Sub lstInstituteLoad()
Dim varCenterID
Dim QueryString

varCenterID = lstCenter
LstInstitute.Selected(LstInstitute.ListIndex) = False
QueryString = "SELECT tblInstitute.InstituteId, tblInstitute.Center, tblInstitute.InstituteName, tblInstitute.InstituteCode"
QueryString = QueryString & " FROM tblInstitute "
QueryString = QueryString & " WHERE (((tblInstitute.Center)= " & varCenterID & "))"
QueryString = QueryString & " ORDER BY tblInstitute.InstituteName;"
LstInstitute.RowSource = QueryString
LstInstitute.Requery
If LstInstitute.ListCount <> 0 Then
LstInstitute.Selected(0) = True
Text62 = LstInstitute
End If
lstCenter.Undo
End Sub
------------------------------------
Ich gehe eigentlich davon aus, dass nach der Requery Anweisung ich die Textbox Text62 mit dem selektierten Eintrag aus der Liste fuellen kann.

Aber!! Irgendwie ist beim ersten zugriff LstInstitute bei der Zuweisung zu Text62 NULL
bei einem zweiten Aufruf ist auf einmal alles wie es gewuenscht ist

Irgend eine Idee was da falsch laeuft??

Maxel
02.06.2012, 19:24
Hallo und willkommen im Forum. :hands:

Bitte nutze die Möglichkeit des Forums, Deinen Code ansprechend zu formatieren. In dieser Form ist er eher eine Zumutung.

Stammt der Code von Dir oder hast Du ihn irgendwo kopiert?

Deklariere die Variablen richtig! Dim varCenterID liefert ein Variant und soll wohl ein Long sein, Dim QueryString liefert ebenfalls ein Variant und soll wohl ein String sein.

Die Zuweisung der RowSource zu LstInstitute genügt, es bedarf nicht des Requery.
beim ersten zugriff LstInstitute bei der Zuweisung zu Text62 NULL
bei einem zweiten Aufruf ist auf einmal alles wie es gewuenscht...
Wie erfolgt der erste Zugriff und wie der zweite?

Und "Irgendwie" kann man mittels Debug.Print ermitteln.

Steffen0815
02.06.2012, 19:34
Hallo,
ich kann das Problem nachvollziehen habe aber keine logische Erklärung dafür.

Nachfolgender Code sollte das Problem aber beseitigen: If LstInstitute.ListCount <> 0 Then
LstInstitute.SetFocus
LstInstitute.Selected(0) = True
Text62 = LstInstitute
End If
' ...

Btw:
Vor Formularfelder sollte man ein ME setzen, schon um es von Variablen unterscheiden zu können. Außerdem sollte man sie vernünftig "benamsen".

ben-nemsi
03.06.2012, 10:15
Hallo und willkommen im Forum. :hands:
Danke!

Bitte nutze die Möglichkeit des Forums, Deinen Code ansprechend zu formatieren. In dieser Form ist er eher eine Zumutung.
Tut mir leid dass ich euch das zugemutet habe. Aber wie du es vorhin festgestellt hast, bin ich heu hier und kenne mich in dem Forum leider nicht so gut aus. Ich werde aber bei meinen weiteren Beitraegen darauf achten

Stammt der Code von Dir oder hast Du ihn irgendwo kopiert?
Ich weiss nicht welche Bedeutung die Frage hat aber der Code ich von mir zusammengestueckelt und deshalb nicht fuktionierend.

Deklariere die Variablen richtig! Dim varCenterID liefert ein Variant und soll wohl ein Long sein, Dim QueryString liefert ebenfalls ein Variant und soll wohl ein String sein.
Das war nur wegen meiner Faulheit so. Aber denkst du dass das einen Einfluss auf das von mir beschriebene Verhalten hat?

Die Zuweisung der RowSource zu LstInstitute genügt, es bedarf nicht des Requery.
DAs stimmt wohl. Hatte den Code in Access 2003 geschrieben und da musste ich das noch machen (denke ich wenigstens. sind einige jahre her)


Wie erfolgt der erste Zugriff und wie der zweite?
Der erste zugriff ist ich Clicke auf ein button und dann wird der Code ausgefuehrt mit Fuellen der Liste und alles andere nur nicht die Zuweisung zu Text62
Wenn ich in die Liste auf den bereits (bei dem vorherigen durchlauf des Codes) selektierten Eintrag der Liste clicke dann geht alles.

Und "Irgendwie" kann man mittels Debug.Print ermitteln.
Sorry kenne Debug.Print nicht

ben-nemsi
03.06.2012, 10:20
Hallo Steffen,
Dankle fuer deine konstruktive Antwort.


Nachfolgender Code sollte das Problem aber beseitigen: If LstInstitute.ListCount <> 0 Then
LstInstitute.SetFocus
LstInstitute.Selected(0) = True
Text62 = LstInstitute
End If
' ...

Hat leider nicht geklappt.


Btw:
Vor Formularfelder sollte man ein ME setzen, schon um es von Variablen unterscheiden zu können. Außerdem sollte man sie vernünftig "benamsen".
1. Faulheit
2. Ich bemuehe mich ;-)


Gruss
Ben

Thomas Möller
03.06.2012, 11:13
Hallo Ben!

Aber!! Irgendwie ist beim ersten zugriff LstInstitute bei der Zuweisung zu Text62 NULL
bei einem zweiten Aufruf ist auf einmal alles wie es gewuenscht ist

Ich sehe in Deinem Code keinen zweiten Zugriff. Vielleicht kannst Du das noch einmal näher ausführen.

Ganz allgemein kann es u. U. helfen, wenn man ein DoEvents nach der Zuweisung der Datenquelle einfügt.

CU

Maxel
03.06.2012, 11:30
Hallo Ben,
dass ich auf Knopfdruck eine Listbox fuelle und will aber gleich auf den ersten Wert zugreifen um damit eine Textbox zu fuellen.
der verwendete Code:
Public Sub lstInstituteLoad()
Da läuft irgendetwas schief. :eek:

Ansonsten sollte der Tipp von Steffen schon funktionieren. Sieh Dir bitte mal meine DB an.