Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Anbindung an VFP über Access 64 bit

Begonnen von David2016, Januar 05, 2022, 14:27:38

⏪ vorheriges - nächstes ⏩

David2016

Hallo zusammen,
nachdem wir bisher unter Office 365 32bit gearbeitet haben , mussten wir nun umstellen auf die 64 bit Version.
Leider funktioniert hier die VFPOLEDB Verbindung zu Visual FoxPro nicht mehr.
Habe nun schon einiges versucht, komme leider nicht weiter.
Der Ansatz über Provider=Microsoft.ACE.OLEDB.12.0 geht leider auch nicht.

Wäre super, wenn mir jemand weiterhelfen könnte.

Anbei der Code wie gehabt unter 32 bit. Hat bisher super funktioniert.
Verweis war "OLE Automation"

Dim cnn As ADODB.connection         'Externe DBF-Tabelle
Dim rsdbf As ADODB.Recordset

Set cnn = New ADODB.connection
Set rsdbf = New ADODB.Recordset

With cnn
        .Provider = "VFPOLEDB.1"
        .Properties("Data Source").Value = "X:\DATABASE.DBC"
        .Properties("Collating Sequence").Value = "MACHINE"
        .Properties("Deleted").Value = "True"
        .Open
    End With
   
    With rsdbf
        .ActiveConnection = cnn
        .Source = "SELECT * FROM TEST.DBF"
        .CursorType = adOpenKeyset
        .LockType = adLockOptimistic
        .CursorLocation = adUseClient
        .Open
    End With

PhilS

Zitat von: David2016 am Januar 05, 2022, 14:27:38nachdem wir bisher unter Office 365 32bit gearbeitet haben , mussten wir nun umstellen auf die 64 bit Version.
Leider funktioniert hier die VFPOLEDB Verbindung zu Visual FoxPro nicht mehr.
Wenn du mit einer 64Bit-Anwendung arbeitest, brauchst du einen 64bit OleDb- oder ODBC-Treiber für den Zugriff auf externe Datenquellen.

Für FoxPro sieht das meines Wissens ziemlich schlecht aus. Vielleicht findest du einen anderen Treiber, der das DBC/DBF-Format lesen kann. Angeblich funktioniert z.B. der Advantage OleDb-Provider auch für FoxPro.

PS:
Zitat von: David2016 am Januar 05, 2022, 14:27:38Verweis war "OLE Automation"
Mit Verweisen hat das überhaupt nichts zu tun.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

MzKlMu

Gruß Klaus

David2016

Hallo Klaus, vielen Dank für die schnelle Antwort, bin am testen. Der Link geht zur gleichen Frage in einem anderem Forum, liegt an der Verzweiflung. ;)

David2016

Sieht vielversprechend aus - danke nochmals - leider bekomme ich keinen Zugriff auf die Tabellen
"Error creating rowset in Icommand"

Dim objcon As ADODB.connection
  Dim rst As ADODB.Recordset
  Dim strcon As String
  Dim strSQL As String
 
  strSQL = "SELECT * FROM KDST.DBF"
 
  strcon = "Provider=Advantage OLE DB Provider;Data Source=D:\ACCESS\Import;ServerType=ADS_LOCAL_SERVER;TableType=ADS_VFP;Extended Properties=dBASE IV;"
 
  Set objcon = New ADODB.connection
 
  objcon.Open strcon
 
  Set rst = New ADODB.Recordset
   
  With rst
      .ActiveConnection = objcon
      .Source = strSQL
      .CursorType = adOpenStatic
      .LockType = adLockOptimistic
      .CursorLocation = adUseClient
      .Open
  End With

PhilS

Zitat von: David2016 am Januar 05, 2022, 18:14:50Sieht vielversprechend aus - danke nochmals - leider bekomme ich keinen Zugriff auf die Tabellen
"Error creating rowset in Icommand"
Du hattest vorher als Data Source "X:\DATABASE.DBC" angegeben. Hast du das bewusst geändert?
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

David2016

Die Angabe mit DATABASE.DBC als Source geht leider nicht. Die kam noch aus der 32bit Umgebung

Aktuell liegen die DBF Dateien und die DBC Datei im Verzeichnis: D:\ACCESS\Import
...
  strcon = "Provider=Advantage OLE DB Provider;Data Source=D:\ACCESS\Import;ServerType=ADS_LOCAL_SERVER;TableType=ADS_VFP;Extended Properties=dBASE IV;"
  ...
 

David2016

Also mit "Provider=Advantage OLE DB Provider; Data Source=D:ACCESSImport; ServerType=ADS_LOCAL_SERVER; TableType=ADS_VFP;"

und
Dim AdsGetCustRecordset As ADODB.Recordset
Set AdsGetCustRecordset = New ADODB.Recordset

AdsGetCustRecordset.Open "SELECT * FROM TABLE", objcon, adOpenDynamic, adLockPessimistic, adCmdText
Tatsächlich der Zugriff möglich ist. Allerding mit Fehlermeldungen von der Advantage Client Engine.

"exception code was generated when calling the user supplied callbackfuntion . it is being disabled"