Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Горячая тема (более 10 ответов) Запрос к dbf-кам с SQL-сервера (число прочтений - 11653 )
DrACe
1c++ donor
1c++ power user
Отсутствует


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

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Запрос к dbf-кам с SQL-сервера
Ответ #15 - 11. Октября 2006 :: 07:21
Печать  
...продолжение мучений...
Код
Выбрать все
	ТекстЗапроса = "
		|SELECT
		|	СпрНоменклатура.Code	AS NomenCode,
		|	СпрСклады.Code			AS SkladCode,
		|	$ОстаткиТМЦ.Количество	AS Qty
		|
		|FROM $Торговля.РегистрИтоги.ОстаткиТМЦ AS ОстаткиТМЦ
		|	LEFT JOIN $Торговля.Справочник.Номенклатура AS СпрНоменклатура ON ($ОстаткиТМЦ.Номенклатура = СпрНоменклатура.ID)
		|	LEFT JOIN $Торговля.Справочник.Склады AS СпрСклады ON ($ОстаткиТМЦ.Склад = СпрСклады.ID)
		|
		|WHERE	(ОстаткиТМЦ.PERIOD= :ВыбПериод~~)
		|	AND ($ОстаткиТМЦ.Количество <> 0)
		|	AND ($ОстаткиТМЦ.Фирма = '     1   ')
		|";

		База = СоздатьОбъект("OLEDBData");
		Соединение = "
			|Provider=VFPOLEDB.1;
			|Deleted=Yes;
			|Data Source=\\Server3\Data\;
			|Mode=ReadWrite;
			|Extended Properties="";
			|User ID="";
			|Password="";
			|Mask Password=False;
			|Collating Sequence=RUSSIAN;
			|DSN=""
			|";
		Рез = База.Соединение(Соединение);
		Запрос = База.СоздатьКоманду();
		Запрос.УстановитьТекстовыйПараметр("ВыбПериод",'01.10.2006');
		Запрос.Отладка(1);
		ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
 


этот "стандартный" один-эс-плюс-плюсовский способ выдает результат на-гора за 3 секунды!!! это круто!  Очень довольный, но теперь такой вопрос - как мне все это запихнуть теперь уже на SQL-сервер?
через запрос вставки, т.е. через ВыполнитьSQL_ИзТЗ? Но это получится дополнительный штрафной круг на клиенте...   Озадачен
  
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


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

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Запрос к dbf-кам с SQL-сервера
Ответ #16 - 11. Октября 2006 :: 07:27
Печать  
...и еще...

создал я еще один linked server, но уже на другом немного провайдере, с немного другой стройкой подключения:
Код
Выбрать все
EXEC  sp_addlinkedserver
	  @server = 'FOX_OLEDB',
	  @provider = 'VFPOLEDB.1',
	  @srvproduct = '',
	  @datasrc ='\\Server3\Data\',
	  @provstr = 'Collating Sequence=RUSSIAN;Deleted=Yes'  


результат - чуть меньше 2 минут, т.е. плохо.  Нерешительный

Вопрос: чем отличаются VFPOLEDB.1, работающий в объекте База = СоздатьОбъект("OLEDBData");
и вроде бы аналогичный провайдер VFPOLEDB.1, но в качестве linked server'a???

Вроде 1С++ умеет таки использовать индексы? И почему их не использует linked server? Со сжатыми губами
  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос к dbf-кам с SQL-сервера
Ответ #17 - 11. Октября 2006 :: 07:31
Печать  
а в директиве provider нельзя укзазать чтобы не OLE было, именно поэтому у тя и тормоз, а, например ADODB...
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


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

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Запрос к dbf-кам с SQL-сервера
Ответ #18 - 11. Октября 2006 :: 07:34
Печать  
Цитата:
а в директиве provider нельзя укзазать чтобы не OLE было, именно поэтому у тя и тормоз, а, например ADODB...

можешь предложить рабочую строку подключения через ADODB?

просто это то, что работает как надо из найденного мною Нерешительный
  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос к dbf-кам с SQL-сервера
Ответ #19 - 11. Октября 2006 :: 07:40
Печать  
DrACe писал(а) 11. Октября 2006 :: 07:34:
Цитата:
а в директиве provider нельзя укзазать чтобы не OLE было, именно поэтому у тя и тормоз, а, например ADODB...

можешь предложить рабочую строку подключения через ADODB?

просто это то, что работает как надо из найденного мною Нерешительный

да вот, почитал MSDN
и как сделать в твоем случае не знаю просто строки подключения вот: http://www.connectionstrings.com/, но почитав http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fox7help/html/d..., вроде бы у тебя по ODBC, но судя по скорости, ты по OLE работаешь... может что то более знающие подскажут, которые в этом больше разбираются?
  

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



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос к dbf-кам с SQL-сервера
Ответ #20 - 11. Октября 2006 :: 07:43
Печать  
может тебе нада просто почитать как не sp_addlinkedserver делать, а просто сделать подключение к любой СУБД через ODBC? например как это из Дельфи, 1С, VB и т.п. делается?
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


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

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Запрос к dbf-кам с SQL-сервера
Ответ #21 - 11. Октября 2006 :: 08:37
Печать  
дело в том, что (читаем тему топика) мне нужно совместить запросы к SQL-серверу и некоей dbf-ной базе, обе они рабочие, т.е. постоянно обновляются и один раз закачать все это на сервак не получится - нужно иметь инструмент для постоянного подключения...

Пока что наиболее адекватный вариант у меня получился такой:
1) Запрос к dbf-ке с помощью объекта 1С++ OLEDBData
2) Закачка результата на SQL-сервер с помощью метода ODBCRecordSet::ВыполнитьSQL_ИзТЗ()
3) Обработка получившейся таблицы на SQL-сервере

как видно п.2 - это дополнительный штрафной круг через клиента и его размеры прямо пропорциональны первому результату... а что делать?.. так и живем... пока Подмигивание

Может у кого есть иной способ решения этой задачи? Буду рад услышать!
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать