Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Laufzeitfehler 3085 beim Zugriff auf Abfrage

388 views
Skip to first unread message

Frank Haug

unread,
Jan 20, 2006, 7:12:02 AM1/20/06
to
Hallo NG,
beim Zugriff von Excel2002 auf eine Abfrage in Access2002 per VBA-Code
dbs.OpenRecordset("xxx", dbOpenDynaset) bekomme ich folgende Fehlermeldung :
"Laufzeitfehler 3085 Undefinierte Funktion 'NZ' in Ausdruck".
Bitte um Hilfe. Was ist das Problem?
Danke im Voraus
Frank Haug

Karl Donaubauer

unread,
Jan 20, 2006, 7:25:43 AM1/20/06
to
Frank Haug wrote:
> beim Zugriff von Excel2002 auf eine Abfrage in Access2002 per VBA-Code
> dbs.OpenRecordset("xxx", dbOpenDynaset) bekomme ich folgende
> Fehlermeldung : "Laufzeitfehler 3085 Undefinierte Funktion 'NZ' in
> Ausdruck".
> Bitte um Hilfe. Was ist das Problem?

Wie sehen denn deine Deklarationen für dbs und ggf. den
Workspace aus?
Falls du dabei den ODBC-Treiber mitmischen lässt, kennt der
üblicherweise nz() nicht. Dann müsstest du entweder deinen
diesbez. Code ändern oder in den Abfragen iif(Isnull()) statt
nz() verwenden.

--
HTH
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com
Datenbank-Profis: http://www.dbdev.org


Jens Schilling

unread,
Jan 20, 2006, 7:27:28 AM1/20/06
to
Hallo, Frank

> beim Zugriff von Excel2002 auf eine Abfrage in Access2002 per VBA-Code
> dbs.OpenRecordset("xxx", dbOpenDynaset) bekomme ich folgende
> Fehlermeldung : "Laufzeitfehler 3085 Undefinierte Funktion 'NZ' in
> Ausdruck".
> Bitte um Hilfe. Was ist das Problem?

Wohl der fehlende Verweis auf die Microsoft Access Object Library.....

--
Gruss
Jens
______________________________
FAQ: http://www.donkarl.com


Michael Zimmermann

unread,
Jan 20, 2006, 7:35:54 AM1/20/06
to
Hallo!

Frank Haug:


> beim Zugriff von Excel2002 auf eine Abfrage in Access2002
> per VBA-Code dbs.OpenRecordset("xxx", dbOpenDynaset)
> bekomme ich folgende Fehlermeldung : "Laufzeitfehler 3085
> Undefinierte Funktion 'NZ' in Ausdruck".
> Bitte um Hilfe. Was ist das Problem?

Die Nz-Funktion ist Bestandteil von Access und dient der
Verarbeitung von NULL-Werten (nicht 0). Wenn Du von Excel
aus über DAO arbeitest, steht sie Dir nicht zur Verfügung.

Ein Verweis auf Access im Excel-Projekt hilft nicht und
auch eine dort definierte gleichlautende Funktion nicht.

Es bleibt übrig, in Access in den Abfragen, die über Excel
ausgelesen werden sollen, auf die NZ-Funktion zu verzichten
oder nicht direkt auf in Access gespeicherte Abfragen
zugreifen, sondern stattdessen ein SQL-Statement im
VBA-Code zu generieren.

Gruß aus Mainz
Michael

Karl Donaubauer

unread,
Jan 20, 2006, 7:46:00 AM1/20/06
to
Karl Donaubauer wrote:
> Frank Haug wrote:
>> beim Zugriff von Excel2002 auf eine Abfrage in Access2002 per
>> VBA-Code dbs.OpenRecordset("xxx", dbOpenDynaset) bekomme ich folgende
>> Fehlermeldung : "Laufzeitfehler 3085 Undefinierte Funktion 'NZ' in
>> Ausdruck".
>> Bitte um Hilfe. Was ist das Problem?
>
> Wie sehen denn deine Deklarationen für dbs und ggf. den
> Workspace aus?
> Falls du dabei den ODBC-Treiber mitmischen lässt, kennt der
> üblicherweise nz() nicht. Dann müsstest du entweder deinen
> diesbez. Code ändern oder in den Abfragen iif(Isnull()) statt
> nz() verwenden.

*Oops*, Michael hat recht. Es reicht ja schon JET ohne Access.
Also vergiss den 1. Teil hier. Bleibt z.B. die Alternative mit
iif(Isnull()).

--
cu

Frank Haug

unread,
Jan 20, 2006, 7:51:02 AM1/20/06
to
Hallo Karl,
die Definitionen sehen wie folgt aus:
....
Dim dbs As DAO.Database
Dim rs As DAO.Recordset
...
set rs= dbs.OpenRecordset("...", dbOpenDynaset)
...

Vielen Dank.
Gruß Frank

"Karl Donaubauer" schrieb:

Frank Haug

unread,
Jan 20, 2006, 7:53:02 AM1/20/06
to
Hallo Michael,
danke für die erschöpfende Auskunft.
War das eigentlich unter Office97 auch schon so?
Gruß Frank

"Michael Zimmermann" schrieb:

Jens Schilling

unread,
Jan 20, 2006, 7:59:52 AM1/20/06
to
Hallo, Michael

>> beim Zugriff von Excel2002 auf eine Abfrage in Access2002
>> per VBA-Code dbs.OpenRecordset("xxx", dbOpenDynaset)
>> bekomme ich folgende Fehlermeldung : "Laufzeitfehler 3085
>> Undefinierte Funktion 'NZ' in Ausdruck".
>> Bitte um Hilfe. Was ist das Problem?
>
> Die Nz-Funktion ist Bestandteil von Access und dient der
> Verarbeitung von NULL-Werten (nicht 0). Wenn Du von Excel
> aus über DAO arbeitest, steht sie Dir nicht zur Verfügung.

Hhmm - ist das denn in Excel 2003 anders ?....

> Ein Verweis auf Access im Excel-Projekt hilft nicht und
> auch eine dort definierte gleichlautende Funktion nicht.

Ich kann da bei gesetzten Verweisen auf die Microsoft Access Object Library
und DAO NZ() benutzen.

Karl Donaubauer

unread,
Jan 20, 2006, 8:17:09 AM1/20/06
to
Hallo, Jens!

Jens Schilling wrote:
>
>>> beim Zugriff von Excel2002 auf eine Abfrage in Access2002
>>> per VBA-Code dbs.OpenRecordset("xxx", dbOpenDynaset)
>>> bekomme ich folgende Fehlermeldung : "Laufzeitfehler 3085
>>> Undefinierte Funktion 'NZ' in Ausdruck".
>>> Bitte um Hilfe. Was ist das Problem?
>>
>> Die Nz-Funktion ist Bestandteil von Access und dient der
>> Verarbeitung von NULL-Werten (nicht 0). Wenn Du von Excel
>> aus über DAO arbeitest, steht sie Dir nicht zur Verfügung.
>
> Hhmm - ist das denn in Excel 2003 anders ?....
>
>> Ein Verweis auf Access im Excel-Projekt hilft nicht und
>> auch eine dort definierte gleichlautende Funktion nicht.
>
> Ich kann da bei gesetzten Verweisen auf die Microsoft Access Object
> Library und DAO NZ() benutzen.

Bist du sicher?
Gemeint ist nicht, ob du dann direkt im Excel-Code Nz() einsetzen
kannst sondern in der im Recordset verwendeten Access-Abfrage.

Die einzigen Access-Funktionen, bei denen letzteres beim Testen
vorhin funktioniert hat, waren DLookUp & Co.

--
cu

Michael Zimmermann

unread,
Jan 20, 2006, 8:16:13 AM1/20/06
to
Hallo!

Frank Haug:


> War das eigentlich unter Office97 auch schon so?

Ja, soweit ich mich erinnere.

Gruß aus Mainz
Michael

Michael Zimmermann

unread,
Jan 20, 2006, 8:32:03 AM1/20/06
to
Hallo!

Jens Schilling:


> > > beim Zugriff von Excel2002 auf eine Abfrage in
> > > Access2002 per VBA-Code dbs.OpenRecordset("xxx",
> > > dbOpenDynaset) bekomme ich folgende Fehlermeldung :
> > > "Laufzeitfehler 3085 Undefinierte Funktion 'NZ' in
> > > Ausdruck". Bitte um Hilfe. Was ist das Problem?
> >
> > Die Nz-Funktion ist Bestandteil von Access und dient der
> > Verarbeitung von NULL-Werten (nicht 0). Wenn Du von
> > Excel aus über DAO arbeitest, steht sie Dir nicht zur
> > Verfügung.
>
> Hhmm - ist das denn in Excel 2003 anders ?....

Sollte mit der Version nichts zu tun haben. Mein Geht-nicht
stammt übrigens aus A/E 2003.

> > Ein Verweis auf Access im Excel-Projekt hilft nicht und
> > auch eine dort definierte gleichlautende Funktion nicht.
>
> Ich kann da bei gesetzten Verweisen auf die Microsoft
> Access Object Library und DAO NZ() benutzen.

Mit DAO hat Nz nichts zu tun. Nz ist eine Function der
Application-Klasse der Access-Bibliothek.

Als solche kannst Du sie bei gesetztem Verweis auch in
Excel nutzen:

Msgbox Nz(5) '> 5

Das ändert aber nichts daran, daß beim Zugriff auf eine
in einer mdb gespeicherte Abfrage, die die Nz-Funktion
enthält, der genannte Fehler kommt.

Auch

Set rsd = dbd.OpenRecordset("SELECT Nz(id) FROM Tabelle1")

bringt trotz gesetzten Verweises den Fehler - gerne auch
direkt nach einer funktionierenden Zeile

Debug.Print Nz(5)

In dem Workspace, in dem die Abfrage ausgeführt wird, sind
die Verweise, die in irgendeiner popeligen Excel-Mappe
stehen, wohl nicht bekannt. ;-)

Gruß aus Mainz
Michael

Michael Zimmermann

unread,
Jan 20, 2006, 8:34:41 AM1/20/06
to
Hallo!

Karl Donaubauer:


> Die einzigen Access-Funktionen, bei denen letzteres beim
> Testen vorhin funktioniert hat, waren DLookUp & Co.

Ausgerechnet...

Jens Schilling

unread,
Jan 20, 2006, 8:33:31 AM1/20/06
to
Hallo, Karl

>> Ich kann da bei gesetzten Verweisen auf die Microsoft Access Object
>> Library und DAO NZ() benutzen.
>
> Bist du sicher?

Nein ;-)

> Gemeint ist nicht, ob du dann direkt im Excel-Code Nz() einsetzen
> kannst sondern in der im Recordset verwendeten Access-Abfrage.

Das hab' ich missverstanden.......

Frank Haug

unread,
Jan 20, 2006, 8:57:02 AM1/20/06
to
Hallo Michael,
nochmals Vielen Dank für die ausführlichen Erklärungen und Hinweise.
Gruß Frank

"Michael Zimmermann" schrieb:

> Hallo!

Jens Schilling

unread,
Jan 20, 2006, 8:58:40 AM1/20/06
to
Hallo, Michael


> Das ändert aber nichts daran, daß beim Zugriff auf eine
> in einer mdb gespeicherte Abfrage, die die Nz-Funktion
> enthält, der genannte Fehler kommt.

Joh - hier lag das Missverständnis - Karl hat's ja auch schon geklärt.

Karl Donaubauer

unread,
Jan 20, 2006, 9:02:24 AM1/20/06
to
Hallo, Michael!

Michael Zimmermann wrote:
> Karl Donaubauer:
>> Die einzigen Access-Funktionen, bei denen letzteres beim
>> Testen vorhin funktioniert hat, waren DLookUp & Co.
>
> Ausgerechnet...
> ;-)

Meine Vermutung, warum sie auch bei reinem JET funktionieren,
ist, dass diese schönen Funktionen so wichtig sind, dass MS sie,
zusätzlich zu den VBA-Funktionen - extra mit in die Bibliothek
des Expression Services genommen hat.

--
:-)

0 new messages