Переключение на Главную Страницу Страницы: [1] 2 3 ... 5 ОтправитьПечать
Очень популярная тема (более 25 ответов) Запрос из таблицы значений (число прочтений - 12998 )
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Запрос из таблицы значений
03. Февраля 2010 :: 10:15
Печать  
Почему у меня при попытке выполнить
Код
Выбрать все
рс.ВыполнитьSQL_ИзТЗ(ТЗ,100); 


падает 1с? Может быть дело в объеме таблицы (13х22000)?
Пользуюсь процедурой из
http://www.1cpp.ru/forum/YaBB.pl?num=1170322440/.
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Запрос из таблицы значений
Ответ #1 - 09. Февраля 2010 :: 08:25
Печать  
Ну подскажите же мне пожалуйста, где можно поподробнее почитать об этом!
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Запрос из таблицы значений
Ответ #2 - 09. Февраля 2010 :: 09:03
Печать  
Цитата:
Может быть дело в объеме таблицы (13х22000)?
на меньшем размере проверял?

Какая версия ВК?

провел такой тест:
Код
Выбрать все
Процедура Сформировать()
	рс=СоздатьОбъект("ODBCRecordset");
	СтрCreate="create table #tmp1 (/*column_definition*/)";
	СтрInsert="insert into #tmp1 values(/*?*/)";

	ТЗ=СоздатьОбъект("ТаблицаЗначений");
	Для Тек=1 По 13 Цикл
		Если Тек%2=0 Тогда
			ТЗ.НоваяКолонка("Кол"+Тек,"Число",10,2);
			рс.ДобПараметр(1,11,10,2);
			SQL_тип="numeric(10,2)";
		Иначе
			ТЗ.НоваяКолонка("Кол"+Тек,"Строка",10);
			рс.ДобПараметр(1,14,10,0);
			SQL_тип="char(10)";
		КонецЕсли;
		СтрCreate=СтрЗаменить(СтрCreate,"/*,*/",", ");
		СтрCreate=СтрЗаменить(СтрCreate,"/*column_definition*/",("Кол"+Тек)+" "+SQL_тип+"/*,*//*column_definition*/");
		СтрInsert=СтрЗаменить(СтрInsert,"/*,*/",", ");
		СтрInsert=СтрЗаменить(СтрInsert,"/*?*/","?/*,*//*?*/");
	КонецЦикла;
	ТЗ.КоличествоСтрок(22000);
	ТЗ.Заполнить(12345.23);

	ТекстЗапроса="
	|set nocount on
	|if exists (select * from tempdb..sysobjects where id=object_id('tempdb..#tmp1') and sysstat & 0xf = 3 )
	|  drop table #tmp1;
	|"+СтрCreate+"
	|";
	рс.ВыполнитьИнструкцию(ТекстЗапроса);
	рс.Подготовить(СтрInsert);
	рс.ВыполнитьSQL_ИзТЗ(ТЗ,100);

	Рез=рс.ВыполнитьИнструкцию("select * from #tmp1
	|drop table #tmp1");
	Рез.ВыбратьСтроку(,);
КонецПроцедуры 



все Ок.
проверял на 2.5.0.7 и 3.0.1.26
  

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


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Запрос из таблицы значений
Ответ #3 - 01. Марта 2010 :: 05:37
Печать  
Простите за долгое молчание....
Версия компаненты 3.0.1.26.
Тексты запросов:
Код
Выбрать все
set nocount on
if exists (select * from tempdb..sysobjects where id=object_id('tempdb..#MyTableOsn') and sysstat & 0xf = 3 )
  drop table #MyTableOsn;
create table #MyTableOsn (KOD char(9), MANAGER char(25), CITY char(20), POST char(9), SROK numeric(3,0), ABC char(9), XYZ char(9), OST numeric(15,3),
DIN numeric(15,4), SZ numeric(15,2), RN numeric(15,0), MIN numeric(15,3), MAX numeric(15,3), DATE datetime, DOP numeric(15,2)/*,*//*column_definition*/)
set nocount off

******************************************************************
insert into #MyTableOsn values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?/*,*//*?*/) 

  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Запрос из таблицы значений
Ответ #4 - 01. Марта 2010 :: 05:38
Печать  
trad писал(а) 09. Февраля 2010 :: 09:03:
Цитата:
Может быть дело в объеме таблицы (13х22000)?
на меньшем размере проверял?


С вашей процедурой работает.
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Запрос из таблицы значений
Ответ #5 - 01. Марта 2010 :: 06:10
Печать  
Всё дело было в названии одной колонки таблицы значений "Date".
Спасибо за помощь!
Теперь с хранения в XBase перелезу на хранение в базе SQL!
Вопрос снят.
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Запрос из таблицы значений
Ответ #6 - 01. Марта 2010 :: 06:53
Печать  
поставь в квадратные скобки
..., [DATE] datetime,...
  

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


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Запрос из таблицы значений
Ответ #7 - 01. Марта 2010 :: 07:08
Печать  
"...[Date] datetime..." - скобки не помогли не получается дату уложить... Печаль
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Запрос из таблицы значений
Ответ #8 - 01. Марта 2010 :: 07:20
Печать  
какие параметры метода ДобПараметр() для поля "дата"?
  

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


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Запрос из таблицы значений
Ответ #9 - 01. Марта 2010 :: 07:21
Печать  
Может быть дело в том, что есть незаполненные значения в ТЗ?
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Запрос из таблицы значений
Ответ #10 - 01. Марта 2010 :: 07:23
Печать  
trad писал(а) 01. Марта 2010 :: 07:20:
какие параметры метода ДобПараметр() для поля "дата"?

рс.ДобПараметр(1,8,0,0);
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Запрос из таблицы значений
Ответ #11 - 01. Марта 2010 :: 07:27
Печать  
рс.ДобПараметр(1,10,8,0);
  

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



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Запрос из таблицы значений
Ответ #12 - 01. Марта 2010 :: 07:49
Печать  
al_zzz писал(а) 01. Марта 2010 :: 07:21:
Может быть дело в том, что есть незаполненные значения в ТЗ?

а вот это проблема для полей с типом datetime
  

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


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Запрос из таблицы значений
Ответ #13 - 01. Марта 2010 :: 07:55
Печать  
trad писал(а) 01. Марта 2010 :: 07:49:
al_zzz писал(а) 01. Марта 2010 :: 07:21:
Может быть дело в том, что есть незаполненные значения в ТЗ?

а вот это проблема для полей с типом datetime

А как она обычно решается?
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Запрос из таблицы значений
Ответ #14 - 01. Марта 2010 :: 07:57
Печать  
trad писал(а) 01. Марта 2010 :: 07:27:
рс.ДобПараметр(1,10,8,0);

рс.ВыполнитьSQL_ИзТЗ(ТЗ,100);
{C:\1SBASES\COPYS\USR36\УЛОЖИТЬ В БАЗУ.ERT(84)}: Произошла ошибка при выполнении запроса.                  
State 22007, native 0, message [Microsoft][ODBC SQL Server Driver]Invalid date format
Это из-за пустых значений?
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 ... 5
ОтправитьПечать