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 Provider 完成了以下工作......

在为数据文件建立连接时,您应该能够从连接点引用相对路径。但是,这只有在您所指的数据路径都在同一个逻辑卷上时才有效......例如

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

如果路径基于第三个路径示例,则您必须自己连接到 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 回答