将记录从一个表更新到位于不同文件夹中的另一个表。
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"
任何人都可以帮助我..... PAYASEEEE !!!!救命 我的英语学习者:)
答案 0 :(得分: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
如果路径基于第三个路径示例,则必须自己连接到C:\,然后完全限定数据的现在“相对”路径,例如:
update SomePath\YourApplication\FirstDataFolder\YourTable A
JOIN SomeOtherPath\AnotherDataLocation\YourOtherTable B
on a.field = b.field
set ... etc
where
答案 1 :(得分:0)
只需在UPDATE和SELECT查询中使用完整的文件名(包括路径)。