1

VFPODBCドライバーを介してMSAccess2007を使用して書き込もうとしているfoxproデータベースがあります(ドライバーはバージョン6.xです)。

これを行うのに制限はありますか?何を試しても、foxproデータテーブルに書き込むことはできません。

ODBCを使用しています
MSVFPドライバーです
FoxproとアクセスDBは同じシステム上にあります
ODBCはFreeTableDirectory用にセットアップされています
foxproディレクトリとファイルの権限が確認されました。

特定のエラーは発生していませんが、FPテーブルのAccessに新しいエントリを作成するオプションがなく、AccessからFPテーブルにデータを挿入するクエリを実行できません。

どんな助けでも素晴らしいでしょう

コードは次のとおりです。

Dim dbs As DAO.Database
Dim rsSQL As DAO.Recordset
Dim strSQL As String
Dim strSQL2 As String
Dim strConnString As String
Set oConn = CreateObject("ADODB.Connection")
strConnString = "Data Source= C:\Program Files\Best Software\Abra Suite\Programs\Data\hrtables.dbf;User ID = ;Password = ; Provider=VFPOLEDB"
oConn.Open strConnString

Set dbs = CurrentDb
strSQL = "Select * from qryAppendClient"
Set rsSQL = dbs.OpenRecordset(strSQL, dbOpenSnapshot)
Do While Not rsSQL.EOF
strSQL2 = "Insert into hrtables  (c1, c2, c3, c4, Code, Company, Desc, GLComp, n1, n2, n3, Rule, "
strSQL2 = strSQL2 & "Table, tccomp, ud1, ud2, ud3) values (""" & rsSQL!c1 & """, """  &       rsSQL!c2 & """, """ & rsSQL!c3
strSQL2 = strSQL2 & """, """ & rsSQL!c3 & """, """ & rsSQL!Code & """, """ & rsSQL!Company & """, """ & rsSQL!Desc & """, """
strSQL2 = strSQL2 & rsSQL!GLComp & """, " & rsSQL!n1 & ", " & rsSQL!n2 & ", " & rsSQL!n3 & ", """
strSQL2 = strSQL2 & rsSQL!Rule & """, """ & rsSQL!Table & """, """ & rsSQL!tccomp & """, """ & rsSQL!ud1 & """, """
strSQL2 = strSQL2 & rsSQL!ud2 & """, """ & rsSQL!ud3 & """)"
oConn.Execute strSQL2

Loop

oConn.Close
rsSQL.Close
4

2 に答える 2

3

私の専門知識はAccessではなくVisualFoxProですが、Accessを使用してVFPデータを更新したり、その逆を行ったりしています。Visual FoxProデータベースを開くことに関して、考慮すべき2つのことがあります。

1)データベースのバージョン(FoxPro 2.6、Visual FoxPro 6.0以前、またはVisual FoxPro 7.0以降)が重要です。投稿の冒頭で、VFP6データベースに含まれるテーブル、空きテーブル、および古いFoxPro2.6テーブルを正常に開くVFP6.0ODBCドライバーについて言及しました。コードでは、テーブル、空きテーブル、および古いFoxPro2.6テーブルを含むVFPデータベースを開くVFPOLEDBドライバーを参照しています。違いは、ODBCとOLEDBです。

2つとその機能を混同しないように注意してください。

2)私の経験では、VFPデータにアクセスする最も簡単な方法は、MSAccess内のリンクされた接続を使用することです。私は他のアプローチがうまくいかなかったことを発見しました(そしてそれがずっと前だったのでそれらが何であったか私に尋ねないでください)。

リック・シュマーVFP MVP

于 2009-07-28T03:19:36.423 に答える
1

私はdbOpenSnapShotに精通しておらず、MSDNを簡単にチェックしても、Foxproのオプションとして表示されません。レコードセットを開いた後でカーソルタイプを確認すると、デフォルトのタイプになると思います。私はプロパティを明示的に設定するのが大好きです。あなたはあなたの接続でこれを試すかもしれません。

  oConn.CursorLocation = adUseClient
  oConn.Mode = adModeReadWrite

OpenRecordset呼び出しについては、adOpenStaticを試してください。これで更新可能なカーソルが得られると思います。また、CursorLocation、Mode、およびCursorTypesの一部の組み合わせはサポートされていません。開発のために、開いた直後にCursorTypeをチェックして、期待どおりの結果が得られたかどうかを確認することをお勧めします。

  Debug.Print rsSQL.CursorType
于 2009-07-27T20:21:21.240 に答える