czy istnieje wewnętrzna procedura C# umożliwiająca dostęp przez SQL do tblic DBF?

0

Wiem, że można się dobrać zapytaniem SQL do zewnętrznych tabel typu DBF poprzez OdbcConnection ale wymaga to sterowników systemowych - a z nimi bywają problemy.
A czy jest jakiś mechanizm 'czysto' C# który potrafi to uczynić?
Jak się nazywa i jak funkcjonuje?

0

Czy jest gotowy nazwijmy to pełnowartościowy mechanizm to nie wiem ale już ktoś próbował się dobierać http://www.codeproject.com/Articles/24247/Load-a-DBF-into-a-DataTable jednak z tego co widzę to zrobił tylko odczyt nawet bez żadnego filtrowania. Skoro z systemowymi sterownikami bywają problemy to jeżeli problemem nie jest programista raczej nie znajdziesz czegoś co mogłoby je zastąpić.

0

jeśli jest to program pisany w clipperze to zapomni - nic standardowego (w pakiecie) nie poradzi sobie z indeksami a bez tego dodanie czegokolwiek do bazy jest niemożliwe (rozłoży resztę softu działającego na tych bazach).

Przede wszystkim musisz wiedzieć co to za DBFy (w szczególności chodzi o to jakie mają indeksy - NTX CDX MDX NDX) są bo jest ich kilka wersji.

0

Nie mają żadnych indeksów, i nigdy nie będą miały. Program (dotychczas pisany w Delphi4) służy jedynie do odczytu i filtracji danych i obróbki innych plików (DXF, PDF, SLDRPT), tworzenia wyciągów (raportów) w formatach TXT, XLS, HTML na podstawie danych z bazy DBF.

Baza jest ładowana danymi przez SolidWorks (Visual Basic) i batchową procedurę 'interfejsową' pisana w Delphi. Ponieważ dane z bazy nie będą nigdy usuwane (założenie) a ich przyrost wynosi maksimum 10 rec. dziennie więc nie ma większych obaw (obecnie baza ma ok 30 tys. rekordów)
Dodałem załącznik (do pierwszego wpisu w wątku) z uproszczoną instrukcją obsługi programu by unaocznić co robi i jak działa.

0

no dobra - biorąc pod uwagę Twój poprzedni temat i ten napisz co chcesz osiągnąć. Bo jeśli chcesz przepisać stary program na c# to od razu zamień DBFy na cokolwiek innego - mssql express, SQL Server Compact, sqlite, firebird, postgres. I po tym zabiegu przestań sobie zawracać nimi głowę - trzeba je będzie raz przepisać do nowego formatu i tyle a to można nawet excelem czy czymś podobnym zrobić. Jeśli chcesz czytać z tych DBFów jednocześnie mając stary program to napisz co dalej z tym co odczytasz - może będzie inny (łatwiejszy sposób na to). No i czy masz źródła do starego programu? Być może taniej i szybciej będzie zlecić komuś zamianę DBFów na coś "dzisiejszego"

0

Kody źródłowe mam, w końcu sam je pisałem.
Co do tego co chcę zrobić to patrz 'instrukcja' dołączona do pierwszego postu - tam jest opis praktycznie całego programu (starszy był bardziej rozbudowany, miał jeszcze obróbkę danych z AutoCADa)
A co do zamiany baz na inne to nie będzie problemu jeżeli znajdę jakikolwiek powód by to zrobić. Podejście do życia mam raczej konserwatywny i nie widzę powodu by zmieniać 'stary dobry schemat' na coś nowego tylko dlatego że jest nowe ;-) - a dodatkowo, by móc podjąć decyzję o zmianie struktury bazy na inną musiałbym poznać wszystkie nowe struktury i uzgodnić to firmą (a DBFów nie muszę z nikim uzgadniać) - a nie specjalnie mam na to czas (zostało mi jeszcze najwyżej 30-40 lat życia ;-) ).
Poza tym DBF-y mają jedną podstawową zaletę - działają zawsze i w każdym systemie bez dodatkowych instalacji "niewiadomoczego", można je poprawiać ręcznie a jak ustawi się blokadę praw do zapisu są podobnie bezpieczne jak każda inna. Struktura jest łatwa i nawet jak się chce w niej pogrzebać ręcznie to się da!
Dodatkowo ja nie lubię być zależny od czegoś na co nie mam żadnego wpływu - dlatego i powstało pytanie o "ominięcie" sterowników windowsowych których aktualizację robią kiedy chcą i jak chcą (najczęściej nie robią!), tak by można własnym kodem obsługiwać plik o znanej strukturze - tak samo jak obsługuje się na przykład pliki TXT ;-)

W linku kAzka znalazłem tekst "However, try to find one that does not use the MS Jet driver or perhaps the MS FoxPro driver. I tried myself and couldn't find one," i mam wrażenie że to jest odpowiedź na moje pytanie - nie ma!
Boli ale cóż ;-)

0

chłopie ale weź się na coś zdecyduj!!! Raz piszesz, że program stary i nie działa na nowszym systemie, potem, że działa super i nie widzisz sensu coś zmieniać. Normalnie was tam kilku jest czy jak?? Zaczęło się od tego, że nie potraficie (Ty i "informatycy" w firmie) zainstalować BDE na win 64-bit. Potem coś o tym, że nie zawsze działa (a co to w ogóle znaczy?) odczyt z DBFów pod c# - może i tak być. Tylko po jaką cholerę chcesz te DBFy pod c# odczytywać? Dalej mamy

Poza tym DBF-y mają jedną podstawową zaletę - działają zawsze i w każdym systemie

a w poście pierwszym

Wiem, że można się dobrać zapytaniem SQL do zewnętrznych tabel typu DBF poprzez OdbcConnection ale wymaga to sterowników systemowych - a z nimi bywają problemy.

no to działają czy nie działają????

Może Ty się najpierw zastanów co chcesz zrobić i jak już będziesz wiedział to wtedy daj znać.

BTW jak

Dodatkowo ja nie lubię być zależny od czegoś na co nie mam żadnego wpływu
to napisz to w asemblerze i oprzyj o własny format plików - będziesz miał wpływ na wszytko...

0

Może rzeczywiście wyrażam się niezbyt precyzyjnie więc odpowiem szczegółowiej:
Program jako program działa poprawnie ale wymaga zainstalowania sterownika BDEInfoSetup.EXE, który jest wprost bajecznie stary!
I w tym momencie zaczynają się schody bo na kilkudziesięciu komputerów, na których jest uruchamiany program w kilku systemach (mam wrażenie że od XP do Win8) nie wszędzie działa tak samo. Firmowi informatycy poustawiali co się dało ale praktycznie do każdego komputera trzeba było podejść indywidualnie - nawet nie wiem co poustawiali, ale chyba przestali nie lubić ;-).
Dlatego też nie chcę zmieniać DBFów (jak nie będę musiał) bo to działa (od strony wprowadzania danych też), chciałem ominąć sterowniki winowsowe (nie C#) by nie było problemów z działaniem na różnych systemach i na różnej jakości komputerach. Jak już pisałem: dostęp do plików TXT nie wymaga sterowników windosowych.
A co do asamblera - pomysł jest dobry ale może kiedy indziej

W każdym razie dziękuję za informacje - odpowiedź już znam - nie da się (bez asamblera) więc pobawię się OdbcConnection
Wszystkim bardzo dziękuję i kończę wątek by nie zajmować czasu
Miłego dnia

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