Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Подключение из DBF-базы к SQL-базе (число прочтений - 6723 )
vivm
Full Member
***
Отсутствует



Сообщений: 159
Местоположение: Новосибирск
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Подключение из DBF-базы к SQL-базе
12. Февраля 2007 :: 10:20
Печать  
имеется запрос:

[code]База = СоздатьОбъект("ODBCDatabase");
СтрокаПодкл = "driver={SQL Server};server=Wizard;uid=sa;pwd=***;database=Fland1";
Если База.Соединение(СтрокаПодкл)=1 Тогда
     
     рс = СоздатьОбъект("ODBCRecordset");
     //Сообщить("соединение - "+База.ЕстьСоединение());
     рс.УстБД(База);
     //рс.Отладка(1);
     ТекстЗапроса = "
     |SELECT
     |  Заказ.IDDOC ИДЗаказ
     | , $ОстаткиПродукцииИтоги.ТМЦ ИдПродукция
     | , $Заказ.НаименованиеПродукции НаименованиеПродукции
     | , Sum($ОстаткиПродукцииИтоги.Сумма) СуммаСумма
     | , Sum($ОстаткиПродукцииИтоги.Количество) СуммаКоличество
     |FROM $РегистрИтоги.ОстаткиПродукции AS ОстаткиПродукцииИтоги With (NOLOCK)
     |INNER JOIN $Справочник.МестаХранения AS Склад With (NOLOCK) ON $ОстаткиПродукцииИтоги.Склад = Склад.ID
     |INNER JOIN $Документ.Заказ AS Заказ With (NOLOCK) ON $ОстаткиПродукцииИтоги.Заказ = Заказ.IDDOC
     |WHERE
     | (ОстаткиПродукцииИтоги.PERIOD = (Select max(period) from $РегистрИтоги.ОстаткиПродукции))
     | AND ($ОстаткиПродукцииИтоги.Количество > 0)
     | AND (Склад.CODE = :КодСклада)
     |GROUP BY
     | $ОстаткиПродукцииИтоги.ТМЦ
     | , Заказ.IDDOC
     | , $Заказ.НаименованиеПродукции
     |";
     рс.УстановитьТекстовыйПараметр("КодСклада", "c0079");
     тз = рс.ВыполнитьИнструкцию(ТекстЗапроса);
     тз.ВыбратьСтроку();
КонецЕсли;[/code]

Подключаюсь к SQL-базе. Если выполнить запрос из SQL-ой базы, работает, если из DBF-ой базы, выдает ошибку: Meta name parser error: объект не найден "$РегистрИтоги.ОстаткиПродукции"

Где рыть?
  
Наверх
ICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Подключение из DBF-базы к SQL-базе
Ответ #1 - 12. Февраля 2007 :: 10:36
Печать  
в базе, в которой создан объект База = СоздатьОбъект("ODBCDatabase"); есть регистр ОстаткиПродукции?
  
Наверх
 
IP записан
 
vivm
Full Member
***
Отсутствует



Сообщений: 159
Местоположение: Новосибирск
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Подключение из DBF-базы к SQL-базе
Ответ #2 - 12. Февраля 2007 :: 10:39
Печать  
DrACe писал(а) 12. Февраля 2007 :: 10:36:
в базе, в которой создан объект База = СоздатьОбъект("ODBCDatabase"); есть регистр ОстаткиПродукции?


обращение идет к одной и той же базе, но из баз разного типа
  
Наверх
ICQ  
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Подключение из DBF-базы к SQL-базе
Ответ #3 - 12. Февраля 2007 :: 10:40
Печать  
[quote author=vivm link=1171275653/0#0 date=1171275653]Подключаюсь к SQL-базе. Если выполнить запрос из SQL-ой базы, работает, если из DBF-ой базы, выдает ошибку: Meta name parser error: объект не найден "$РегистрИтоги.ОстаткиПродукции"

Где рыть?
[/quote]
нужно еще как бы к тому SQL-ному МД-шнику подключиться, а то как бы ты к базе подключился, а метаимена парсер берет из текущей DBF-базы, а это не есть хорошо...
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
val
Full Member
***
Отсутствует


Дорогу осиливает идущий

Сообщений: 137
Зарегистрирован: 07. Июля 2006
Re: Подключение из DBF-базы к SQL-базе
Ответ #4 - 12. Февраля 2007 :: 11:00
Печать  
(0)
     мДата=СоздатьОбъект("MetaDataWork");
     мДата.ПрисоединитьМД(Путь+"1Cv7.MD");
     Database=СоздатьОбъект("ODBCDatabase");
     Database.ПрисоединитьИБ(Путь);
     глRecordSet=СоздатьОбъект("ODBCRecordSet");
     глRecordSet.УстБД(Database);
  
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Подключение из DBF-базы к SQL-базе
Ответ #5 - 12. Февраля 2007 :: 11:09
Печать  
val писал(а) 12. Февраля 2007 :: 11:00:
(0)
     мДата=СоздатьОбъект("MetaDataWork");
     мДата.ПрисоединитьМД(Путь+"1Cv7.MD");
     Database=СоздатьОбъект("ODBCDatabase");
     Database.ПрисоединитьИБ(Путь);
     глRecordSet=СоздатьОбъект("ODBCRecordSet");
     глRecordSet.УстБД(Database);

у тебя объект мДата=СоздатьОбъект("MetaDataWork"); присоединен к внешней базе, а вот глRecordSet=СоздатьОбъект("ODBCRecordSet"); (точнее его парсер) подключен к текущей базе

используй в запросе пропарсенный текст запроса, полчив его методом

мДата.ОбрМетаСКЛ()
  
Наверх
 
IP записан
 
vivm
Full Member
***
Отсутствует



Сообщений: 159
Местоположение: Новосибирск
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Подключение из DBF-базы к SQL-базе
Ответ #6 - 12. Февраля 2007 :: 11:33
Печать  
Спасибо за участие  Улыбка . Смысл понял. Буду пробовать.

  
Наверх
ICQ  
IP записан
 
val
Full Member
***
Отсутствует


Дорогу осиливает идущий

Сообщений: 137
Зарегистрирован: 07. Июля 2006
Re: Подключение из DBF-базы к SQL-базе
Ответ #7 - 12. Февраля 2007 :: 11:39
Печать  
(5) "а вот глRecordSet=СоздатьОбъект("ODBCRecordSet"); (точнее его парсер) подключен к текущей базе "

Не совсем правильно. Точнее, совсем неправильно. Улыбка
Кусок кода, который я привел - как раз подключение к SQL базе из DBF базы. Базы с совершенно разными конфигурациями. Все работает уже несколько месяцев.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Подключение из DBF-базы к SQL-базе
Ответ #8 - 12. Февраля 2007 :: 11:44
Печать  
DrACe писал(а) 12. Февраля 2007 :: 11:09:
val писал(а) 12. Февраля 2007 :: 11:00:
(0)
     мДата=СоздатьОбъект("MetaDataWork");
     мДата.ПрисоединитьМД(Путь+"1Cv7.MD");
     Database=СоздатьОбъект("ODBCDatabase");
     Database.ПрисоединитьИБ(Путь);
     глRecordSet=СоздатьОбъект("ODBCRecordSet");
     глRecordSet.УстБД(Database);

у тебя объект мДата=СоздатьОбъект("MetaDataWork"); присоединен к внешней базе, а вот глRecordSet=СоздатьОбъект("ODBCRecordSet"); (точнее его парсер) подключен к текущей базе

используй в запросе пропарсенный текст запроса, полчив его методом

мДата.ОбрМетаСКЛ()
никаких ОбрМетаСКЛ в данном случае не нужно. При установке базы присоединенной к другой ИБ (Database.ПрисоединитьИБ(Путь)) в глRecordSet.УстБД(Database), парсер рекордсета автоматически подключается к "другому" МД-шнику.

ps а вот ПрисоединитьМД в этом примере - лишнее
  

1&&2&&3
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Подключение из DBF-базы к SQL-базе
Ответ #9 - 12. Февраля 2007 :: 11:45
Печать  
val писал(а) 12. Февраля 2007 :: 11:39:
(5) "а вот глRecordSet=СоздатьОбъект("ODBCRecordSet"); (точнее его парсер) подключен к текущей базе "

Не совсем правильно. Точнее, совсем неправильно. Улыбка
Кусок кода, который я привел - как раз подключение к SQL базе из DBF базы. Базы с совершенно разными конфигурациями. Все работает уже несколько месяцев.

минус два мне...  Со сжатыми губами
  
Наверх
 
IP записан
 
vivm
Full Member
***
Отсутствует



Сообщений: 159
Местоположение: Новосибирск
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Подключение из DBF-базы к SQL-базе
Ответ #10 - 12. Февраля 2007 :: 11:50
Печать  
trad писал(а) 12. Февраля 2007 :: 11:44:
никаких ОбрМетаСКЛ в данном случае не нужно. При установке базы присоединенной к другой ИБ (Database.ПрисоединитьИБ(Путь)) в глRecordSet.УстБД(Database), парсер рекордсета автоматически подключается к "другому" МД-шнику.

ps а вот ПрисоединитьМД в этом примере - лишнее


Ну а почему запрос из (0) не работает из DBF-ной базы? МД-шник SQL-ой аналогичен МД-шнику из подключаемой базы, а DBF-ой как раз отличается сильно.
  
Наверх
ICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Подключение из DBF-базы к SQL-базе
Ответ #11 - 12. Февраля 2007 :: 11:58
Печать  
vivm писал(а) 12. Февраля 2007 :: 11:50:
Ну а почему запрос из (0) не работает из DBF-ной базы? МД-шник SQL-ой аналогичен МД-шнику из подключаемой базы, а DBF-ой как раз отличается сильно.

Потому, что объект ODBCDatabase никто не присоединял к ИБ
  

1&&2&&3
Наверх
 
IP записан
 
vivm
Full Member
***
Отсутствует



Сообщений: 159
Местоположение: Новосибирск
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Подключение из DBF-базы к SQL-базе
Ответ #12 - 12. Февраля 2007 :: 12:27
Печать  
trad писал(а) 12. Февраля 2007 :: 11:58:
vivm писал(а) 12. Февраля 2007 :: 11:50:
Ну а почему запрос из (0) не работает из DBF-ной базы? МД-шник SQL-ой аналогичен МД-шнику из подключаемой базы, а DBF-ой как раз отличается сильно.

Потому, что объект ODBCDatabase никто не присоединял к ИБ


Понятно. Присоединил, начались тормоза. Открывает результат через секунд 15. Запрос из (0) из SQL-ой базы отрабатывал мгновенно.
  
Наверх
ICQ  
IP записан
 
vivm
Full Member
***
Отсутствует



Сообщений: 159
Местоположение: Новосибирск
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Подключение из DBF-базы к SQL-базе
Ответ #13 - 12. Февраля 2007 :: 12:42
Печать  
Попробовал подключиться с того же сервера через локальный путь, а не сетевой. Стало терпимо - пару секунд. Пожалуй можно на этом остановиться.
  
Наверх
ICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Подключение из DBF-базы к SQL-базе
Ответ #14 - 12. Февраля 2007 :: 12:44
Печать  
vivm писал(а) 12. Февраля 2007 :: 12:27:
Понятно. Присоединил, начались тормоза. Открывает результат через секунд 15. Запрос из (0) из SQL-ой базы отрабатывал мгновенно.

Время выполнение запроса измениться не должно. Некоторое время должно потратиться на загрузку метаданных.
  

1&&2&&3
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать