SQL/DBF Обновление записей из одной таблицы в другую таблицу, расположенную в другой папке (*.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"

ЛЮБОЙ МОЖЕТ ПОМОЧЬ МНЕ.....ПОЖАЛУЙСТА!!!! ПОМОГИТЕ ИЗВИНЕНИЯ ЗА МОЙ АНГЛИЙСКИЙ :)


person user1486787    schedule 27.06.2012    source источник


Ответы (2)


Если данные находятся на разных томах, таких как 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
person DRapp    schedule 28.06.2012

Просто используйте полные имена файлов (включая путь) в запросах UPDATE и SELECT.

person Oleg    schedule 02.11.2012