Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Fehler mit Option Explicit

Begonnen von Stapi, April 29, 2012, 19:37:59

⏪ vorheriges - nächstes ⏩

Stapi

Hallo liebe Profis

Ich habe ein Phänomen mit einer Replikat Gruppe, die sich für mich nicht erklären läst. Eine Datenbank wurde erstellt in dem in allen Modulen / Formularmodule die Kopfzeile
Option Compare Database
Option Explicit

Das Error Handling der einzelnen Funktionen ist Gewährleistet und getestet, Variabel sind alle deklariert. In der Original Datenbank läuft alles super ohne jegliche Probleme.
Nun habe ich die Datenbank zur Replikatgruppe gewandelt, und die Probleme nehmen seinen Lauf. Formulare lassen sich nicht öffnen VBA Codezeilen werden nicht ausgeführt. Zusammen gefasst, die Datenbank zeigt mir ein seltsames Verhalten, bei erneuten öffnen immer wieder neue Fehler bzw Formulare werden zerschossen die beim letzten öffnen ohne Probleme liefen.
Habe die Datenbank in eine neue Importiert, das Verhalten bleibt sobald es eine Replikatgruppe wird.
Nachdem ich aus den Formularmodulen die Zeile ,,Option Explicit" entfernt habe läuft sie einwandfrei ohne jegliche Fehler.

Da ich das Verhalten nicht Verstehe gibt es eine Erklärung da für.
Grüße aus dem schönen NRW
Stefan

ebs17

Das genannte Verhalten erklären kann ich nicht - meine Versuche mit Replikation habe ich bereits vor 10 Jahren abgebrochen mit dem Ergebnis, dass Replikation bezogen auf meine Anfordernisse ungenügend und damit ungeeignet ist.

In jedem Falle würde ich aber nicht eine ganze DB-Anwendung replizieren, sondern nur den Datenteil, also das Backend. Trennung in Frontend und Backend dürfte Dir geläufig sein, oder?

Ein Frontend tauscht man nach Aktualisierung einfach aus. Damit erledigen sich auch automatisch Deine genannten Probleme.

MfGA
ebs
Mit freundlichem Glück Auf!

Eberhard

DF6GL

Hallo,

wenn es nach dem Entfernen von "Option Explicit" tatsächlich "richtig" läuft , tippe ich drauf, dass das ein Trugschluss ist.
Ich rate dazu, im VBA-Editor unter "Menüleitste\Debuggen\Kompilieren" nach dem (Wieder-)Einbau von  "Option Explicit" in JEDEN vorhandenen Modulkopf den Code manuell zu kompilieren und (im VBA-Editor) zu speichern. Selbstredend müssen dabei evtl. auftretende Fehler restlos besetigt werden. Ein anschliessendes "Komprimieren/Reparieren" dürfte auch nicht schaden...

Stapi

Hallo
@ebs17
ZitatIn jedem Falle würde ich aber nicht eine ganze DB-Anwendung replizieren, sondern nur den Datenteil, also das Backend. Trennung in Frontend und Backend dürfte Dir geläufig sein, oder?
Ja das Aufteilen ist mir geläufig, da diese Anwendung auf eizelne Arbeitsplätze ohne Netzwerkanbindung laufen sie sie nicht aufgeteilt.

@ Franz
Denn müste laut deiner Aussage es ja auch bei der Datenbank die noch nicht zu einer Replikatgruppe geändert wurde dann zu Fehlermeldungen kommen, was ja Augenscheinlich nicht passiert
Grüße aus dem schönen NRW
Stefan

DF6GL

Hallo,

Zitat
da diese Anwendung auf eizelne Arbeitsplätze ohne Netzwerkanbindung laufen sie sie nicht aufgeteilt.
auch hierbei ist ein FE/BE-Aufteilung empfehlenswert.

Denn müste laut deiner Aussage es ja auch

Konjunktive nützen nichts...  Just do it.... Wenn es kein VBA-Gemecker  gibt, dann ist diese Fehlermöglichkeit eben ausgeschlossen.


Stapi

Guten Morgen Franz

Ich habe die zeile "Option Explicit" wieder eingeführt und wie du Vorgeschlagen jedes Modul kompiliert, ohne eine Fehlermeldung.
Was ich wohl falsch gemacht habe ist: Bei dem deklarieren der Variabel "Dim Variabel , variabel1, variabel3 as string" bei dieser Schreibweise wird die erste und letzte variabel sauber deklariert aber die zweite leider nicht, was aber auch zu keiner Fehlermeldung beim Kompilieren führt. Die richtige Schreibweise ist: "Dim Variabel as string , variabel1 as String, variabel3 as String"
Danke für deine Unterstützung und noch einen schönen Feirtag
Grüße aus dem schönen NRW
Stefan

DF6GL

Hallo,

ok, dann war meine Vermutung ja fast richtig, es könne sich um nicht deklarierte Variablen handeln, wenngleich es hier eben um "falsch" deklarierte handelte..


Dim Variabel , variabel1, variabel3 as String


ist schon eine "saubere" Deklaration, wobei eine fehlende Typenangabe als "Variant" (Default) interpretiert wird (wie sonst im ganzen VBA auch).

Auch von mir schönen Feiertag ..