foxpro (subiekt), a tabele w delphi

0

Czy ktoś, kiedykolwiek podłączał tabele z programu Subiekt (DOS foxpro) ??
Próba uaktywnienia takiej bazy w delphi kończy sie u mnie komunikatem : "Could not find language driver". Próba otwarcia tabeli przez Database Deskop kończy się błędem jak wyżej. Przećwiczyłem wszelkie możliwe ustawienia w BDE Administrator zgodnie z sugestią błędu. Nie wiem co jest grane, co jest źle. Używam delphi 7 enterprise z serwis packiem. Proszę o pomoc, bez tego dołączenia się nie moge kontynuować projektu :|
Jako ciekawostkę podam, że excel bez najmniejszego oporu otwiera tabele jako dbase i nawet zgadza sie strona kodowa. Nic z tego nie rozumie. Pozdrawiam.</quote>

0

poczytaj to

0

Dzięki. Nic ciekawego z tego nie wynika. Na pewno winny jest indeks, który prawdopodobnie ma coś w sobie nie obsługiwane w delphi (przez sterownik). Można obejść to po przez wyzerowanie 28 bajtu w nagłówku tabeli i wszystko śmiga w delphi. Artykuł na ten temat jest na <url>http://www.borland.pl/cgi-bin/tip.exe/showtip?mode=1&id_tip=20
Jest to połowiczne rozwiązanie, bo bardziej potrzebuję dostepu online do tabel, zerując 28 bajt muszę najpierw skopiować tabelę i dopiero przeprowadzać manipulacje, co przy dużych rozmiarach nie zapewnia dostępu w czasie rzeczywistym. Może ktoś ma jakiś rozsądny pomysł ??
Wiem, że w dzisiejszych czasach to sztuka dla sztuki i wielu już nie pamięta, że kiedyś potęgą był clipper i foxpro. Pozdrawiam</url>

0

Jeśli uszkodzony byłby index to także Subiekt by nie działał na takiej bazie. Z tych linków jedno wynika bardzo jasno - należy olać BDE i spróbować czegoś innego. Cały problem nie polega na uszkodzonym indexie jak sugerujesz ale na niezgodności tabeli foxpro subiekta i tego, który zaimplementował Borland. Poszukaj innych komponentów np. TDBF, Zeos albo Adventage.

0

Prawdopodobnie w definicji indeksu została użyta funkcja niestandardowa napisana przez autorów subiekta. Bez posiadania biblioteki z taką funkcją nie ma sposobu na poprawną aktualizację rekordu (albo pojawi się błąd przy próbie aktualizacji, albo aktualizacja uszkodzi indeks)

0

Można otworzyć taką tabelę do odczytu używając sterownika ODBC (używając komponentów ADO) Visual FoxPro Tables (bądź w polskiej wersji Tabele Visual FoxPro). Ponieważ Microsoft nie wspiera już tego sterownika i nie dołącza go do MDAC trzeba go indywidualnie ściągnąć i zainstalować ze strony Microsoftu. Ostatni MDAC zawierający ten sterownik to MDAC 2.5 http://www.microsoft.com/downloads/info.aspx?na=90&p=&SrcDisplayLang=en&SrcCategoryId=&SrcFamilyId=c57692e9-dde7-4a60-b586-5d4fd6794db6&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2fe%2fe%2f4%2fee4fe9ee-6fa1-4ab6-ab8c-fe1769f4edcf%2fmdac_typ.exe

0
bedziol napisał(a)

Można otworzyć taką tabelę do odczytu używając sterownika ODBC (używając komponentów ADO) Visual FoxPro Tables (bądź w polskiej wersji Tabele Visual FoxPro). Ponieważ Microsoft nie wspiera już tego sterownika i nie dołącza go do MDAC trzeba go indywidualnie ściągnąć i zainstalować ze strony Microsoftu. Ostatni MDAC zawierający ten sterownik to MDAC 2.5 http://www.microsoft.com/downloads/info.aspx?na=90&p=&SrcDisplayLang=en&SrcCategoryId=&SrcFamilyId=c57692e9-dde7-4a60-b586-5d4fd6794db6&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2fe%2fe%2f4%2fee4fe9ee-6fa1-4ab6-ab8c-fe1769f4edcf%2fmdac_typ.exe

próbowałeś i wiesz, że się da? Jeśli tak to OK ale z moich informacji wynika, że w subiekcie format tabeli jest mocno zmodyfikowany i nie trzyma się żadnego standardu poza ich własnym.

0

Nie sugeruje, ze jest uszkodzony indeks tylko ze zerujac 28 bajt pozbawiamy tabeli indeksow i tym samym staje sie ona czytalna jako np. dbase, z tym kopiowaniem i zerowaniem powiem szczerze ze dziala calkiem niezle. Prawdą jest że subiekt ma swój sposób na tabele,a w szczególności na indeksy. Excel, wykozystujacy ODB też zeruje ten bajt :) , więc prawdopodobnie, nie ma łatwego sposobu na pracę online, a żeby kombinować coś bardziej złożonego, to po prostu jest to wszystko za bardzo przeżyte i nie ma sensu. Wszysko jest OK póki tylko się czyta, inaczej gdyby trzeba było coś zapisać :/
Pozdrawiam

0

Misiekd - przecież napisałem, że do odczytu (w sensie tylko do odczytu)

0
bedziol napisał(a)

Misiekd - przecież napisałem, że do odczytu (w sensie tylko do odczytu)

le indeksy też są wtedy otwierane więc nie wim co to za różnica czy do odczytu czy odczytu i zapisu, ale temat chyba nieaktualny...

0

No i tu jest ta zaleta ADO, że potrafi otworzyć tabelę nawet jeśli nie potrafi odczytać indeksów (oczywiście nie ma również wtedy możliwości wyszukiwania czy filtrowania z wykorzystaniem indeksów ale działa przetestowałem)

0

Tez potrzebowałem podłączyć się do baz Subiekta 4 z Delphi, oto po kolei co trzeba zrobic:

  1. Faktycznie najlepiej użyć do tego np: ADOQuery, ale:

  2. Najpierw należy pobrać sterownik do bazy FoxPro
    http://msdn2.microsoft.com/en-us/vfoxpro/bb190233.aspx
    , zainstalować go, i w Źródłach danych ODBC -> Systemowe DNS dla Visual FoxPro Tables
    ustawić ścieżkę do katalogu w którym mamy pliki bazodanowe

  3. Potem już tylko budujemy dla ADO ConnectionString, Dostawca: Microsoft OLE DB Provider
    for ODBC Drivers i nazwa źródeł: Visual FoxPro Tables (zakładam, że podłączam tabele)
    Provider=MSDASQL.1;Persist Security Info=False;Data Source=Visual FoxPro Tables

  4. w sekcji SQL, wpisujemy zapytanie np:
    select * from "c:\temp\DOKUMENT.DBF"

I to wszystko, u mnie działa

0

chłopie walni się w czache - zobaz na datę ostatniego postu!

0

A mi się akurat przydało to rozwiązanie, dzięki -artekzet.

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