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

"Funktion steht in Ausdrücken nicht zur Verfügung"

680 views
Skip to first unread message

Michael Waffenschmidt

unread,
Mar 13, 2010, 4:25:04 AM3/13/10
to
Hallo NG,
ich habe eine hübsche Funktion geschrieben um das Alter in Laufzeit zu
errechen und anzuzeigen:

Public Function age(birthday As Date) As Variant
age = DateDiff("yyyy", birthday, Now())
If DatePart("y", birthday) > DatePart("y", datum) Then age = age - 1
If age <= 0 Then age = ""
End Function

Funktioniert auch so weit... aber nur auf XP und W7 ... auf Vista
nicht !?
Bringt die Meldung: "Funktion steht in Ausdrücken nicht zur Verfügung"
Hat jemand eine Idee ?

Gunter Avenius

unread,
Mar 13, 2010, 4:32:23 AM3/13/10
to
Hallo Michael,

Michael Waffenschmidt schrieb folgendes:

Überprüfe Deine Verweise auf dem Win Vista PC.
siehe auch: www.donkarl.com?FAQ7.1

Gruß
Gunter
--
__________________________________________________________
Access FAQ: http://www.donkarl.com

http://www.avenius.com - http://www.AccessRibbon.de
http://www.ribboncreator.de - http://www.ribboncreator2010.de

Michael Waffenschmidt

unread,
Mar 13, 2010, 2:54:24 PM3/13/10
to

Ich habe jetzt den Code zum Checken der Verweise ausprobiert.
Es funktioniert zwar, aber nur bei der accdb ... die accde repariert
es nicht ...
Ist es so ? Gibt es eine Möglichkeit ?

Thomas Möller

unread,
Mar 14, 2010, 4:40:40 AM3/14/10
to
Hallo Michael,

Am 13.03.2010 20:54, schrieb Michael Waffenschmidt:
>> Überprüfe Deine Verweise auf dem Win Vista PC.
>> siehe auch:www.donkarl.com?FAQ7.1
>

> Ich habe jetzt den Code zum Checken der Verweise ausprobiert.
> Es funktioniert zwar, aber nur bei der accdb ... die accde repariert
> es nicht ...
> Ist es so ? Gibt es eine Möglichkeit ?

in einer *.mde bzw. in einer *.accde ist der Code bereits kompiliert.
Daher kannst Du die Verweise hier nicht mehr ändern.

Öffne mal die *.accdb-Datei auf dem Vista PC und schau Dir dort die
Verweise an. Dann wirst Du erkennen, welcher Verweis Dir das Problem
beschert. Wenn dieser Verweis entbehrlich ist dann weg damit.

CU
--
Thomas

Homepage: www.Team-Moeller.de

Michael Waffenschmidt

unread,
Mar 14, 2010, 11:19:56 AM3/14/10
to
On 14 Mrz., 09:40, Thomas Möller <Thomas_N_O_S_P_...@Team-Moeller.de>
wrote:

Hallo Thomas,
Es fehlt kein Verweis ... also in der Verweisliste sehe ich nicht
welcher Verweis Probleme macht.
Bzw. keine Probleme macht, weil dieser nach neu einbinden ja
funktioniert ...
Ich habe auch (dank deinem AEK-Vortrag) einen Code
der die Verweise neu setzt. Dann geht die accdb ...

Im Moment gehe ich einer anderen Spur nach. Mein Rechner hat XP-
SP2 ...
evtl. liegt gas Problemes an der Quelle ... Aber dass Access so zickig
ist hätte ich nicht gedacht !
Mein Projekt ist mit solchen Efekten eigentlich in der Sackgasse.
Wie macht ihr das eigentlich ? Oder distribuirt keiner ?


Karl Donaubauer

unread,
Mar 14, 2010, 11:48:42 AM3/14/10
to
Michael Waffenschmidt wrote:

> Thomas Möller wrote:
>>
>>>> Überprüfe Deine Verweise auf dem Win Vista PC.
>>>> siehe auch: www.donkarl.com?FAQ7.1
>> ...

>> Öffne mal die *.accdb-Datei auf dem Vista PC und schau Dir dort die
>> Verweise an. Dann wirst Du erkennen, welcher Verweis Dir das
>> Problem beschert. Wenn dieser Verweis entbehrlich ist dann weg
>> damit.
> ...

> Es fehlt kein Verweis ... also in der Verweisliste sehe ich nicht
> welcher Verweis Probleme macht.
> ...

Zwecks Klarheit: Du öffnest die accdb auf dem Vista-PC,
bekommst die Fehlermeldung, und wenn du sofort nach
Erscheinen der Fehlermeldung zu den Verweisen gehst,
siehst du kein Problem in der Verweisliste.
Ist es das, was du hier meinst und tust?

Du solltest auch noch verraten, welche Verweise du verwendest.
Geht es nur um die 3 Standardverweise wie in der FAQ 7.1
aufgeführt oder hast du mehr drin?

> Aber dass Access so zickig ist hätte ich nicht gedacht !

Bist du neu in der Access-Welt?
Verweis-Probleme sind die häufigsten mit Access und das
seit vielen Jahren. Deshalb sind sie die Nr 1 im Bugs-Kapitel.

> Mein Projekt ist mit solchen Efekten eigentlich in der Sackgasse.
> Wie macht ihr das eigentlich ? Oder distribuirt keiner ?

Definiere "distribuirt".
Ich jedenfalls ungern in einer Umgebung, die ich nicht kenne
und nicht testen/kontrollieren kann. Es gibt aber auch Leute,
die liefern massenhaft in unbekannte Umgebungen aus -
meist mit Runtime und den Tools von www.sagekey.com -
und es funktioniet ... oder sie raufen sich hin und wieder die Haare
wegen Installations/Verweis/Patch/Rechte-Problemen. ;-)

--
Servus
Karl
****************
Access-FAQ: http://www.donkarl.com /// http://www.donkarl.com?NEK
.NET-Entwickler-Konferenz für Accessler 20./21.3.2010

Michael Waffenschmidt

unread,
Mar 14, 2010, 3:54:53 PM3/14/10
to
> Access-FAQ:http://www.donkarl.com///http://www.donkarl.com?NEK
> .NET-Entwickler-Konferenz für Accessler  20./21.3.2010


Hallo Karl,
Ich wollte vermeiden die ganzen Verweise abzutippen :)
http://picasaweb.google.de/michael.karadaglis/Desktop?authkey=Gv1sRgCPb86bmGyI-p6QE#5448578791207035362
Ansonsten hast du alles richtig interpretiert ...
Übrigens hat das ServicePack 3 auf dem Quellrechner auch nichts
gebracht. Dafür geht jetzt eine
andere Access-Software nicht. Aber das habe ich gewußt dass diese
unter SP3 nicht läuft...


Karl Donaubauer

unread,
Mar 14, 2010, 4:39:37 PM3/14/10
to
Michael Waffenschmidt wrote:
> Karl Donaubauer wrote:
>> ...

>> Du solltest auch noch verraten, welche Verweise du verwendest.
>> Geht es nur um die 3 Standardverweise wie in der FAQ 7.1
>> aufgeführt oder hast du mehr drin?
> ...

Uijeh, was du da treibst ist m.E. der pure Selbstmord für eine
Access-Anwendung. 10 Verweise... und du brauchst dieses
ganze Zeug wirklich? Falls ja, hast du 7-8 Risikofaktoren.
Falls nein, dann raus mit allem, was nicht absolut notwendig ist,
schon auf dem Entwicklungsrechner.

Nutzt du z.B. wirklich ADO + ADO Ext und DAO gleichzeitig?
Oder die OLE Automation, die meistens sinnlos automatisch
von Access selber angehängt wird?
Den Outlook-Verweis kann man mit Late-Binding vermeiden.
Runtime? Scripting?
Ok, bei den Common Controls gehen die Meinungen
auseinander. Mir kommen die in keine Anwendung.

> Ansonsten hast du alles richtig interpretiert ...
> Übrigens hat das ServicePack 3 auf dem Quellrechner auch nichts
> gebracht. Dafür geht jetzt eine andere Access-Software nicht.
> Aber das habe ich gewußt dass diese unter SP3 nicht läuft...

SP3 wovon/wofür?

--
Servus
Karl
****************
Access-FAQ: http://www.donkarl.com /// http://www.donkarl.com?NEK
.NET-Entwickler-Konferenz für Accessler 20./21.3.2010

Michael Waffenschmidt

unread,
Mar 14, 2010, 6:20:55 PM3/14/10
to
On 14 Mrz., 21:39, "Karl Donaubauer" <NoS...@donkarl.com> wrote:
> Michael Waffenschmidt wrote:
> > Karl Donaubauer wrote:
> >> ...
> >> Du solltest auch noch verraten, welche Verweise du verwendest.
> >> Geht es nur um die 3 Standardverweise wie in der FAQ 7.1
> >> aufgeführt oder hast du mehr drin?
> > ...
> > Ich wollte vermeiden die ganzen Verweise abzutippen :)
> >http://picasaweb.google.de/michael.karadaglis/Desktop?authkey=Gv1sRgC...

>
> Uijeh, was du da treibst ist m.E. der pure Selbstmord für eine
> Access-Anwendung. 10 Verweise... und du brauchst dieses
> ganze Zeug wirklich? Falls ja, hast du 7-8 Risikofaktoren.
> Falls nein, dann raus mit allem, was nicht absolut notwendig ist,
> schon auf dem Entwicklungsrechner.
>
> Nutzt du z.B. wirklich ADO + ADO Ext und DAO gleichzeitig?
> Oder die OLE Automation, die meistens sinnlos automatisch
> von Access selber angehängt wird?
> Den Outlook-Verweis kann man mit Late-Binding vermeiden.
> Runtime? Scripting?
> Ok, bei den Common Controls gehen die Meinungen
> auseinander. Mir kommen die in keine Anwendung.
>
> > Ansonsten hast du alles richtig interpretiert ...
> > Übrigens hat das ServicePack 3 auf dem Quellrechner auch nichts
> > gebracht. Dafür geht jetzt eine andere Access-Software nicht.
> > Aber das habe ich gewußt dass diese unter SP3 nicht läuft...
>
> SP3 wovon/wofür?
>
> --
> Servus
> Karl
> ****************
> Access-FAQ:http://www.donkarl.com///http://www.donkarl.com?NEK
> .NET-Entwickler-Konferenz für Accessler  20./21.3.2010

OK, dann werde ich wohl meine Anwendung Überarbeiten müssen.
Ich frage mich nur wofür hunderte Verweise und Active-X angeboten
werden,
wenn man Sie lieber nicht nutzen sollte ...
Danke trotzdem.

Frank Müller

unread,
Mar 14, 2010, 9:41:07 PM3/14/10
to
Hallo Michael,

Michael Waffenschmidt wrote:

>>> Ich wollte vermeiden die ganzen Verweise abzutippen :)
>>> http://picasaweb.google.de/michael.karadaglis/Desktop?authkey=Gv1sRgC...

>> Uijeh, was du da treibst ist m.E. der pure Selbstmord für eine
>> Access-Anwendung. 10 Verweise... und du brauchst dieses
>> ganze Zeug wirklich? Falls ja, hast du 7-8 Risikofaktoren.
>> Falls nein, dann raus mit allem, was nicht absolut notwendig ist,
>> schon auf dem Entwicklungsrechner.

> OK, dann werde ich wohl meine Anwendung Überarbeiten müssen.

Jein, ob das notwendig ist, kann man so nicht sagen.

> Ich frage mich nur wofür hunderte Verweise und Active-X angeboten
> werden,
> wenn man Sie lieber nicht nutzen sollte ...

Was dir da in der Auswahlliste angeboten wird sind genau die,
die du auf deinem Entwicklungsrechner auch installiert / registriert
bzw. zuer Verfügung hast.

Aber ich drücke es mal anders aus:
Wenn du in einen Laden gehst, kaufst du auch nicht
alle angebotenen Artikel die dort in den Regalen
rum stehen, sondern nur das was du brauchst.

Und so ist es mit den Verweisen auch.
Brauchst du wirklich ADO, DAO, ADOX gleichzeitig
in deiner DB? Wenn dem begründet so ist, musst du
das halt, dann spricht auch nichts dagegen.

Der Punkt ist halt der, dass auf diem Zielrechner auch
die ganzen Sachen vorhanden sein müssen. Teileweise
sind sie das vom Betriebssystem her, teilweise halt auch nicht
oder in anderer Version. Um sicher zu gehen müsstest du
ein "richtiges" Setup erstellen bei dem die fehlenden
ActiveX Komponenten auf den Rechner kommen und auch
registriert werden. Einfach die DB zu kopieren reicht da halt
nicht.

Aber unabhängig davon, deine Datumsberechnung
solltest du auch überarbeiten, die ist nicht so toll.
Für eine Altersabfrage ob volljährig oder nicht taugt
die z.B. nicht.

Aber löse erst mal dein Verweisproblem bzw. werfe
die raus, die du nicht brauchst.

Gruß,
Frank

Michael Waffenschmidt

unread,
Mar 15, 2010, 3:14:07 AM3/15/10
to

Hallo Frank,
du hast in allem Recht ... aber das Problem bleibt. Ich habe die
Applikation auf
ca. 2 Duzend Rechnern laufen und ich führe Updates über eine
automatische
FTP-Funtion aus ... übrigens das ist meine Definition von
distribuieren=verteilen (siehe Frage von Karl) ...
Weiß ich was die mit ihren Rechnern machen ? Welche ServicePacks oder
Windowsversionen
installiert sind ? Im Moment schreibe ich nur die Officeversion vor.
Was ja legitim ist, da eine Access-Anwendung
so etwas wie eine Office-Erweiterung ist ... aber damit muß es getan
sein, sprich laufen.
Das ist meine Sackgasse. Komisch dass in dieser Gasse kein anderer zu
sein scheint.
Da muß ich mich bös verlaufen haben :)

Warum funktioniert meine age Fubktion nicht ???
volljaehrig = age(geburtstag) >=18
...


Frank Müller

unread,
Mar 15, 2010, 9:59:57 PM3/15/10
to
Hallo Michael,

Michael Waffenschmidt wrote:

> Hallo Frank,
> du hast in allem Recht ...

Danke :-)

> aber das Problem bleibt. Ich habe die
> Applikation auf
> ca. 2 Duzend Rechnern laufen und ich führe Updates über eine
> automatische
> FTP-Funtion aus ... übrigens das ist meine Definition von
> distribuieren=verteilen (siehe Frage von Karl) ...

Schon klar was du damit gemeint hast.

> Weiß ich was die mit ihren Rechnern machen ? Welche ServicePacks oder
> Windowsversionen
> installiert sind ? Im Moment schreibe ich nur die Officeversion vor.
> Was ja legitim ist, da eine Access-Anwendung
> so etwas wie eine Office-Erweiterung ist ... aber damit muß es getan
> sein, sprich laufen.

Eben genau das weißt du halt nicht bzw. kannst es nicht wissen.
Wenn du nur deine DB verteilst, dann ist es halt abhängig vom
Betriebssystem und dessen "Umständen" ob das funktioniert
oder nicht. Wenn du Kontrolle in z.B. einem Firmennetzwerk
hast kannst du dafür sorgen, dass die Voraussetzungen erfüllt sind.

Wenn nicht, dann ist das mit Access ein reines Glücksspiel.

> Das ist meine Sackgasse. Komisch dass in dieser Gasse kein anderer zu
> sein scheint.
> Da muß ich mich bös verlaufen haben :)

Doch der eine Rechner von dem du sprichst ist in dieser Sackgasse.
Den Hinweis auf Sage hast du schon bekommen, ich kenne das nur
indirekt, aber ich weiß, dass es funktioniert.

Das Problem bei Access ist halt, dass zwar die Office Version
bzw. Access Version angesprochen wird, aber mehr auch nicht.
Die Verweise die man zur Verfügung hat, kann man zwar nutzen
aber nur dann wenn sie auf dem Zielsystem auch vorhanden sind.
Und darauf hast du keinen Einfluss.

VBA ist ja sozusagen verwandt mit VB-Classic. Da erstellt
man ein Setup um seine Anwendung ausliefern zu können. Und da
sind dann die notwendigen Komponenten im Setup enthalten, diese
werden bei Bedarf halt installiert / aktualisiert / registriert usw.
Dann funktioniert das auch.

> Warum funktioniert meine age Fubktion nicht ???
> volljaehrig = age(geburtstag) >=18

Weil du nur auf den Monat und nicht auf den Tag prüfst.

Aber das ist jetzt ein anderes Thema welches nichts mit
den Verweisen zu tun hat.

Gruß,
Frank

Peter Doering

unread,
Mar 15, 2010, 10:23:57 PM3/15/10
to
Hallo,

Michael Waffenschmidt wrote:
> Frank Müller wrote:
>> [...]
>> Brauchst du wirklich [...] gleichzeitig in deiner DB?

>
> Das ist meine Sackgasse. Komisch dass in dieser Gasse kein anderer zu
> sein scheint.
> Da muß ich mich bös verlaufen haben :)

Naja, viel hilft halt nicht immer viel. Folge halt mal der Empfehlung und
entferne Verweis fuer Verweis. Welche davon wirklich gebraucht werden,
erfaehrst du meist schon, wenn du nach dem Entfernen kompilierst. In
Ausnahmefaellen bekommst du den Fehler erst zur Laufzeit mitgeteilt.

> Warum funktioniert meine age Fubktion nicht ???
> volljaehrig = age(geburtstag) >=18

Auf die Gefahr, dass es schon angesprochen worden ist (hab nicht alles
nachgelesen):

- Funktion mal umbenennen, z.b. MyAge
- Funktion als Long deklarieren:
Public Function MyAge(birthday As Date) As Long
MyAge = ...

wobei letzteres trotz Variant nicht die Ursache sein sollte.

Gruss - Peter

--
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com

Karl Donaubauer

unread,
Mar 16, 2010, 5:07:23 AM3/16/10
to
Michael Waffenschmidt wrote:
> ...

> Ich habe die Applikation auf
> ca. 2 Duzend Rechnern laufen und ich führe Updates über eine
> automatische FTP-Funtion aus ... übrigens das ist meine Definition
> von distribuieren=verteilen (siehe Frage von Karl) ...

Für Nichthellseher wie mich war keineswegs klar, wieviel du mit
welchen Methoden distribuierst und inwieweit du dabei etwas
kontrollieren kannst. Daher die Frage.

Es ist auch nochmal ein Unterschied, ob die 2 Dutzend Rechner
in einem einzigen Betrieb stehen und man einen guten Kontakt
zu einer gut organisierten EDV-Abteilung dort hat oder nix dergleichen.
Je nachdem lasse ich mich manchmal auf 1-2 weitere Verweise ein. ;-)

> Weiß ich was die mit ihren Rechnern machen ? Welche ServicePacks
> oder Windowsversionen installiert sind ? Im Moment schreibe ich nur
> die Officeversion vor.
> Was ja legitim ist, da eine Access-Anwendung so etwas wie eine
> Office-Erweiterung ist ... aber damit muß es getan sein, sprich laufen.
> Das ist meine Sackgasse. Komisch dass in dieser Gasse kein anderer
> zu sein scheint.
> Da muß ich mich bös verlaufen haben :)

Wie gesagt, Verweise auf die absolut notwendigen reduzieren
ist Regel Nr 1. Wenn du aber z.B. Windows Scripting intensiv
einsetzt und die halbe Anwendung umschreiben müsstest,
kommt's drauf an, ob du deine "Systemanforderungen" an den (die)
Kunden erweitern kannst oder nicht bzw. ob die EDV-Abteilung
weiß und kontrolliert, was auf den Rechnern ist.

Wasserdichte Setups sind (nicht nur) wegen der Verweise eine schwierige
Sache. Es reicht ja nicht, einfach die benötigten Dateien rüberzuspielen,
sondern, wenn man z.B. Dateien aktualisieren muss, kann es sein,
dass andere Anwendungen darunter leiden. Stichwort "DLL Hell".

> Warum funktioniert meine age Fubktion nicht ???
> volljaehrig = age(geburtstag) >=18
> ...

Sie funktioniert eh fast, da du mit "y" den Tag des Jahres prüfst.
Nur bei Schaltjahren könntest du damit einen Tag daneben liegen.
Kann man auch anderes machen z.B. wie in
www.donkarl.com?FAQ2.7, aber mit Format() haut's einen
genauso auf, wenn ein Verweis nicht passt.

--
Servus
Karl
****************
Access-FAQ: http://www.donkarl.com /// http://www.donkarl.com?NEK
.NET-Entwickler-Konferenz für Accessler 20./21.3.2010

Karl Donaubauer

unread,
Mar 16, 2010, 6:33:44 AM3/16/10
to
Michael Waffenschmidt wrote:
> ...

> ich habe eine hübsche Funktion geschrieben um das Alter in Laufzeit
> zu errechen und anzuzeigen:
>
> Public Function age(birthday As Date) As Variant
> age = DateDiff("yyyy", birthday, Now())
> If DatePart("y", birthday) > DatePart("y", datum) Then age = age - 1
> If age <= 0 Then age = ""
> End Function
>
> Funktioniert auch so weit...

Damit das in den Tiefen der Verweise-Diskussion nicht untergeht:

?age("1960-03-16")
49

weil du mit "y" im Schaltjahr 1960 einen Tag daneben liegst.
Alternative: www.donkarl.com?FAQ2.7

Und das spielt in Wirklichkeit durchaus eine Rolle:
Ein Verwandter hat am 1.5.1960 Geburtstag und mich zu seiner
50er-Party eingeladen. Jetzt muss ich ihm mitteilen, dass er die
Sache um einen Tag verschieben muss. ;-)

"datum" ist übrigens kein günstiger Name für etwas eigenes
(Variable?, Funktion?), weil es ein Schlüsselwort in Access ist
(dt. Bezeichnung für die VBA-Funktione Date() in Ausdrücken).
Das solltest du umbenennen.

Michael Waffenschmidt

unread,
Mar 18, 2010, 3:35:20 AM3/18/10
to
> Access-FAQ:http://www.donkarl.com///http://www.donkarl.com?NEK
> .NET-Entwickler-Konferenz für Accessler  20./21.3.2010

An Alle,
Vielen Dank an Alle. Ich muß sagen .. ich sehe die Sache jetzt
realistischer.
Wenn man das die morschen Bretter kennt, kann man wege finden diese zu
umgehen.
Ich denke ich bekomme es hin, zumal ich relative Kontrolle über die
Umgebungen habe.
Ich muß eben mehr vorschreiben. Und weltweit will ich die Anwendung
nicht vertreiben :)
Ärgerlich war halt die blamable Vorstellung bei einem Neukunden. Aber
ich habe daraus gelernt.
Zukünftig nehme ich ein Notebook mit (obwohl ich die Dinger hasse).

Ich werde jetzt einige Zeit brauchen, zumal hier in Baden der Frühling
ausgebrochen ist
und ich einen großen Garten habe. Ich denke nicht dass Ihr in alte
Postings noch reinschaut,
deshalb bleibt wohl eure Hilfe ohne Feedback...

P.S. Noch eine Bemerkung zu VB. Je nachdem welche Biblitheken man
verwendet,
hat man die gleichen Probleme...

0 new messages