SQL / DBF将记录从一个表更新到位于不同文件夹(* .dbf)中的另一个表

时间:2012-06-27 20:24:07

标签: sql database vb.net dbf

将记录从一个表更新到位于不同文件夹中的另一个表。

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 !!!!救命 我的英语学习者:)

2 个答案:

答案 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查询中使用完整的文件名(包括路径)。