Имя: Пароль:
1C
 
Запрос к Firebird через Linked Server sql 2005
0 recovery_man
 
14.11.09
17:18
Здравствуйте ув. эксперты, вопрос следующего плана, пересел на новый sql  сервер, старого уже нет, перенёс линкед сервером базы Firebird, какие были на старом, но вот не выполняеться обработка, содержащая запрос ниже, хотя раньше выполнялась, за счёт чего не знаю правда(каюсь) но очень хотелось бы знать, помоги кто сталкивался, буду очень признателен.
//*********************************************
Запрос=СоздатьОбъект("ADODB.Command");
       Запрос.ActiveConnection=Соединение;
       Запрос.CommandText="
       |declare @id integer
       |set @id=(select top 1 id from openquery("+ИмяБазыЗ+",'parts') where zrem='"+КомментСменки+"')
       |if @id is null
       |begin
       |    set @id=(select top 1 new_id from openquery("+ИмяБазыЗ+",'select gen_id(parts_id,1) as new_id from rdb$database'))
       |    insert into openquery("+ИмяБазыЗ+",'parts')
       |    values(@id,null,'',cast('"+Формат(Док.ДатаДок,"ДГГГГММДД")+"' as datetime),'"+КомментСменки+"',null,null,null,null)
       |    update openquery("+ИмяБазыЗ+",'select * from offers where id in ("+тСписокЗаказов+") and (partid is null or partid=0)') set partid=@id
       |end";
       Запрос.CommandType=1;
       Попытка
           Запрос.Execute();
//*****************************************************************
ошика не знает что такое таблица """"""parts""""
кстаьтьи говоря select * from openquery("ИмяБазыЗ",'parts') тоже выдаёт такую же ошибку, а если select * from openquery("ИмяБазыЗ",'
select *parts') то всё ок и показывает эту таблицу. Но хотелось бы разобраться в первом случае, за счёт чего же всё таки работало.
1 Cap_1977
 
14.11.09
20:52
перед Запрос.CommandType=1; пишешь Сообщить(Запрос.CommandText);
исполняешь в режиме предприятия
получаешь листинг запроса собранного
и в аналайзере смотри где грабли
2 recovery_man
 
14.11.09
22:46
Cap_1977 псб как то не догодался.
3 recovery_man
 
14.11.09
23:00
Получилось это: вроде всё заполнено, где копать незнаю всё равно ! :(
declare @id integer
set @id=(select top 1 id from openquery(WCOFFERS,'parts') where zrem='План-сменка Н-00004215 (14.11.2009)')
if @id is null
begin
   set @id=(select top 1 new_id from openquery(WCOFFERS,'select gen_id(parts_id,1) as new_id from rdb$database'))
   insert into openquery(WCOFFERS,'parts')
   values(@id,null,'',cast('20091114' as datetime),'План-сменка Н-00004215 (14.11.2009)',null,null,null,null)
   update openquery(WCOFFERS,'select * from offers where id in (48889,48956,48734,48683,49093,48997,47962,48911,48965,49039,49041,48760,49034,48976,49075,48910 ) and (partid is null or partid=0)') set partid=@id
end
4 recovery_man
 
16.11.09
17:00
ау читает кто нить форум?
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.