none
OpenArgs an Bericht übergeben

    Frage

  • Ich versuche mit folgendem Code einen simplen String beim Öffnen eines Berichtes in ein Textfeld zu schreiben.

    Leider scheitert das mit dem Fehlertext " Sie können diesem Objekt keinen Wert zuweisen" oder so ähnlich.

    Private Sub Report_Open(Cancel As Integer)
      Me.txtZeitraum.Value = CStr(Me.OpenArgs)
    End Sub

    Im  ersten Anlauf habe ich .Text probiert, aber das führte zum Fehler 2185

    Report_Current wird anscheinend gar nicht erst aufgerufen.

    Gibt es einen eleganteren Weg ?

    Es soll schlicht ein textverweits zum Zeitraum des Berichts erscheinen, z.B. "VorMonat", "Aktueller Monat", "Vorjahr".

    Den Filter lege ich schon beim Öffnen des Berichts fest. Scheint zu funktionieren.

    Sonntag, 3. März 2013 21:00

Antworten

  • NicoNi wrote:
    > Ich versuche mit folgendem Code einen simplen String beim Öffnen
    > eines Berichtes in ein Textfeld zu schreiben.
    >
    > Leider scheitert das mit dem Fehlertext " Sie können diesem Objekt
    > keinen Wert zuweisen" oder so ähnlich.
    >
    > Private Sub Report_Open(Cancel As Integer)
    >  Me.txtZeitraum.Value = CStr(Me.OpenArgs)
    > ...
    Das liegt am Ereignis. In Berichten (anders als in Formularen) ist "Beim Öffnen" für solche Wertzuweisungen zu früh. Verlege die Zuweisung z.B. in das Ereignis "Beim Formatieren" des

    Kopfbereiches oder des Bereiches, in dem sich das Textfeld befindet.

    Alternativ kannst du z.B. die Zuweisung per Code weglassen und als Steuerelementinhalt des Textfeldes schreiben:

    =OpenArgs

    oder bereits im Öffnen-Ereignis die Beschriftung eines Bezeichnungsfeldes füllen, also:

    Me!MeinBezeichnungsfeld.Caption = Me.OpenArgs

    --
    Servus
    Karl
    *********
    • Bearbeitet Karl DonaubauerMVP Sonntag, 3. März 2013 22:01 Ergänzung um Alternativen
    • Als Antwort markiert NicoNi Donnerstag, 28. März 2013 07:58
    Sonntag, 3. März 2013 21:50
  • Hallo NicoNi,

    Ich löse so etwas meist, weil mir die OpenArgs zu begrenzt für die Übergabe von Werten sind, mit Deklaration einer öffentlichen Variable, auf deren Inhalt dann ein beliebiges Feld in einem Berícht oder Formular zugreift. Das ist vielleicht vom Programmier-Stil nicht so elegant, aber effektiv, zumal gelegentlich ein benutzerdefinierter Typ oder Parameter-Variablen die Funktionalität und damit die Möglichkeit, div. Werte zu übergeben, deutlich erhöhen.

    Gruß

    Giorgio 

    • Als Antwort markiert NicoNi Donnerstag, 28. März 2013 07:58
    Donnerstag, 7. März 2013 15:51

Alle Antworten

  • Am 03.03.2013 schrieb NicoNi:

    Leider scheitert das mit dem Fehlertext " Sie können diesem Objekt keinen Wert zuweisen" oder so ähnlich.

    Private Sub Report_Open(Cancel As Integer)
      Me.txtZeitraum.Value = CStr(Me.OpenArgs)
    End Sub

    Im  ersten Anlauf habe ich .Text probiert, aber das führte zum Fehler 2185

    Lass .Text und/oder .Value weg.

    Servus
    Winfried


    Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
    GPO's: http://www.gruppenrichtlinien.de
    Community Forums NNTP Bridge: http://communitybridge.codeplex.com/
    Reg2xml:  http://www.reg2xml.com - Registry Export File Converter

    Sonntag, 3. März 2013 21:21
  • Am 03.03.2013 schrieb NicoNi:

    Private Sub Report_Open(Cancel As Integer)
      Me.txtZeitraum.Value = CStr(Me.OpenArgs)
    End Sub

    BTW: Ich würde das vorher auf NULL prüfen:

    If Not isnull(me.openargs) then
        .....

    Servus
    Winfried


    Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
    GPO's: http://www.gruppenrichtlinien.de
    Community Forums NNTP Bridge: http://communitybridge.codeplex.com/

    Sonntag, 3. März 2013 21:37
  • hilft leider nichts.

    Ich übergebe den OpenArgs als Variant. Aber das dürfte eigentlich kein Problem sein oder?

    Sonntag, 3. März 2013 21:38
  • NicoNi wrote:
    > Ich versuche mit folgendem Code einen simplen String beim Öffnen
    > eines Berichtes in ein Textfeld zu schreiben.
    >
    > Leider scheitert das mit dem Fehlertext " Sie können diesem Objekt
    > keinen Wert zuweisen" oder so ähnlich.
    >
    > Private Sub Report_Open(Cancel As Integer)
    >  Me.txtZeitraum.Value = CStr(Me.OpenArgs)
    > ...
    Das liegt am Ereignis. In Berichten (anders als in Formularen) ist "Beim Öffnen" für solche Wertzuweisungen zu früh. Verlege die Zuweisung z.B. in das Ereignis "Beim Formatieren" des

    Kopfbereiches oder des Bereiches, in dem sich das Textfeld befindet.

    Alternativ kannst du z.B. die Zuweisung per Code weglassen und als Steuerelementinhalt des Textfeldes schreiben:

    =OpenArgs

    oder bereits im Öffnen-Ereignis die Beschriftung eines Bezeichnungsfeldes füllen, also:

    Me!MeinBezeichnungsfeld.Caption = Me.OpenArgs

    --
    Servus
    Karl
    *********
    • Bearbeitet Karl DonaubauerMVP Sonntag, 3. März 2013 22:01 Ergänzung um Alternativen
    • Als Antwort markiert NicoNi Donnerstag, 28. März 2013 07:58
    Sonntag, 3. März 2013 21:50
  • Hallo NicoNi,

    Ich löse so etwas meist, weil mir die OpenArgs zu begrenzt für die Übergabe von Werten sind, mit Deklaration einer öffentlichen Variable, auf deren Inhalt dann ein beliebiges Feld in einem Berícht oder Formular zugreift. Das ist vielleicht vom Programmier-Stil nicht so elegant, aber effektiv, zumal gelegentlich ein benutzerdefinierter Typ oder Parameter-Variablen die Funktionalität und damit die Möglichkeit, div. Werte zu übergeben, deutlich erhöhen.

    Gruß

    Giorgio 

    • Als Antwort markiert NicoNi Donnerstag, 28. März 2013 07:58
    Donnerstag, 7. März 2013 15:51
  • Am 03.03.2013 schrieb NicoNi:

    hilft leider nichts.

    Ich übergebe den OpenArgs als Variant. Aber das dürfte eigentlich kein Problem sein oder?

    Was ist denn nun rausgekommen? Du darfst gerne weiter fragen oder die
    entsprechenden Antworten als Antwort markieren. Auch ein Posting als
    Feedback ist immer gerne gesehen. ;)

    Servus
    Winfried


    Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
    GPO's: http://www.gruppenrichtlinien.de
    Community Forums NNTP Bridge: http://communitybridge.codeplex.com/
    Reg2xml:  http://www.reg2xml.com - Registry Export File Converter

    Donnerstag, 7. März 2013 19:07