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



Сообщений: 163
Зарегистрирован: 24. Марта 2008
Re: Не работает отбор в запросе 1sqlite
Ответ #15 - 26. Марта 2014 :: 05:15
Печать  
Вот что выдает отладка:

Select
Ном.code,
id [Объект :Справочник.Номенклатура],
Ном.Производитель [Производитель $Справочник.Производители]
From
Справочник_Номенклатура Ном;

WHERE (Ном.Производитель IN (SELECT val FROM Спс));
Подбор индекса для таблицы SC84:
     Ограничения:
     Найдено в кэше
     Индекс не выбран.
     Стоимость: 9986

Увидев текст "Индекс не выбран" - я вспомнил, что у поля "Производитель" - не включена галка "Отбор по реквизиту" и включил его, но это не помогло - и содержание ТЗ не изменилось и текст отладки тоже.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Не работает отбор в запросе 1sqlite
Ответ #16 - 26. Марта 2014 :: 05:41
Печать  
Да пилять... Ты копи-пасте умеешь пользоваться ????
В моём тексте запроса нет точек с запятыми...
  
Наверх
 
IP записан
 
ildary
Full Member
***
Отсутствует



Сообщений: 163
Зарегистрирован: 24. Марта 2008
Re: Не работает отбор в запросе 1sqlite
Ответ #17 - 26. Марта 2014 :: 05:53
Печать  
Прошу прощения, был кругом не прав. Ваш пример работает, а я дурак.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Не работает отбор в запросе 1sqlite
Ответ #18 - 26. Марта 2014 :: 06:04
Печать  
Просто, я тебе об ентом еще выше писал, ";" используется для разделения запросов в пакете.. Тут sqlite много прощает ошибок в синтаксисе, по сравнению с обычным t-sql... вот и тупо игнорит твой второй запрос, который не с селекта начинается опосля твоей ";"
Как-то так Подмигивание
  
Наверх
 
IP записан
 
ildary
Full Member
***
Отсутствует



Сообщений: 163
Зарегистрирован: 24. Марта 2008
Re: Не работает отбор в запросе 1sqlite
Ответ #19 - 26. Марта 2014 :: 07:11
Печать  
И в заключение хотелось бы спросить - какую версию 1sqlite лучше всего использовать? Сейчас стоит 1.0.2.3, читал что 1.0.2.6 - нестабильный.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Не работает отбор в запросе 1sqlite
Ответ #20 - 26. Марта 2014 :: 07:40
Печать  
Всё , что выше  1.0.2.4 не рабочее...
Проверить просто, простейшим селектом.
ЗЫ: хотя,  1.0.2.6 и шустрее работает, я остался на  1.0.2.4
  
Наверх
 
IP записан
 
PVL
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 20
Местоположение: г.Томск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Не работает отбор в запросе 1sqlite
Ответ #21 - 14. Августа 2016 :: 06:44
Печать  
Eprst писал(а) 25. Марта 2014 :: 08:47:
Код
Выбрать все
Процедура Сформировать()
	ВыбПроизводитель = СоздатьОбъект("Справочник.Производители");
	Если ВыбПроизводитель.НайтиПоКоду("0021") =1 Тогда
		Спс = СоздатьОбъект("СписокЗначений");
		Спс.ДобавитьЗначение(ВыбПроизводитель.ТекущийЭлемент());
	Иначе
		Предупреждение("Пнх, Альфредо!");
		Возврат;
	КонецЕсли;
	ТекстЗапроса="
	|Select
	| Ном.code,
	| Ном.Descr,
	| id [Объект :Справочник.Номенклатура],
	| Ном.Производитель [Производитель :Справочник.Производители]
	|From
	| [Справочник.Номенклатура] Ном
	|WHERE (Ном.Производитель IN (SELECT val FROM Спс))";

	База = СоздатьОбъект( "SQLiteBase" );
	база.Открыть(":memory:"); // Откроем пустую базу данных в памяти
	запрос = база.НовыйЗапрос();
	запрос.ВыполнитьЗапрос("PRAGMA journal_mode = WAL");
	база.УложитьОбъекты(Спс,"Спс",0,"Производители");
	ТЗ = Запрос.ВыполнитьЗапрос(ТекстЗапроса);
	ТЗ.ВыбратьСтроку();
КонецПроцедуры 




Подниму эту тему ещё раз..
Столкнулся с проблемой что УложитьОбъекты не отрабатывает: "SELECT val FROM Спс" возвращает пустую таблицу, запрос без этой части отрабатывает. Что я делаю не так??? Для теста полностью скопировал этот запрос, только реквизиты поменял на свои. Вот текст запроса:
Код
Выбрать все
	ТекстЗапроса="
	|Select
	| code,
	| Descr,
	| id [Объект :Справочник.Товары]
	//| Ном.Производитель [Производитель :Справочник.Производители]
	|From Товары
	//|LIMIT 100";
	|WHERE (ID IN (SELECT val FROM Спс))";

	База = СоздатьОбъект( "SQLiteBase" );
	база.Открыть(":memory:"); // Откроем пустую базу данных в памяти
	запрос = база.НовыйЗапрос();
	запрос.ВыполнитьЗапрос("PRAGMA journal_mode = WAL");
	запрос.ВыполнитьЗапрос("create virtual table Товары using dbeng(Справочник.Товары)");

	база.УложитьОбъекты(ВыбТовары,"Спс",0,"Товары");
	ТЗ = Запрос.ВыполнитьЗапрос(ТекстЗапроса); //"SELECT val FROM Спс"); //ТекстЗапроса);
	ТЗ.ВыбратьСтроку();
 


1SQLite - 1.0.2.6, База ДБФ 7.7 ВыбТовары - элемент диалога на форме, выбираю группу, ожидалось что в отбор попадут элементы группы.
« Последняя редакция: 14. Августа 2016 :: 08:09 - PVL »  
Наверх
 
IP записан
 
PVL
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 20
Местоположение: г.Томск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Не работает отбор в запросе 1sqlite
Ответ #22 - 15. Августа 2016 :: 10:21
Печать  
Может из-за этого: http://www.forum.mista.ru/topic.php?id=550161

orefkov
14 - 18.05.11 - 14:14
(13)
Усе понятно.
Для разворота справочника по группам 1sqlite использует 2ой по порядку индекс, полагая, что он
PARENTID,ISFOLDER,...
А тут в начале индекса добавляется еще поле PARENTEXT.

Попробовал взять другой справочник - работает..
Справочник.Товары используется через владельца (константа).
Что-то автор разработки в теме из предыдущего поста не указал в какой версии это пофиксил, и сделал ли..
Придётся ручками делать..  Нерешительный  Плачущий
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать