0

あるテーブルから別のフォルダーにある別のテーブルへのレコードの更新。

Dim connection As New ADODB.Connection
Dim strConnection As String
Dim pathPrincipal As String
Dim pathUpdate As String 'External data base to update with TablePrincipal
Dim strSQL As String

pathPrincipal = "D:\DBFs"
strConnection = "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" & PathPrincipal 

connection.Open strConnection
If connection.State <> adStateOpen Then Exit Sub

'正しい :)

strSQL="UPDATE TablePrincipal#DBF" & " A INNER JOIN " & "TableUpdate#DBF" & " B ON A.ID = B.ID SET A.X=B.X, A.Y=B.Y"
'Execute 
connection.Execute strSQL, n, adCmdText

前のコードは完璧に機能します.....

しかし、私の問題は、両方のDBFが同じフォルダーにない場合ですが、これを試していますが、これは他の方法ではありません

'No working for external DBF :'( :(
strSQL = "UPDATE TablePrincipal#DBF A INNER JOIN" & _
         " OPENROWSET('MSDASQL','Driver={Microsoft dBase Driver (*.dbf)}; DBQ=" & _
         pathUpdate & "; SourceType = DBF ','SELECT * FROM TableUpdate#DBF') B" & _
         " ON A.ID=B.ID SET A.X=B.X, A.Y=B.Y"

誰でも私を助けることができます.....お願いします!!!! 私の英語の謝罪を手伝ってください:)

4

2 に答える 2

0

UPDATEおよびSELECTクエリでは、完全なファイル名(パスを含む)を使用するだけです。

于 2012-11-02T11:57:15.250 に答える
0

データが C:、D:、X:、Y: (または任意のマッピング) などの異なるボリュームに存在する場合、いくつかの調整を行わないと運が悪くなります...

パスの設定についてはわかりませんが、VFP (Visual FoxPro) を操作し、最新の OleDB プロバイダーを使用して次の作業を行ったことは知っています...

データ ファイルの接続を作成するときは、接続ポイントからの相対パスを参照できる必要があります。ただし、これは、参照しているデータパスが同じ論理ボリューム上にある場合にのみ機能します...

C:\SomePath\YourApplication\FirstDataFolder
C:\SomePath\YourApplication\SecondDataFolder

or even

C:\SomeOtherPath\AnotherDataLocation

上記があなたの環境と似ている場合は、 C:\SomePath\YourApplication への接続を作成できます

次に、クエリは次のようなことができるはずです

update FirstDataFolder\YourTable A
   JOIN SecondDataFolder\YourOtherTable B
     on a.field = b.field
   set ... etc
   where

パスが 3 番目のパス サンプルに基づいている場合は、C:\ への接続を単独で作成し、次のようにデータへの "相対" パスを完全に修飾する必要があります。

update SomePath\YourApplication\FirstDataFolder\YourTable A
   JOIN SomeOtherPath\AnotherDataLocation\YourOtherTable B
     on a.field = b.field
   set ... etc
   where
于 2012-06-28T15:58:29.007 に答える