2014-11-14 3 views
3

Я пытаюсь сделать запрос на обновление с использованием соединения слева на другой MDBPYODBC ProgrammingError: ('42000', «[42000] [Microsoft] [Pilote ODBC Microsoft Access]

В курсор на первый MDB. я выполнить этот запрос:

update table as ori 
    left join (select * 
       from param in "E:/Jeter/param_141114.mdb" 
       where zone = '1H005') param 
    on ori.dep_sur = param.dsu_co 
set ori.texture = param.textu where mid(ori.type,4,1) in ('0','7','8') 

Когда я запускаю этот запрос из Microsoft Access, не проблема, применяется запрос

Когда я запускаю этот запрос из питона 2.7 с pyodbc, вот мой результат в переводе с. французский:

ProgrammingError ('42000', "[42000] [Microsoft] [ODBC Microsoft Access Driver] The database engine can not find [E: /Jeter/param_141114.mdb] 'Make sure the name. parameter or alias is valid, he does not understand character or incorrect punctuation and that it is not too long. (-1002) (SQLExecDirectW) ")

Некоторые идеи?

+0

ли работу с одинарными кавычками вместо двойных кавычек здесь ?: 'от паров в«E:/Джетер/param_141114 .mdb'' – HansUp

ответ

3

По-видимому, синтаксис SELECT ... FROM TableName IN "FileName" ... недоступен для запросов ODBC из внешних приложений. Тем не менее, я просто попытался следующие изменениями, и она работала для меня (Python 2.7 и pyodbc):

sql = """ 
update tableau as ori 
    left join (select * 
       from [C:/__tmp/test.mdb].param 
       where zone = '1H005') param 
    on ori.dep_sur = param.dsu_co 
set ori.texture = param.textu 
""" 
crsr = db.execute(sql) 
crsr.commit() 
+0

Большое спасибо, это отлично работает для меня! – PEL

Смежные вопросы