August 15, 2020, 07:24:59

Neuigkeiten:

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


Access-Runtime 64-Bit, DoCmd.SetParameter

Begonnen von doa115, Juni 26, 2020, 18:50:16

⏪ vorheriges - nächstes ⏩

doa115

Hallo zusammen,

bin relativ neu unter Access und habe eine Anwendung geschrieben die ich nun unter der Runtime-Version ausführen will.

Ich setze immer wieder Parameter mit DoCmd.SetParameter um dann anschließend Reports aufzurufen.

 DoCmd.SetParameter "Datum", strDatum
 DoCmd.OpenReport "rpt_gebuchte_Termine", acViewPreview

In der Vollversion (64-Bit) klappt das ohne Probleme, lasse ich die Anwendung jedoch unter der Runtime-Version laufen erhalte ich beim Aufruf der Reports folgende Fehlermeldung:

"Der Befehl oder die Aktion 'FestlegenParameter' ist derzeit nicht verfügbar"

Kennt jemand das Problem, bzw. gibt es eine Lösungsmöglichkeit?

Für jede Hilfe wäre ich dankbar.

Gruß

 

DF6GL

Hallo,

wirf diese Parameter-Übergabe weg und öffne den Bericht mit Übergabe eines Filterkriteriums (Where-Condition).


Bei Datum muss die USA- oder ISO-Formatierung angewendet werden:

DoCmd.OpenReport "rpt_gebuchte_Termine", acViewPreview, ,"[Datum] = " & Format(strDatum, "\#yyyy-mm-dd\#")

Zudem muss die DB fehlerfrei(!, es ist dabei notwendig, in JEDEM Modulkopf "Option Explicit" einzufügen, falls noch nicht geschehen) im VBA-Editor unter "Debuggen/Kompilieren" kompiliert und es sollten keine reservierten Wörter verwendet werden.

Und nicht zuletzt:  Die Runtime muss ebenfalls die 64 Bit Version sein.

PhilS

Zitat von: DF6GL am Juni 27, 2020, 11:37:44Und nicht zuletzt:  Die Runtime muss ebenfalls die 64 Bit Version sein.
Nur wenn die Anwendung als AccDE kompiliert wird.
Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!


PhilS

Zitat von: DF6GL am Juni 27, 2020, 16:14:16eine 64-Bit-accdb läuft mit 32bit-Runtime?
Das accdb-Format ist identisch, egal welche Access Edition (32/64bit) verwendet wurde, um sie zu erstellen. Nur der kompilierte Code unterscheidet sich. D.h. eine Accdb ist immer lauffähig, nur muss evtl. der Code neu kompiliert werden, was aber zumindest bei Bedarf automatisch passiert.
Daher gilt das nur für die AccDB aber nicht für eine AccDE.

Es kann natürlich sein, dass im VBA-Code Anweisungen enthalten sind, die nur mit einer bestimmten Version kompiliert werden können, aber das betrifft eigentlich nur die Windows API und ggf. externe Bibliotheken.
Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!

doa115

Hallo,

habe ich inzwischen wie empfohlen gelöst.

    Datum = Now
    strDatum = "#" & Format(Datum, "yyyy\/mm\/dd") & "#"       
    strWhere = "[TermStatus] = " & """geplant"" and [TermDatum] = " & strDatum _
             & " and Month(Geburtstag)=Month(" & strDatum & ") and Day(Geburtstag)=Day(" & strDatum & ")"
    DoCmd.OpenReport "rpt_Geburtstage", acViewPreview, , strWhere

Ein kleines Problem hatte ich noch damit, dass ich die übergebenen Parameter auch im Bericht angezeigt habe. Dies läuft nun über eine globale Variable + Public Function.

Danke für die Hilfe

Gruss
Albert

DF6GL

Hallo,

das könnte auch mit dem Openargs-Parameter der Openreport-Methode gelöst werden.

@phil,

ja, danke...