Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Загрузка во временную таблицу (число прочтений - 2035 )
Foma
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 61
Зарегистрирован: 16. Сентября 2010
Загрузка во временную таблицу
26. Сентября 2011 :: 07:36
Печать  
Помогите кто знает, не могу найти поиском.

есть ТаблицаЗначений, нужно выгрузить её в какую-то временную для последующего запроса по ней

какой объект использовать? ODBCRecordset?
можете объяснить на пальцах?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Загрузка во временную таблицу
Ответ #1 - 26. Сентября 2011 :: 07:50
Печать  
1. Создаешь временную таблицу
2. создаешь объект
rc = СоздатьОбъект("ODBCRecordSet");
3. Пишешь оператор insert
ТекстЗапроса = "insert into #<tmp_tabl> values(...)";
4.Выполняешь запрос из 3
rc.ВыполнитьСкалярный(ТекстЗапроса);
3.4 повторяешь сколько строк надо добавить во временную таблицу.
  
Наверх
 
IP записан
 
Foma
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 61
Зарегистрирован: 16. Сентября 2010
Re: Загрузка во временную таблицу
Ответ #2 - 26. Сентября 2011 :: 07:56
Печать  
Как создать временную таблицу?

А можно ли загрузить во временную таблицу всё ТЗ за один раз? Просто кол-во строк измеряется сотнями тысяч...

Используется SQL server 2008R2
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Загрузка во временную таблицу
Ответ #3 - 26. Сентября 2011 :: 08:31
Печать  
Foma писал(а) 26. Сентября 2011 :: 07:56:
Как создать временную таблицу?

А можно ли загрузить во временную таблицу всё ТЗ за один раз? Просто кол-во строк измеряется сотнями тысяч...

Используется SQL server 2008R2

можно или используй параметризированный запрос из ТЗ

или используй то что для sql2008  в одном операторе insert
можно вставить сразу несколько строк.

как это будет работать для сотен тысяч трудно сказать.

чтобы ответить еще конкретнее надо полностью знать задачу.


  
Наверх
 
IP записан
 
Foma
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 61
Зарегистрирован: 16. Сентября 2010
Re: Загрузка во временную таблицу
Ответ #4 - 26. Сентября 2011 :: 09:03
Печать  
Если задача полностью, то так (убирая несущественные детали):

Есть ТаблицаЗначений с именем ТЗ с кол-вом строк более 500000
В этой таблице есть колонки "Кол", "Цена", "Сумма"

нужно, чтобы в колонке "Сумма" = "Кол" * "Цена"

я думал выгрузить ТЗ во временную таблицу и к ней сделать select

может быть как-то по-другому

PS отчет старый и не мой, есть вариант переписать его, но это, если выборка из временной не сработает
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Загрузка во временную таблицу
Ответ #5 - 26. Сентября 2011 :: 13:05
Печать  
Как бы:
1. Эти "много" строк ты откуда получаешь? Может лучше сразу при получении не в ТЗ закидывать, а во временную таблицу?
2. Может сразу при получении очередной строки данных и производить вычисления?
3. Получать данные можно и в ИндексированнуюТаблицу, а затем воспользоваться "ЗаполнитьКолонкуПоАлгоритму" (подробнее тут: http://www.1cpp.ru/bugs/show_bug.cgi?format=multiple&id=3813 )
ну и т.д.
  
Наверх
ICQ  
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Загрузка во временную таблицу
Ответ #6 - 27. Сентября 2011 :: 01:40
Печать  
1. Если это отчет, то что мешает в макете добавить формулу с суммой?
2. Если откуда-то получается ТЗ, то надо смотреть в логику формирования этой ТЗ (повтор мысли из предыдущего поста).
3. ТЗ ж у тебя не напрямую падает в отчет? - явно же построчно выводится. Если так, то чем тебе не нравится вычислять сумму при выводе?
  
Наверх
 
IP записан
 
Foma
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 61
Зарегистрирован: 16. Сентября 2010
Re: Загрузка во временную таблицу
Ответ #7 - 27. Сентября 2011 :: 04:41
Печать  
Да, всё понятно, можно (и нужно) расчитывать вычисляемую колонку в запросе, но это отчет переписывать нужно, чего хотелось бы избежать...
При выводе таблицы не получится, т.к. выводятся не строчки, а агрегированные данные.

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