PDA

Vollständige Version anzeigen : Bericht öffnen mit Bedingung?


asphalt
20.03.2004, 13:49
Hallo,
ich habe folgenden code um einen bericht zu öffnen, die daten werden infolge der bedingung gefiltert. mein problem ist wenn ich zuviele datensätze für den bericht auswähle, die in der variablen bedingung gespeichert werden macht access meinen bericht nicht mehr auf.
wenn ich weniger auswähle ( aus einen listenfeld wähle ich personen aus) dann funktionierts wieder.
hat da jemand eine idee wieso das so ist

dim bedingung as variant
dim rname as string
rname ="wwwwwww"
DoCmd.OpenReport rname, acViewPreview, , Bedingung


die zeichenanzahl für bedingung kann laut access hilfe aber 32768 zeichen umfassen. und bei ca. 2800 zeichen ist es nicht mehr möglich den bericht zu öffnen.

thx

Johnny Loser
20.03.2004, 14:08
Ich kann mir nicht vorstellen, daß es die Länge des Strings ist, die Dir Probleme bereitet, eher die Anzahl an Kriterien.

Kommt denn eine Fehlermeldung? und wie lautet diese?

asphalt
21.03.2004, 14:42
@jonny loser

tatsächlich, ich hatte die fehlermeldungen unterdrückt und jetzt schreibt access
laufzeitfehler 7769

der filterbezogene vorgagn wurde abgebrochen.der filter wäre zu lang geworden.

was soll ich jetzt bloss anfangen.

so schaut meine bedingung aus zum bsp.

adre_id = 245 and RK = 'Hr.Toni Wunderlich' or adre_id = 249 and RK = 'Hr.Günther'

kann ich irgendwie anderst das umgehen, mit einem anderen code oder befehl, wäre super wenn du mir tipps geben könntest

thx

Johnny Loser
21.03.2004, 15:41
Ich denke, es gibt 2 Möglichkeiten, das Problem zu lösen.

1. Möglichkeit

Anstelle eines Listenfeldes nehme man ein Endlosformular. In der Tabelle der Datenherkunft existiert ein zusätzliches Ja/Nein-Feld, welches standardmäßig auf False steht und bei der Auswahl auf True gesetzt wird.
Der Bericht druckt alle Datensätze, die True sind.
Danach werden alle Felder wieder auf False gesetzt.

2. Möglichkeit

Du erstellst eine temporäre Tabelle, die in einer Schleife mit jedem gewählten Datensatz Deiner ListBox gefüllt wird. Der Bericht bezieht sich dann auf die Daten Deiner temporären Tabelle.


P.S.:

adre_id = 245 and RK = 'Hr.Toni Wunderlich' or adre_id = 249 and RK = 'Hr.Günther'

sollte wohl eher so aussehen:

(adre_id = 245 and RK = 'Hr.Toni Wunderlich') or (adre_id = 249 and RK = 'Hr.Günther')

Nouba
21.03.2004, 15:43
Wenn Du soviel filterst, kommt vielleicht eine temporäre Tabelle in einer temporären Datenbank in Betracht, auf die Du Dein Berichtsrecordset aufbaust.

asphalt
21.03.2004, 16:00
hallo,

ich hab jetzt bei microsoft was gefunden.

http://support.microsoft.com/default.aspx?scid=kb%3Bde%3BD40291


ab 2000 zeichen funktioniert die where bedingung nicht mehr.
ich habe aber keine ahnung wie ich das argument filtername verwenden
kann.

vielleicht kann mir bitte einer helfen, vielleicht gibt es einen threat dazu
habe aber nichts gefunden

ciao

Arne Dieckmann
21.03.2004, 20:28
Manchmal frage ich mich, wozu es eigentlich eine Onlinehilfe gibt?

Schau Dir in der VBA-Hilfe die OpenReport-Methode an. Dort sollte das eigentlich ausreichend erklärt sein.

Aus der Onlinehilfe: OpenReport-Methode - Beispiel

Dieses Beispiel druckt den Bericht Umsätze unter Verwendung der bestehenden Abfrage Berichtsfilter.

DoCmd.OpenReport "Umsätze", acViewNormal, _
"Berichtsfilter"

Nouba
21.03.2004, 20:29
Du kannst Dir ein kleines Beispiel <a href="http://bousn.bei.t-online.de/mdb/tmptable97.zip">TmpTable97</a>, das Deinen Anforderungen genügen soll, runterladen.

asphalt
27.03.2004, 09:09
@arne
lieber arne sei nicht so streng mit mir :-)

@nouba
auf dich ist wie immer verlass
thx