Format-Funktion aus altem VB Programm läuft nicht

Hi,
unter einer offenbar Uraltversion „Microsoft VB Copyright 1987 – 1996“ sind Codes geschrieben worden, die Formatfunktionen, die den Inhalt einer Combobox in eine Zahl mit Tausenderzeichen pp umwandeln sollen, enthalten wie z.B.:

cboGrundstückskosten = Format(cboGrundstückskosten,"##,##0.00")

Unter Windows XP Home Edition und Microsoft Visual Basic 6.0 (Copyright 1997 – 1999) erscheint nach dem Start des Codes eine Fehlermeldung:
„Fehler beim Kompilieren
Projekt oder Bibliothe nicht gefunden“

Könnt Ihr mir helfen, den Code wieder zum Laufen zu bringen? In der Hilfe zur Format-Funktion für VB 6.0 sieht die Funktion doch genauso aus wie die von mir geschriebene!?
Danke und Gruss
Wilhelm

Moien!

Du verwechselst da was!! die Fehlermeldung sagt nicht aus, daß der Code falsch ist, sondern das ein Verweis auf die netsprechnde Bibliothek falsch ist!

Das Ganze findest du im Menue unter Porjket - Verweise bzw Projekt-Komponenten.

In diesem Fall dürfte der entsprechende Eintrag unter Projekt-Verweise fehlen. Weiß jetzt leider nicht genau welcher Eitnrag das ist, aber es könnte der Verweis auf die „Micorsoft Data Formating Object Lbrary“ sein.

Bernd

Moin Wilhelm!

Schau mal unter Project / References (in der deutschen Entwicklungsumgebung „Verweise“) nach, ob da alles angeknipst ist. In einem normalen VB-Programm ohne Extras sollte

„Visual Basic for Applications“,
„Visual Basic Runtime Objects and Procedures“,
„Visual Basic Objects and Procedures“ sowie
„OLE Automation“

angeschaltet sein. Eventuell heißen die in einer deutschen Entwicklungsumgebung aber auch etwas anders.

Es könnte aber auch daran liegen, daß in der Projektdatei eine DLL oder ein OCX doppelt eingetragen ist (eventuelle auch als VBP und als DLL oder OCX). Ursache dafür kann sein, daß man ein in VB erstelltes Objekt zuerst im Rahmen einer Projektgruppe mit der eigentlichen Anwendung zusammen bearbeitet, danach aber das kompilierte Objekt einbindet. Dann muß man mit einem Texteditor die VBP-Datei öffnen, und den doppelten Verweis händisch rauskratzen. Ist lästig, aber wir haben hier auch noch keinen besseren Weg gefunden.

Ich hoffe, da war nicht allzuviel technoslovakisch in meinem Text enthalten. Dein Profil sagt nichts darüber aus, was Du in VB beherrschst.

Gruß aus dem sonnigen Elmshorn

Sven Bünger

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Sven,
bitte bei mir nur rudimentäre Kenntnisse voraussetzten, also M i t l e i d.

Der Check-Button vor:
„Visual Basic for Applications“,
„OLE Automation“
ist aktiviert.

Ferner aktiviert:
MS Word 10.0 Object Library
MS Forms 2.0 Object Library
MS Office 10.0 Object Library

Schaltflächen für:
„Visual Basic Runtime Objects and Procedures“,
„Visual Basic Objects and Procedures“ sowie
gibt es anscheinend auf meiner Version für VBA nicht.

Dafür ist aber ein Checkbutton für

NICHT VORHANDEN MS Windows Common Controls 5.0 (SP2)

aktiviert. Kann das mit meinem Problem zu tun haben?

Btw: Ist das mit dem sonnigen Elmshorn nicht ein bischen optimistisch formuliert? In Pinneberg ist der Himmel bedeckt.

Gruss Wilhelm

Hallo Wilhelm!

Ist nicht gelogen! Jetzt gerade zieht es sich etwas zu!

Das kann sehr wohl mit Deinem Problem zu tun haben. Wir Programmierer nennen das, was Du gerade erlebst DLL-Hell.
(OCX-Dateien, um die es bei Dir geht, sind technisch betrachtet auch nur DLLs)

Schau doch mal nach, was in Projekt / Komponenten zu sehen ist. Die Windows Common Controls 5 hast Du offenbar nicht mehr auf der Platte, also mußt Du versuchen, die Fehlenden Komponenten durch die Version 6 der Common Controls zu ersetzen, die hast Du ziemlich sicher auf der Platte.

Folgende Vorgehensweise:

  1. Projektdatei öffnen
  2. Projekt / Komponenten aktivieren (NICHT VERWEISE!)
  3. Eventuell den Haken bei „nur Ausgewählte zeigen“ entfernen,
    Damit Du alle Einträge sehen kannst.
  4. In der Liste gibt es drei Einträge für
    „MS Windows Common Controls“. Ich vermute, daß du nur
    den ersten davon aktivieren mußt. Es kann jedoch sein, daß
    die von Dir verwendete Komponente in einer der anderen
    beiden zur Verfügung stehenden Bibliotheken steckt.
  5. Komponentenfenster mit OK schließen
  6. Projekt schließen ACHTUNG bitte NUR die vbp-Datei
    speichern, nicht die anderen Dateien. Die Anderen dürfen
    erst gespeicher werden, wenn die Projektdatei sauber ist.
  7. Wenn Du jetzt das Projekt wieder öffnest, sollte der
    ominöse Eintrag unter Verweise verschwunden sein.
    Andernfalls mußt Du tatsächlich die Textdatei mit einem
    Texteditor aufmachen und manuell entseuchen, indem Du
    einfach die Zeile mit dem Verweis auf die Common Controls
    löschst.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Wilhelm

Das ganze hängt damit zusammen, dass access xp genauso wie auch access 2000 sowohl ado als auch dao beherschen. unter office 97 stand nur dao zur verfügung, unter xp und 2000 aber beides.

nun sind diese 2 versionen xp und 2000 aber nach der installation so eingestellt, das sie mit ado arbeiten. du mußt sie also umstellen.

am einfachsten geht es so

öffne ein modul und gehe auf den menüpunkt extras | verweise

nun deaktivierst du den eintrag activex data objekts 2.0 bzw. 2.1

dann scrollst du runter bis zu microsoft dao 3.6 und aktivierst diese option

danach kannst du das verweis fenster wieder schliessen

nun muesste es eigentlich gehen.

mfg albert

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Moin!

Einen habe ich noch, bin nämlich gerade selbst auf der Nase gelandet (EXAKT derselbe Fehler!)

Ursache war, daß in der Projektdatei ein OCX zweimal eingetragen war. (In meinem Fall waren die als VB-Projekt innerhalb einer Projektgruppe eingebunden). Einen der Beiden (den Zweiten bei mir) habe ich mit Textpad (Notepad tut’s da natürlich auch) rausgeworfen, schon klappte es wieder!

Ist vermutlich eine ausgesprochen gute Idee vor derartigen Experimenten das Projekt oder zumindest die vbp-Datei
zu sichern… :smile:))

Sven

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]