Public-Variable in Access-Objekt setzen

07/10/2008 - 01:28 von Joerg Wolf | Report spam
Hi NG,

ich möchte von Excel aus einen Bericht einer Access-Datenbank drucken. Dazu
verwende ich folgenden Code

Private Sub Test()
Dim appAccess As New Access.Application
appAccess.OpenCurrentDatabase ("MeineDB.mdb")
appAccess.DoCmd.OpenReport "MeinBericht"
appAccess.Quit
Exit Sub

Dazu 2 Fragen:

1. Wie muß der Code aussehen, damit der Access-Task in der Taskleiste
möglichst unsichtbar bleibt?

2. Der Bericht benötigt für seine ordnungsgemàße Funktion eine mit einem
bestimmten Wert vorbesetzte Public-Variable. Diese Variable dient der
zugrunde liegenden Abfrage per Funktionsaufruf als Parameter.

Die Access-Datenbank ist für mich Black-Box. Sprich ich kann sie nicht
veràndern.

Frage also: wie bekomme ich von außen die Variable gesetzt?

Danke im Voraus

Gruß Jörg
 

Lesen sie die antworten

#1 Thomas Sandgruber
07/10/2008 - 12:52 | Warnen spam
Hallo Joerg!

zu deinem ersten Problem "Access Window soll nicht sichbar sein:

Dim appAccess As New Access.Application
Set appAccess = CreateObject("Access.Application")
appAccess.Visible = false ' True = Sichtbar
' false = nicht sichtbar

appAccess.OpenCurrentDatabase ("db1.mdb")

Dein 2. Problem mit der Public Variable ist leider nicht so leicht zu
beantworten.
Du làßt einen Bericht automatisch starten. Ich gehe davon aus, dass du die
Public Variable füllen willst, um dort ein Selektion oder Filter - Kriterium
anzugeben.
Leider weis ich nicht, wie der Bericht aufgebaut ist.
Im Access kann man mit dem Befehl
appAccess.DoCmd.OpenReport "MeinBericht",,, "Filterkriterium"
einen Filter setzen, so dass der Bericht nur diese Datenzeilen berücksichtigt.
Eine andere Variante ist innerhalb eines Berichtes VB Code einzusetzen, der
dann von Access zur Laufzeit meinetwegen gefüllt wird.
Da ich deinen bericht nicht kenne kann ich dir nur sehr vage Antworten geben.
In der Regel nutzt man die erste Variante. Ich würde an deiner Stelle es mal
wie folgt versuchen:

Dim Filter as string
..

Filter = "[Tnr] > 123"
appAccess.DoCmd.OpenReport "MeinBericht",,, Filter

' Filter ist eine Variable, die Strings aufnehmen kann.
' Das Feld Tnr kommt in dem Bericht vor und muss durch [] eingeschlossen sein.
' Probleme gibt es, wenn es mehrere Tabellen mit dem Feld Tnr gibt, dann
' muss man [Tab1]![Tnr] schreiben.
' Der gesamte Filter mus in "" stehen.

Ich hoffe dies hilft dir weiter

Gruß Thomas




"Joerg Wolf" wrote:

Hi NG,

ich möchte von Excel aus einen Bericht einer Access-Datenbank drucken. Dazu
verwende ich folgenden Code

Private Sub Test()
Dim appAccess As New Access.Application
appAccess.OpenCurrentDatabase ("MeineDB.mdb")
appAccess.DoCmd.OpenReport "MeinBericht"
appAccess.Quit
Exit Sub

Dazu 2 Fragen:

1. Wie muß der Code aussehen, damit der Access-Task in der Taskleiste
möglichst unsichtbar bleibt?

2. Der Bericht benötigt für seine ordnungsgemàße Funktion eine mit einem
bestimmten Wert vorbesetzte Public-Variable. Diese Variable dient der
zugrunde liegenden Abfrage per Funktionsaufruf als Parameter.

Die Access-Datenbank ist für mich Black-Box. Sprich ich kann sie nicht
veràndern.

Frage also: wie bekomme ich von außen die Variable gesetzt?

Danke im Voraus

Gruß Jörg

Ähnliche fragen