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
> 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
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
*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
Vielen Dank.
Gruß Frank
"Karl Donaubauer" schrieb:
"Michael Zimmermann" schrieb:
>> 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.
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
Frank Haug:
> War das eigentlich unter Office97 auch schon so?
Ja, soweit ich mich erinnere.
Gruß aus Mainz
Michael
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
Karl Donaubauer:
> Die einzigen Access-Funktionen, bei denen letzteres beim
> Testen vorhin funktioniert hat, waren DLookUp & Co.
Ausgerechnet...
>> 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.......
"Michael Zimmermann" schrieb:
> Hallo!
> 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.
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.
--
:-)