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



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

Код
Выбрать все
База = СоздатьОбъект("ODBCDatabase");
СтрокаПодкл = "driver={SQL Server};server=Wizard;uid=sa;pwd=*;database=Fland1";
База.ПрисоединитьИБ("D:Database\Fland1\","Админ","***",СтрокаПодкл);
//База.ПрисоединитьИБ("\\Dragon\Fland1\","Админ","***",СтрокаПодкл);

рс = СоздатьОбъект("ODBCRecordset");
рс.УстБД(База);
ТекстЗапроса = "-- qryMaker:Отчет1.2007.02.10.17.19.40
|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");
тз = рс.ВыполнитьИнструкцию(ТекстЗапроса);
тз.ВыбратьСтроку(); 



При подключении через сетевой путь время запроса увеличивается в 10 раз за счет База.ПрисоединитьИБ();

Есть смысл пробовать другие варианты (через ОбрМетаСКЛ())?
  
Наверх
ICQ  
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Подключение из DBF-базы к SQL-базе
Ответ #16 - 12. Февраля 2007 :: 13:17
Печать  
Ниасилел
В общем тестируй запрос в родной его базе
Когда он будет рабочим - добавь пару строк: 
Код
Выбрать все
ИБОЛЕ = СоздатьОбъект("ODBCDataBase");
ИБОЛЕ.ПрисоединитьИБ(ПутьКИсточнику, "Робот_ОЛЕ", "*****");

RecordSetOLE = СоздатьОбъект("ODBCRecordSet");
RecordSetOLE.УстБД(ИБОЛЕ);
 


Не замечал что время вырастает значительно, даже если каждый раз конннект делать
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
vivm
Full Member
***
Отсутствует



Сообщений: 159
Местоположение: Новосибирск
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Подключение из DBF-базы к SQL-базе
Ответ #17 - 13. Февраля 2007 :: 03:19
Печать  
В общем сделал для себя следующие практические выводы:
Если критично быстродействие, делаем так:

Если требуется подключиться с локальной базе, можно при открытии отчета подключиться База.ПрисоединитьИБ() (задержка секунда не критична).

Если подключаемся через сетевой путь, отлаживаем запрос в исходной базе, получаем SQL-ый текст запроса через рс.Отладка(1), исходный текст запроса комментируем и вместо него вставляем SQL-ый и наслаждаемся быстродействием.

Всвязи с этим хорошо бы добавить режим рс.Отладка(2) для рекордсета, что бы текст запроса выдавал сразу с символами "|".

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