Meerdere variabelen meegeven aan rapport

Status
Niet open voor verdere reacties.

john64

Gebruiker
Lid geworden
12 jun 2011
Berichten
268
Ik heb op basis van een aantal variabelen een filter opgebouwd, waarmee een rapport wordt geopend
Nu kan ik bij het openen van dat rapport dmv openargs 1 variabele meegeven en die gebruiken op bijv. het voorblad van het rapport
Is het ook mogelijk om meerdere variabelen mee te geven ? Ik filter bijv. op datum (van en tot) en naam van een persoon en evt. een woord waarop is gezocht in de database
Op voorblad van rapport wil ik dan vermelden wat de filtercondities zijn geweest voor dit rapport.
Iemand een idee

mvg
John
 
Ik zou even moeten kijken, maar kun je ze niet in n Array zetten?
 
Dát kan met een trucje. Wat ik zelf doe, is alle variabelen in één string zetten (OpenArgs kent maar één variabele) met een scheidingsteken en die op het geopende formulier weer uit elkaar trekken. Dat kan met SPLIT (maak je dus een matrix variabele op je formulier) of met INSTR. De laatste variant gebruik ik eigenlijk nooit, omdat je dan nogal lastig moet gaan zoeken vind ik. Bovendien is het een lastige techniek als je meer dan twee variabelen hebt. Dus ik raad Split aan.
Met een lus loop je dan door alle matrixwaarden heen en zet je ze op de juiste velden.
 
Je kunt het OpenArg argument gebruiken.
En ook onderstaande code
Code:
'------------------------------------------------------------------------------------------
' GetPrmValue
'
' Kijkt of Parm voorkomt in str.
' Zo ja dan wordt alles na het =-teken weergegeven
' bijv: str="Mystring=hall0;" Het GetPrmValue => "Hallo"
' De Str moet altijd eindeigen met een punt-komma (;)
'------------------------------------------------------------------------------------------
Public Function GetPrmValue(Str As String, Parm As String) As String
    'Paramter in string zoeken en waarde teruggeven (Str)
    GetPrmValue = Mid(Str, InStr(1, Str, Parm) + 1 + Len(Parm), _
         InStr((InStr(1, Str, Parm) + 1 + Len(Parm)), Str, ";") - _
         (InStr(1, Str, Parm) + 1 + Len(Parm)))
End Function

Je kunt dan bij het openen van je rapport o.a. hiernaar kijken
bijv:
Code:
Private Sub Report_Open(Cancel As Integer)
Dim ss As String
    
    ss = GetPrmValue(Me.OpenArgs, "Caption")
    If ss <> "Null" Then
        Me.Caption = ss
    End If
    ' Moet het linesmanshirt of refereeshirt worden getoond.
    ss = GetPrmValue(Me.OpenArgs, "Funktie")
    If ss = "Referee" Then
        Me.Afb_Shirt_Ref.visible = True
    Else
        Me.Afb_Shirt_Lines.visible = True
    End If
    Me.Picture = rpt_Afbeelding
    Me.PictureAlignment = 4         ' Rechtsonder
    Me.PictureType = 1              ' Gekoppeld
    DoCmd.Maximize
End Sub
 
Zoals ik al aangaf: de methode met SPLIT is heel wat simpeler te maken dan de Instr variant. Een voorbeeldje:
Formulier openen met:
Code:
        DoCmd.OpenForm "fArtikelen", , , , acAdd, acDialog, NewData & "|Artikel|" & iBedrijf
En op het formulier plaatsen met:
Code:
Private Sub Form_Open(Cancel As Integer)
    If Not IsNull(Me.OpenArgs) Then
        Dim sArgs() As String
        sArgs = Split(Me.OpenArgs, "|")
        Me.txtArtikelID.Value = sArgs(0)
        Me.txtArtikel.Value = sArgs(1)
        Me.cboBedrijfID.Value = sArgs(2)
    End If
End Sub
 
Old school? Hoe lang denk je dat Split er al in zit? :)
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan