Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Несколько запросов в одну ТЗ (число прочтений - 2953 )
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Несколько запросов в одну ТЗ
30. Ноября 2007 :: 10:53
Печать  
Нужно результаты нескольких запросов поместить в ТЗ, почитал доку вроде у метода ODBCRecordSet :: ВыполнитьИнструкцию / ExecuteStatement есть параметр, который управляет очищать ТЗ перед загрузкой результата запроса в ТЗ или нет, сделал простой тест, так не то что не очищает, даже запрос не выгружается в ТЗ, что то я не понял в этом методе, а ?

Код
Выбрать все
	ТЗ = СоздатьОбъект("ТаблицаЗначений");
	RS = СоздатьОбъект("ODBCRecordSet");
	N1 = "
	|select TOP 1
	|	*
	|from $Регистр.Реклама as Рег (NOLOCK)
	|order by Рег.DATE_TIME_IDDOC ASC";

	N2 = "
	|select TOP 1
	|	*
	|from $Регистр.Реклама as Рег (NOLOCK)
	|order by Рег.DATE_TIME_IDDOC DESC";

	RS.ВыполнитьИнструкцию(N1,ТЗ,0);ТЗ.ВыбратьСтроку(,ТЗ.КоличествоСтрок(),);
	RS.ВыполнитьИнструкцию(N2,ТЗ,0);ТЗ.ВыбратьСтроку(,ТЗ.КоличествоСтрок(),);
 

  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Несколько запросов в одну ТЗ
Ответ #1 - 30. Ноября 2007 :: 11:30
Печать  
Не пользовался таким Улыбка
Я бы тупо заполнил одну другой (предварительно установив кол-во строк) и делу конец
  

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


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Несколько запросов в одну ТЗ
Ответ #2 - 30. Ноября 2007 :: 11:41
Печать  
ev-kov писал(а) 30. Ноября 2007 :: 10:53:
Нужно результаты нескольких запросов поместить в ТЗ, почитал доку вроде у метода ODBCRecordSet :: ВыполнитьИнструкцию / ExecuteStatement есть параметр, который управляет очищать ТЗ перед загрузкой результата запроса в ТЗ или нет, сделал простой тест, так не то что не очищает, даже запрос не выгружается в ТЗ, что то я не понял в этом методе, а ?


У меня все правильно работает
Код
Выбрать все
	Запрос = СоздатьОбъект("ODBCRecordSet");
	ТекстЗапроса = "
	|SELECT  top 10
	|  Спр.Code as Код,
	|  Спр.Descr as Наименование
	|FROM
	|  $Справочник.Клиенты  as Спр (nolock)
	|WHERE
	|  Спр.IsFolder = 2 AND
	|  Спр.IsMark = 0";
	ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
	Запрос.ВыполнитьИнструкцию(ТекстЗапроса,ТЗ,0);
	Сообщить("колво строк = " + ТЗ.КоличествоСтрок() );

	ТЗ.ВыбратьСтроку();
 


колво строк = 20
наверное ошибка в 0 , что первый раз надо выполнить
ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса); чтобы сформировалась структуру столбцов или самому создавать столбцы
  
Наверх
 
IP записан
 
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Несколько запросов в одну ТЗ
Ответ #3 - 30. Ноября 2007 :: 11:54
Печать  
Z1 писал(а) 30. Ноября 2007 :: 11:41:
наверное ошибка в 0 , что первый раз надо выполнить
ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса); чтобы сформировалась структуру столбцов или самому создавать столбцы


Так и есть колоноки в ТЗ нужны, спасибо!

Цитата:
Не пользовался таким Улыбка
Я бы тупо заполнил одну другой (предварительно установив кол-во строк) и делу конец

Так и делал всегда, но обратил внимание на параметр и подумал, что это руль ! этим можно пользоваться, код ведь сокращается ... но видно экономии кода не так уж много ....

ЗЫ: Но было бы неплохо, если метод проверял, если ТЗ без структуры или еще лучше, проверка на наличие строк в ТЗ, если их нет, то просто заливала бы весь запрос как в варианте по умолчанию (с очисткой)
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Несколько запросов в одну ТЗ
Ответ #4 - 30. Ноября 2007 :: 12:05
Печать  
ev-kov писал(а) 30. Ноября 2007 :: 11:54:
этим можно пользоваться, код ведь сокращается ... но видно экономии кода не так уж много ....

Этим способом удобно пользоваться если собираешь информацию из разных баз, разными запросами.
  
Наверх
 
IP записан
 
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Несколько запросов в одну ТЗ
Ответ #5 - 30. Ноября 2007 :: 12:13
Печать  
Z1 писал(а) 30. Ноября 2007 :: 12:05:
Этим способом удобно пользоваться если собираешь информацию из разных баз, разными запросами.

Не только, например в цикле выполняется запрос, например параметризованный,  каждый запрос возвращает ТЗ, результат нужно в одну ТЗ. А в одном запросе никак, в принципе можно ... но лепить эти километровые запросы уже надоело - лучше упрощать
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Несколько запросов в одну ТЗ
Ответ #6 - 30. Ноября 2007 :: 12:46
Печать  
а чем не нравится использовать ИндексированнуюТаблицу - там есть замечательный метод
Код
Выбрать все
Объединить() 

  
Наверх
IP записан
 
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Несколько запросов в одну ТЗ
Ответ #7 - 30. Ноября 2007 :: 12:57
Печать  
leshik писал(а) 30. Ноября 2007 :: 12:46:
а чем не нравится использовать ИндексированнуюТаблицу - там есть замечательный метод
Код
Выбрать все
Объединить() 


И это юзал ... но если можно еще короче реализовать то почему бы и нет ?
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Несколько запросов в одну ТЗ
Ответ #8 - 30. Ноября 2007 :: 13:10
Печать  
короче - это написать нормальный запрос, один  Подмигивание
  

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



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Несколько запросов в одну ТЗ
Ответ #9 - 30. Ноября 2007 :: 13:15
Печать  
Цитата:
короче - это написать нормальный запрос, один  Подмигивание

Полная оптимизация не везде нужна, а иногда и вредна даже, гораздо важнее простота и гибкость
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать