Neuigkeiten:

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

Mobiles Hauptmenü

Bericht filtern --> nach Migration auf Access 2010 nicht mehr korrekt?

Begonnen von bhommi, August 29, 2013, 16:41:37

⏪ vorheriges - nächstes ⏩

bhommi

Hallo zusammen,

ich habe da mal ein Problem.
Bisher haben wir Access 2003 im Einsatz.
Dort habe ich zum "dynamischen Aufruf" eines Berichts den folgenden VBA-Code:


If Me.alle = -1 Then
        stLinkCriteria = "[Release]=" & "'" & Me![Release] & "'"
    Else
        stLinkCriteria = "[Sachbearbeiter]=" & "'" & Me![UserID] & "'" & " And " & _
                         "[Release]=" & "'" & Me![Release] & "'"
End If

DoCmd.OpenReport stDocName2, acViewPreview, , stLinkCriteria, , stOpenArgs


Mit Access 2003 läuft das einwandfrei.

Nach Migration auf Access 2010 ignoriert die Anwendung sämtliche Kriterien und ruft immer alles auf. Also selbst das Kriterium "Release" wird ignoriert.

Dabei ist es unerheblich ob ich eine mdb oder eine accdb nutze.
Durch einen Haltepunkt sehe ich, dass er aber die Schleife korrekt durchläuft. Und da hat sich ja auch nichts geändert.

Hat sich hier etwas geändert?

Danke im Voraus.

Gruß
Björn
Sofern nicht anders angegeben gilt die Frage für Access 2019.
-----------------------------------------------------------------------------
Und hier noch der größte Tipp aller Zeiten:
"Wer an Jesus glaubt, der hat ewiges Leben."
Die Bibel, Johannes-Evangelium Kapitel 6 Vers 47
-----------------------------------------------------------------------------

DF6GL

Hallo,


es sich da nichts geändert, wobei ich irgendwie bezweifle, dass das auch in A2003 immer richtig gelaufen ist.


...."[Sachbearbeiter]=" & "'" & Me![UserID] & "'"

halte ich für nachfragenswert:

--Welchen Datentyp hat Sachbearbeiter in der Tabelle ?

--Was steht in "UserID" drin?


Wenn in "Sachbearbeiter" ein USERID-Wert steht und dieser Wert den Datentyp Zahl, Long (was zu vermuten ist) besitzt, dann muss das so lauten:

"[Sachbearbeiter]=" &  Me![UserID]

bhommi

Hallo Franz,

doch in Access 2003 hat es schon immer gelaufen und korrekt.

Das Feld UserID ist ein Textwert, 8-stellig, da er mit einem Buchstaben beginnt. Beispielsweise B1234567.

Unabhängig davon wird ja auch das Feld "Release" nicht ausgewertet, dieses hat auch einen Textwert.

Gruß
Björn
Sofern nicht anders angegeben gilt die Frage für Access 2019.
-----------------------------------------------------------------------------
Und hier noch der größte Tipp aller Zeiten:
"Wer an Jesus glaubt, der hat ewiges Leben."
Die Bibel, Johannes-Evangelium Kapitel 6 Vers 47
-----------------------------------------------------------------------------

DF6GL

Hallo,

ok, wenn es sich dabei um Textwerte handelt, ist der Code soweit ersichtlich korrekt und sollte funktionieren. 

Voraussetzung ist bei A2010 die Berücksichtigung der geänderten (neuen) Sicherheitsaspekte, z. B. die Definition der "vertrauenswürdigen Speicherorte" oder das Zulassen von Makros , bzw. dem "Vertrauen" des VBA-Projektes.

Wird denn der Code überhaupt durchlaufen?  Setz mal einen Haltepunkt an eine passende VBA-Zeile und fahre mit Einzelschritt weiter....

bhommi

Guten Morgen,

hatte ja eingangs schon geschrieben, ...
ZitatDurch einen Haltepunkt sehe ich, dass er aber die Schleife korrekt durchläuft.

Mit F8 komme ich auch in die einzelnen Schritte.

Ich habe jetzt mal versucht ohne VBA den Bericht zu filtern.
Selbst das geht nicht. Allerdings auch nicht in Access 2003.
Hmm. Also scheint wohl irgendwie im Bericht selbst was falsch zu laufen.

Ein neuer Bericht nimmt den Filter auch einwandfrei an.

Also muss ich dort mal auf die Suche gehen.
Wobei ich so direkt keine Idee habe :-((

Oder ich blicke jetzt einfach gerade gar nicht mehr durch ;)
Sofern nicht anders angegeben gilt die Frage für Access 2019.
-----------------------------------------------------------------------------
Und hier noch der größte Tipp aller Zeiten:
"Wer an Jesus glaubt, der hat ewiges Leben."
Die Bibel, Johannes-Evangelium Kapitel 6 Vers 47
-----------------------------------------------------------------------------

bhommi

Ok, also ich habe mal geschaut und folgends herausgefunden:

Wenn ich im Bericht "beim Öffnen" folgenden Code drin lasse, dann macht er die Kombination nicht mehr.

Private Sub Report_Open(Cancel As Integer)
If Not IsNull(Me.OpenArgs) Then
        Me.RecordSource = Me.OpenArgs
    Else
        Me.RecordSource = "Standardbericht"
    End If
End Sub


Er übernimmt zwar die OpenArgs und stellt auch nur Datensätze dar, die diesem (Haupt-)Kriterium entsprechen.
Aber die zusätzliche Mitgabe des Filters wird wohl in Acc2010 dann ignoriert.

Geht diese Kombination nicht mehr?
Ansonsten müsste ich halt jetzt herkommen und meine zugrundeliegenden Abfragen erweitern und ggf. dynamisch aufbauen.
Geht natürlich auch. Oder alles nach VBA übernehmen. Meine Kenntnisse haben sich seitdem glücklicherweise etwas verbessert ;-)

Danke nochmal.

Gruß
Björn
Sofern nicht anders angegeben gilt die Frage für Access 2019.
-----------------------------------------------------------------------------
Und hier noch der größte Tipp aller Zeiten:
"Wer an Jesus glaubt, der hat ewiges Leben."
Die Bibel, Johannes-Evangelium Kapitel 6 Vers 47
-----------------------------------------------------------------------------

DF6GL

Hallo,
ziemlich verworren und undurchsichtig, was Du machst.


Im Bericht_Open weist Du dem Bericht eine Datenherkunft zu, die "Standardbericht" heißt, wenn Openargs NULL ist. Was bedeutet das denn?   Was Du im anfänglichen Code mit Openargs übergibst oder übergeben  willst, ist dort  aber auch nicht ersichtlich.   

Es kann durchaus sein, dass eine Übergabe einer Where-Condition VOR dem Einstellen der Recordsource (im Open-Ereignis)   nicht (mehr) den gewünschten Effekt hat.


bhommi

Ja gestehe, ziemlich verworren.
Die Db ist bereits 5 Jahre alt und immer mal wieder angepasst worden.

ZitatEs kann durchaus sein, dass eine Übergabe einer Where-Condition VOR dem Einstellen der Recordsource (im Open-Ereignis)   nicht (mehr) den gewünschten Effekt hat.

Ok, dann nehmen wir das mal weiter an. Danke dennoch für die Hilfe.
Ich werde nun die Abfrage anpassen, die als OpenArgs übergeben wird. Das hat ja den gleichen Effekt.
Evl. muss ich dann noch mal ne Frage stellen, aber dann im Abfrage-Forum.

Ich bastel mal :-)

Danke nochmal und ein schönes WE.
Sofern nicht anders angegeben gilt die Frage für Access 2019.
-----------------------------------------------------------------------------
Und hier noch der größte Tipp aller Zeiten:
"Wer an Jesus glaubt, der hat ewiges Leben."
Die Bibel, Johannes-Evangelium Kapitel 6 Vers 47
-----------------------------------------------------------------------------