none
RowSource/Recordset einer Listbox dynamisch festlegen ....

    Frage

  • Ich verwende derzeit an einer anderen Stelle eine parameterisierte Abfrage, um eine Liste von AUfträgen für eine Person unter Ausschluss des aktuellen zu erstellen.

    Set qdf = db.QueryDefs("qry_Vorgutachten_Parameter")
          qdf.Parameters("@NrProband") = tmpProbandNr
          qdf.Parameters("@Auftragsnummer_par") = Auftragsnummer
          Set rs = qdf.OpenRecordset(dbOpenDynaset)
    

    Das geht auch mit diesem Code ganz problemlos.

    An der ursprünglichen Stelle wird nun dieses Recordset durchlaufen und ein Textstring mit bestimmten Angaben aus dem Recordset gefüllt - aber das nur nebenbei.

    In Abwandelung dieser Aufgabe möchte ich nun dieses Recordset asl Grundlage für die Datenquelle einer Listbox hernehmen.

    Ich dachte, mit Me.lstAuftragsauswahl.Recordset= rs sei das bereits getan, ich erhalte dann aber eine Fehelrmeldung "Blockvariable ... nicht festgelegt"

     

    Ich sehe den Vroteil einer Parameter-Abfrage darin, dass ich nicht mühsam den SQL-String zusammenbauen muss - obwohl ich damit sicherlich das Problem über die RowSource-EIgenschaft lösen könnte.

    Any ideas ?

     

    Dienstag, 30. August 2011 06:14

Antworten

  • Hallo NiciNi,

    es muss voll Set verwendet werden.

    Set Me.lstAuftragsauswahl.Recordset= rs

    Gruesse,

    Bogdan


    Mittwoch, 31. August 2011 08:18
    Moderator
  • Hallo Bogdan

    Bogdan Petru Roiu wrote:

    es muss voll Set verwendet werden.

    Set Me.lstAuftragsauswahl.Recordset= rs

    Es muss in VBA immer SET verwendet werden, wenn Du ein Objekt auf ein anderes kopieren (oder übernehmen) willst. Ohne Set wird die Standard Eigenschaft kopiert, nicht das Objekt selber.
    In VB.NET z.B. gibt es SET nicht mehr, aber es gibt dort dann eben auch keine Standard Eigenschaften, die kopiert werden könnten. Diese müssen dort explizit angegeben werden, sonst wird eben versucht das Objekt zu kopieren.

    Gruss
    Henry

    • Als Antwort markiert NicoNi Mittwoch, 31. August 2011 13:17
    Mittwoch, 31. August 2011 09:26

Alle Antworten

  • Hallo NiciNi,

    es muss voll Set verwendet werden.

    Set Me.lstAuftragsauswahl.Recordset= rs

    Gruesse,

    Bogdan


    Mittwoch, 31. August 2011 08:18
    Moderator
  • Hallo Bogdan

    Bogdan Petru Roiu wrote:

    es muss voll Set verwendet werden.

    Set Me.lstAuftragsauswahl.Recordset= rs

    Es muss in VBA immer SET verwendet werden, wenn Du ein Objekt auf ein anderes kopieren (oder übernehmen) willst. Ohne Set wird die Standard Eigenschaft kopiert, nicht das Objekt selber.
    In VB.NET z.B. gibt es SET nicht mehr, aber es gibt dort dann eben auch keine Standard Eigenschaften, die kopiert werden könnten. Diese müssen dort explizit angegeben werden, sonst wird eben versucht das Objekt zu kopieren.

    Gruss
    Henry

    • Als Antwort markiert NicoNi Mittwoch, 31. August 2011 13:17
    Mittwoch, 31. August 2011 09:26