Hallo Access-Freunde!
Wenn ich meine Access-DB auf einem PC mit einer Runtime verwende, öffnet sich, immer dann wenn in der jeweiligen Abfrage ein Kriterium ist, ein Fenster mit der Aufforderung, das Kriterium nochmals händisch einzugeben.
Wenn ich meine DB auf einem PC verwende, die Access draufhat, funktioniert alles einwandfrei.
Hat wer eine Idee? Kann die AccessRuntime.exe keine Kriterien in Abfragen interpretieren oder ausgeben?
Danke in Voraus
Pergus
Hallo,
sinnvoll wäre es, den SQL-String der Abfrage zu posten...
"das Kriterium nochmals händisch einzugeben."
was heißt "nochmal"? Erscheint das Parameterfenster zweimal (für den selben Parameter, bzw. Kriterium)
Hallo Franz,
danke für Deine schnelle Antwort.
Habe Datei angehängt mit dem Bild des Filterformulars.
Die Code habe ich (soll fairerweise erwähnt sein!) aus dem 'Das Access 2003 Entwicklerbuch' von Andrè Minhorst (ab Seite 131).
Ich habe es mir nur noch nach meinen Bedürfnissen angepasst.
Als Standardwert im Jahr-Kombinationsfeld steht: =Jahr(Datum())
Sobald ich ins Kombifeld 'Monat' klicke, öffnet sich ein Eingabefenster mit folgendem Titel Enter Parameter Value und folgendem Text Formulare!frmJahrMonat!sfrmJahrMonat.Form!Jahr_Kombinationsfeld.
Das ist nämlich genau das Kriterium im SQL-String, dass Access (als Runtime!) bereits kennen sollte, denn ohne Runtime öffnet sich kein Fenster, sondern der richtig gefilterte Bericht.
Hier die Code im Kombifeld 'Monat':
Private Sub Monat_Kombinationsfeld_AfterUpdate()
Dim strSQL As String
Dim strSQLSelect As String
Dim strSQLWhere As String
'Basisabfrage (SELECT-Teil)
strSQLSelect = "SELECT Format([DatumVon],'mm') AS Monat " _
& "FROM tblStempelungen " _
& "GROUP BY Format([DatumVon],'yyyy'), Format([DatumVon],'mm') " _
& "HAVING (((Format([DatumVon], 'yyyy')) = [Formulare]![frmJahrMonat]![sfrmJahrMonat].[Form]![Jahr_Kombinationsfeld])) " _
& "ORDER BY Format([DatumVon],'yyyy'), Format([DatumVon],'mm')"
'Kombinationsfeld auswerten
If Not Nz(Me!Monat_Kombinationsfeld, 0) = 0 Then
strSQLWhere = "Monat = " & Me!Monat_Kombinationsfeld
End If
'SELECT-Teil zum SQL-Ausdruck hinzufügen
strSQL = strSQLSelect
Debug.Print strSQL
'Neue Datensatzherkunft zuweisen und Kombifeld aktualisieren
Me!Monat_Kombinationsfeld.RowSource = strSQL
Me!Monat_Kombinationsfeld.Requery
End Sub
Hat es vielleicht damit zu tun dass ich Access 2007 benutze und nicht 2003?
Hoffentlich weiß jemand Rat!
Danke schon mal Alle, die auch nur zumindest eine Idee haben könnten!
Pergus
[Anhang gelöscht durch Administrator]
Hallo,
fremden Code nur auszugsweise posten! (Urheberrecht...)
Habe deinen Code entsprechend gekürzt um die Teile um die es nicht geht.
Der Fehler ist dass im unteren String der Parameter im String gekapselt ist und daher nicht ausgewertet wird.
& "HAVING (((Format([DatumVon], 'yyyy')) = [Formulare]![frmJahrMonat]![sfrmJahrMonat].[Form]![Jahr_Kombinationsfeld])) " _
Schreibe statt dessen mal folgendes:
& "HAVING (((Format([DatumVon], 'yyyy')) = " & Forms!frmJahrMonat!sfrmJahrMonat.Form!Jahr_Kombinationsfeld & ")) " _
Gruß Andreas
Hallo Andreas,
ich danke Dir vielmals und entschuldige meine Gedankenlosigkeit :-[ , wird nicht mehr vorkommen!
Kann wahrscheinlich erst am Montag oder Dienstag berichten, ob´s mit Deiner Lösung funktioniert, da ich erst dann an ein PC ohne Access rankomme!
Sag mal, hast Du ´ne Ahnung warum die AccessRuntime.exe keine Kriterien in einer Abfrage auswerten kann?
Meine erste Variante der DB hatte als Datensatzquelle für Berichte Kriterien in Abfragen,
nun versuche ich die Abfragen mit SQL-Strings zu ersetzen, hoffentlich mit Erfolg, denn sonst wüsste ich mir keinen Rat!
Also dann, danke nochmals und bis nächst Woche!
Pergus
Hallo,
die Runtime kann sehr wohl Abfragekriterien auswerten...
Du meinst aber eher "Formularverweise auswerten"
Auch die funktionieren, wenn keine "deutschen Ausdrücke" verwendet werden.
Insofern sollte
& "HAVING (((Format([DatumVon], 'yyyy')) = [Forms]![frmJahrMonat]![sfrmJahrMonat].[Form]![Jahr_Kombinationsfeld])) " _
keine Probleme machen, wobei das "Ausgrenzen", so wie Andreas es dargestellt hat, zu bevorzugen ist.
Hallo Franz,
vielen Dank für Deinen Ratschlag!
Werde dies bei meinen "Umschreib-Arbeiten" beherzigen! ;)
Pergus
Hallo Franz!
Du gibst der Größte 8)
Hattest absolut Recht, es ging einzig und Allein nur darum, die Ausdrücke in englisch und nicht in deutsch zu schreiben!
Nun funktioniert´s wunderbar!
Danke vielmals und schöne Grüße aus Südtirol
Pergus