Chyba při práci s externími dBase soubory


Win9x

Microsoft Access, MS Jet

Při používání externích souborů dBase v MS Accessu je třeba dávat pozor na indexové soubory. Pokud jsou soubory a indexy používány např. pomocí IDAPI a nyní je třeba např. použít Access na vytvoření sestav (reportů) tak nastávají problémy. Access (MS Jet) má totiž jinou sortovací tabulku než IDAPI. A tuto tabulku nejde (aspoň já to nevím) nikde nastavit. Pokud Access se totiž rozhodne z nějakého důvodu (automaticky pozná index nebo je požadováno řazení) používat index z MDX, tak při zobrazování (zpracovávání) záznamů postupně jede po MDX a současně po interní sortovací tabulce a pokud nejsou stejné, tak prostě přeskakuje záznamy a není síly to změnit.

Nejde zdaleka jen o diakritiku ale třeba kombinaci písmen, číslic a znmének (*,+,..). Pokud je tedy potřeba používat tak se musí zaručit, že indexové pole bude používat jen znaky, které jsou v obou tabulkách stejně řazené (např. jen číslice nebo jen znaky).

Další problém vznikne pokud Access zapíše do indexového pole. V tomto případě se zase stane, že bude bordel když se použije index v IDAPI.

Nastavení directivy SOFTWARE\Microsoft\Jet\3.5\Engines\XBase\CollatingSequence na ASCII nebo International sice částečně pomáhalo pro diakritiku (za cenu ohromného zpomalení, protože se nepoužívaly indexy) ale samozřejmě už ne na ostatní znaky (0..127).

Verze 95 i 97 se chovají stejně.