Temat: Różne ODBC win7 x64 - połączenie z FoxPro przez ODBC

Witam,
Na win7 x64bit chciałbym połączyć się ze bazą FoxPro. To, że na win7 x64 są dwa odbc wiem.
Uruchomiłem odbcad32.exe , stworzyłem odpowiedniego DSN-a, którego nie widać
w standardowym oknie ODBC, a co za tym idzie i nie widzi go projekt wykonany
w ACC2007 uruchomionym pod RT2007.

W jaki sposób zmusić projekty, aby widział odpowiedni DSN x32? (odwrotnie, jest chyba problem bo z tego co czytałem nie ma driverów FoxPro pod win x64.)

Paweł
Dariusz Kolasa

Dariusz Kolasa Akademia VBA

Temat: Różne ODBC win7 x64 - połączenie z FoxPro przez ODBC

generalnie zmagałem się z dbf-ami pod win7 trochę i niestety na ten czas (ok 2 mies temu) nie było dobrego rozwiązania. MS proponował np linkować pod starymi wersjami i próbować konwertować, ale bez gwarancji powodzenia. Ogólnie ODBC pod win 7 to kupa straszna. Najlepiej zostawić to pod XP

Temat: Różne ODBC win7 x64 - połączenie z FoxPro przez ODBC

Zostawić pod XP... to chyba marzenie - za "chwilę" XP będziemy oglądać w "muzeum" , ale do rzeczy :)
Faktycznie ODBC dla FoxPro to nic nie daje :(

Co do dbf - może mi pomożesz - mam oto taki problem (napisałem o tym na innym forum i cisza):

Próbuję podlinkować jedną tabele 1.dbf do Access 2007 (do edycji) , ale mam
problem z otwarciem tabeli. Samo linkowanie (przez ODBC Visual FoxPro
Database ) wykonuję się poprawanie. W momencie otwarcia tabeli otrzymuję
komunikat:
" ! Pole jest zbyt małe aby pomieścić wprowadzone dane. Należy spróbować
wstawić lub wkleić mniejszą ilość danych "
co może być problemem ? jakiś czas temu podłączałem większe tabele i nie
było kłopotu. Tabele problematyczna to 3 kolumny i około 3 tyś rekordów .
Dodatkowo, może znacie jakiś rozsądny freeware do edycji dbf i ewentualnie
exportu z niego do np. xls ??

Paweł
Dariusz Kolasa

Dariusz Kolasa Akademia VBA

Temat: Różne ODBC win7 x64 - połączenie z FoxPro przez ODBC

Excel otwiera dbf-y wprost. Trzeba tylko pamiętać, że on nic nie wie o indeksach i nie zapisywać nim produkcyjnych dbf-ów bo się aplikacja wysypie. A z tymi problemami z otwieraniem dbf-ów to właśnie miałem to samo pod win 7 i dałem spokój, udało mi się zostawić to na XP :) tam nie ma żadnego problemu. Awaryjnie zawsze można spróbować użyć rekordsetu DAO lub ADO

Temat: Różne ODBC win7 x64 - połączenie z FoxPro przez ODBC

Który Excel ... 2010 ?

Temat: Różne ODBC win7 x64 - połączenie z FoxPro przez ODBC

Znalazłem chyba przyczynę , ale nie wiem jak sobie z tym poradzić nadal.
Problem jest w tym, że w jednym polu dbf-a jest bardzo dużo tekstu - czego zapewne pole tekstowe accessa (excela również) nie obsługuje. Mało to po podłączeniu danej tabeli pole to ma typ danych LICZBA DWÓJKOWA.
Jest jakieś obejście na to ?
Paweł
Paweł D.

Paweł D. Programista Analityk
- Firmowe Bazy
Danych

Temat: Różne ODBC win7 x64 - połączenie z FoxPro przez ODBC

Jeśli w VisualFoxPro masz dane w typie którego nie obsługuje Access to wydaje się logicznym że nie uda ci się go odczytać po accessem.

Proponował bym znormalizować albo jakoś przekonwertować dane w dbf'e tak by formaty pól pokrywały się z tymi z access i spróbować wówczas.

Rozwiązanie/obejściem może być poszukanie jakiejś DLL'ki która potrafi czytać/operować na dbf'e (kiedyś robiłem coś podobego ale to było C++ vs postrgres)

Temat: Różne ODBC win7 x64 - połączenie z FoxPro przez ODBC

logiczne .. co do różnych typów typów danych - temat zamknięty :) Ale ciągłe nie daje mi to spokoju.

W jaki sposób pobrać dane bezpośrednio do recordseta DAO / ADO ..

podlinkowana tabela:
DSN=Visual FoxPro Database;SourceDB=C:\trans.DBC;SourceType=DBC;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;

tabela:
test.dbf

Może przy bezpośrednim połączeniu przez rst uda się uniknąć konfliktu danych ...?

Ale ma problem z połączeniem się z test.dbf

Próbuję :

Public rst As ADODB.Recordset

Function Connect_dbf()
Dim strDBF As String

strDBF = "DSN=Visual Foxpro Database;" & _
"SourceType=DBC;" & _
"SourceDB=C:\trans.DBC;" & _
"Exclusive=No"


Set rst = New ADODB.Recordset
Debug.Print strDBF

With rst
.Open "test.dbf", strDBF

If Not (.EOF And .BOF) Then
Debug.Print rst.Fields(1)
End If

.Close
End With

Set rst = Nothing

End Function

CO robię nie tak ?

P.B.
Michał Dziubek

Michał Dziubek Programista,
INFORM\'1

Temat: Różne ODBC win7 x64 - połączenie z FoxPro przez ODBC

Paweł Boguszewski:
CO robię nie tak ?

Do otwarcia potrzeba obiektu connection
zmiana w kodzie:


Public rst As ADODB.Recordset
Public con as ADODB.Connection

Function Connect_dbf()
Dim strDBF As String

strDBF = "DSN=Visual Foxpro Database;" & _
"SourceType=DBC;" & _
"SourceDB=C:\trans.DBC;" & _
"Exclusive=No"


Set rst = New ADODB.Recordset
Set con = New ADODB.connection
con.open strDBD

Debug.Print strDBF

With rst
.Open "test.dbf", con

If Not (.EOF And .BOF) Then
Debug.Print rst.Fields(1)
End If

.Close
End With

Set rst = Nothing
con.close
set con = Nothing
End Function

Temat: Różne ODBC win7 x64 - połączenie z FoxPro przez ODBC

Jak poniżej udało się ale niestety problem ciągle istnieje.

W tabeli 'test' mam trzy kolumny. W pierwszej i drugiej liczby - nie ma problemu. W TRZECIEJ !!! tekst, dużo tekstu w niektórych komórkach (powiedzmy nota w Accessie ) - i przy debug.print otrzymuję ????????????????????????????????????? - jak się do tego dostać ?

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

Function Connection_2()
Dim strDBF As String

Set cn = New ADODB.Connection
'strDBF = "DSN=Visual FoxPro Database;" & _
' "SourceType=DBC;" & _
' "SourceDB=C:\trans.DBC;" & _
' "Exclusive=No;NULL=NO;Collate=Machine;BACKGROUNDFETCH=NO;DELETED=YES;"
strDBF = "DSN=Visual Foxpro Database;" & _
"SourceType=DBC;" & _
"SourceDB=C:\trans.DBC;" & _
"Exclusive=No"

cn.Open strDBF

Set rs = cn.Execute("select * from test")

Do While Not rs.EOF
Debug.Print rs.Fields(2)
rs.MoveNext
Loop

rs.Close
cn.Close
End Function
Michał Dziubek

Michał Dziubek Programista,
INFORM\'1

Temat: Różne ODBC win7 x64 - połączenie z FoxPro przez ODBC

Nie mam doświadczenia z bazami FoxPro, ale może analogicznie do dbf-a jeżeli jest pole typu nota to dbf tworzy plik o rozszerzeniu dbt, może tego brakuje...
A z drugiej strony jaki typ to pole ma zdefiniowanie chodzi mi o typ FoxPro - może wtedy łatwiej będzie wygooglować rozwiązanie

Temat: Różne ODBC win7 x64 - połączenie z FoxPro przez ODBC

Podglądając DBF Explorer wynika że jest to typ danych - CHAR 250.
Sprawdziłem dla innej tabeli gdzie niby typ danych jest identyczny i wszystko działa, mam dostęp do danych.

Dodatkowa rzecz - może Kogoś to naprowadzi, do każdej tabeli dbf jest identyczny plik (nazwa) z rozszerzeniem cdx.

P.B.



Wyślij zaproszenie do