DBF - nie można znaleść indeksu

0

Witam

Mam taki problem. Łączę się z dBase czy to przez ODBC czy przez OLEDB. W momencie wykonywania zapytania dostaje błąd 'Nie można znaleŹć indeksu'. Wie ktoś o co chodzi? Raz mi się udało i zapytanie się wykonało. Nie mam pojęcia o co chodzi. Może mają z tym związek uszkodzone pliki .cdx lub coś związane z tymi plikami. Bardzo proszę o pomoc.

1

cdx, ndx, idx, jak zwał tak zwał... Bodajże od DBF 4 w każdym pliku DBF (w nagłówku) jest zapisane, czy tabela ma wygenerowany index. Wystarczy tej bajt wyczyścić i bangla... Oczywiście trzeba wcześniej kopię zrobić. W sieci powinny tez byc programy, które robia to za ciebie...

pozdrawiaMM

0

Dzięki wielkie. Już jakiś trop jest. Pytanie tylko jak usunąć tą flagę z poziomu kodu c#. Można to zrobić przez jakieś zapytanie sql czy raczej trzeba przez jakiś memory stream dobierać się do pliku? Znalazłem jakiś przykład w Delphi gdzie robi się to przez BlockWrite....

Wie ktoś coś na ten temat? Proszę o pomoc.

0

SQLem tego nie zrobisz... 28 bajt musisz zmienić.

0

Jakby ktoś potrzebował:

private void UncheckIndexFlag(string pathDbf)
        {
            using (System.IO.FileStream stream = new System.IO.FileStream(pathDbf, System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite))
            {
                stream.Position = 28;
                stream.WriteByte(0);
            }
        } 

1 użytkowników online, w tym zalogowanych: 0, gości: 1