2009-07-27 10 views
1

VFP ODBCドライバ(ドライバはバージョン6.x)を使用してMS Access 2007を使用して書き込みしようとしているfoxproデータベースがありますAccess 2007でFoxproデータベースへの書き込みに制限がありますか?

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

 
We are using ODBC 
It is the MS VFP driver 
The Foxpro and access DBs are on the same system 
The ODBC is setup for Free Table Directory 
Permissions on the foxpro directory and files has been checked. 

我々はいかなる特定のエラーを取得されていませんが、我々はFPテーブル上の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 
+0

なぜこの質問をCWにするのですか? –

+1

どのようなエラーが表示されますか? Foxpro - 32ビットプログラムであれば、1つのファイルに対して2GBに制限されています。 – jac

+0

なぜ私はそれをCWにしたのですか?誰かがそれを編集して、良いタグを追加しました。私がCWを必要に応じて使用することを確かめる必要があると思います。 – Jason

答えて

1

私はdbOpenSnapShotに慣れていないんだとMSDNのクイックチェックがFoxProのオプションとして、それを表示されません。レコードセットを開いた後であなたのcursortypeをチェックすれば、私はそれがデフォルトの型になると思う。私は明示的にプロパティを設定することの大きなファンです。あなたはあなたの接続でこれを試すかもしれません。あなたのOpenRecordsetの呼び出しの場合

oConn.CursorLocation = adUseClient 
    oConn.Mode = adModeReadWrite 

adOpenStaticを試してみてください。私はそれがあなたに更新可能なカーソルを与えると信じています。また、CursorLocation、Mode、およびCursorTypesの一部の組み合わせはサポートされていません。開発のために、開けた直後にCursorTypeをチェックして、期待どおりのものかどうかを確認することをお勧めします。

Debug.Print rsSQL.CursorType 
+0

助けてくれてありがとう... 私は運がないCursorLocationとModeを追加しようとしました。非常に一般的な「構文エラー」というメッセージが表示されています。 – Jason

+0

コードをステップ実行して、エラーが発生した行を知りましたか?また、書き込みしようとしているデータの一重引用符を探しましたか?あなたの価値の1つにアポストロフィがあるとそれが起こります。 – jac

+0

Rickは実際に接続にOLEDBを使用していると指摘しています。私は素早いプロジェクトを試み、OLEDB接続でDAOレコードセットを取得しようとしましたが、タイプの不一致エラーが発生しました。 oConn変数をADODB.Connectionとして調光し、DAO.RecordsetをADODB.Recordsetに変更してください。 – jac

3

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

1)データベース(FoxPro 2.6、Visual FoxPro 6.0以前、またはVisual FoxPro 7.0以降)のバージョンは重要です。あなたの記事の冒頭には、VFP 6データベースに含まれているテーブル、空きテーブル、古いFoxPro 2.6テーブルが正常に動作するVFP 6.0 ODBCドライバがあります。あなたのコードでは、テーブル、空きテーブル、および古いFoxPro 2.6テーブルを含むVFPデータベースを開くVFP OLE DBドライバを参照しています。違いは、ODBC対OLE DBです。

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

2)私の経験では、VFPデータを取得する最も簡単な方法は、MS Access内のリンクされた接続を使用することです。私は他のアプローチを見つけました(そして、これまでのことだったので、私に尋ねることはありません)。

リック・シューマーVFP MVP

関連する問題