Ich wollte das schon früher posten, aber ich denke, um diese Frage zu beantworten ist eine Gelegenheit so gut wie die andere...
Split, Filter, Replace, Join, InstrRev
Diese fünf Funktionen sind neu in VBA6 und sie alle haben ein "Compare"-Argument, das VBA anweist, wie mit Strings bei Vergleichen umzugehen ist. Es gibt fünf Einstellungen dafür:
**vbUseCompareOption -- Verwende die Einstellung im Option Compare des Moduls, in dem sich die Funktion befindet (Standardwert, falls nichts eingestellt ist, in Access normalerweise Option Compare Database d.h. verwende den gleichen Wert wie vbDatabaseCompare)
**vbTextCompare -- Verwende die Standard-LCID der Maschine, auf der du läufst
**vbDatabaseCompare -- Verwende die Jet-Datenbank-Sortierreihenfolge (nur in Access)
**vbBinaryCompare -- mache binäre Vergleiche; Byte für Byte
**Eine LCID -- die LCID irgendeiner Sprache, einfach einsetzen, wenn Ihre Maschine die Sprache interessiert, funktioniert die Sache. Wenn Ihre Maschine z.B. Japanisch unterstützt, können Sie 1041 verwenden.
Jetzt gibt's da aber ein Problem (Bug) bei der Implementierung dieser fünf neuen Funktionen, das dafür sorgt, dass der "Compare"-Parameter falsch verwendet wird, wenn man vbDatabaseCompare oder vbUseCompareOption übergibt und im Modul "Option Compare Database" steht... es wird nämlich grundsätzlich angenommen, es handle sich um eine LCID. Der Wert für Compare ist dabei eine 2 und 2 entspricht dem Wert für LANGBULGARIAN/SUBLANGNEUTRAL.
Wenn Sie also in Access 2000 eine dieser Funktionen ohne Compare-Argument in einem Modul mit "Option Compare Database" verwenden, dann versucht sie, Zeichenketten-Vergleiche auf Bulgarisch durchzuführen!
Auf Maschinen mit Win95 oder Win98 gibt es meist keine Unterstützung für Bulgarisch. Deshalb liefert der Gebrauch einer dieser Funktionen den Laufzeitfehler 5 (Unzulässiger Prozeduraufruf oder ungültiges Argument).
Nach dem Reboot und nachdem das Setup die Sprachunterstützung hinzugefügt hat, laufen die Funktionen nicht mehr in einen Fehler. Es wird aber immer noch Bulgarisch für Zeichenketten-Vergleiche verwendet. Das ist nicht besonders toll und kann in einer Nicht-US-Englischen-Datenbank auch ziemlich schlimm werden, weil z.B. Griechisch oder Japanisch mit bulgarischen Zeichenketten-Vergleichen falsche Werte liefern können.
Und die Moral der Geschichte? Geben Sie in Access 2000 *immer* ein Compare-Argumente an (verwenden Sie nicht die Standardwerte!), und lassen Sie nie zu, dass der Wert der vbDatabaseCompareOption genommen wird. Ihre Daten werden dafür dankbar sein!