|
v7: sqlite: запрос по подчин. спр. | ☑ | ||
---|---|---|---|---|
0
furia
15.03.14
✎
10:50
|
Привет. помоги разобраться с запросом через sqlite. первый мой опыт.
вот запросик. апрос = глБазаДанных.НовыйЗапрос(); Запрос.ВыполнитьЗапрос("PRAGMA journal_mode = OFF"); ТекстЗапроса = " |SELECT | code, | Серия.ДатаВыдачи |FROM | [Справочник.Серия] as Серия |WHERE //| Серия.ДатаВыдачи between @НачДата and @КонДата | (Серия.ДатаВыдачи >= @НачДата) and (Серия.ДатаВыдачи <= @КонДата) |GROUP BY | code |"; Запрос.Отладка(1); Запрос.Подготовить(ТекстЗапроса); Попытка Запрос.УстановитьПараметр("@НачДата", Дата1); Запрос.УстановитьПараметр("@КонДата", Дата2); тз2 = Запрос.ВыполнитьЗапрос(ТекстЗапроса); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; запрос получается пустой. понятно что проблема в where. я хочу отобрать элементы справочника за указанный период по реквизиту "ДатаВыдачи", без where нормально работает... |
|||
1
Mikeware
15.03.14
✎
10:55
|
И на синтаксис не ругается? :-)
|
|||
2
Mikeware
15.03.14
✎
10:56
|
хотя с sqlite я не сталкивался, но разве там не нужно показывать метапарсеру, какие поля надо разыменовывать?
|
|||
3
furia
15.03.14
✎
10:56
|
нет... :( вот что отладка дает.:
SELECT code, Серия.ДатаВыдачи as [ДатаВыдачи :Дата] FROM [Справочник.Серия] as Серия WHERE (Серия.ДатаВыдачи >= @НачДата) and (Серия.ДатаВыдачи <= @КонДата) GROUP BY code Подбор индекса для таблицы SC12044: Ограничения: SP12039[ДатаВыдачи]>=; SP12039[ДатаВыдачи]<=; Упорядочить: CODE, В кэше не найдено Выбран индекс CODE: UPPER(CODE) Попадает в сортировку Стоимость: 24 |
|||
4
furia
15.03.14
✎
10:57
|
через DBFNavigator смотрю табличку, там все есть...
|
|||
5
furia
15.03.14
✎
10:57
|
+(0) апрос = Запрос
|
|||
6
Mikeware
15.03.14
✎
10:58
|
поставь отладку после установки параметров
|
|||
7
furia
15.03.14
✎
11:00
|
тоже самое. что и в (3)
|
|||
8
Mikeware
15.03.14
✎
11:02
|
(7) параметры в запросе появились?
|
|||
9
furia
15.03.14
✎
11:03
|
SELECT
code, Серия.ДатаВыдачи as [ДатаВыдачи :Дата] FROM [Справочник.Серия] as Серия WHERE Серия.ДатаВыдачи between @НачДата and @КонДата GROUP BY code |
|||
10
furia
15.03.14
✎
11:19
|
а есть ограничение на количество элементов у sqlite, например если элементов справочника больше 10млн ?
|
|||
11
Salimbek
15.03.14
✎
13:18
|
(10) Нет, с чего бы...
|
|||
12
Salimbek
15.03.14
✎
13:19
|
Может даты у тебя как-то неправильно разруливаются...
|
|||
13
furia
15.03.14
✎
13:27
|
(12) в смысле ? в BDFNavigatore отображаются как ДДММГГГГ. может кто подкинуть то же самое только под 1с++... ? может там запуститься
|
|||
14
furia
15.03.14
✎
13:29
|
или у них синтаксис один ?
|
|||
15
Salimbek
15.03.14
✎
22:55
|
Попробуй так:
Запрос.УстановитьПараметр("НачДата", Дата1); Запрос.УстановитьПараметр("КонДата", Дата2); |
|||
16
Aleksey
15.03.14
✎
23:07
|
а что значит "@" в запросе? Разве там не : должно быть?
|
|||
17
Aleksey
15.03.14
✎
23:08
|
типа
Where (Серия.ДатаВыдачи between :НачДата and :КонДата) |
|||
18
furia
16.03.14
✎
06:58
|
(15), (17) вот такая ошибка...
Ошибка подстановки текстового параметра НачДата - Неизвестный параметр :( я гуглил по форуму, в этой темке у парня вроде все получилось: 1SQLite: Условие на дату в справочнике почему не взлетает у меня, не знаю :( Версия sqlite 1.0.24 Хелп плз....... |
|||
19
Vinianel
16.03.14
✎
10:14
|
(17) Если делать так, то надо:
Запрос.Подставлять("НачДата", Дата1); Запрос.Подставлять("КонДата", Дата2); Запрос.Подготовить(ТекстЗапроса); |
|||
20
furia
16.03.14
✎
13:50
|
(19) а так пишет, что запрос не подготовлен :(
Ёпрст хелп плз, оплачу :) |
|||
21
Salimbek
16.03.14
✎
15:33
|
(20) так работает:
БД = СоздатьОбъект("SQLiteBase"); БД.Открыть(":memory:"); склЗапрос = БД.НовыйЗапрос(); ТекстЗапроса = " |Select * FROM ["+СокрЛП(мтТаблица)+"] WHERE "+СокрЛП(мтПоле)+" between :НачДата AND :КонДата"; склЗапрос.Подставлять("НачДата", НачДата); склЗапрос.Подставлять("КонДата", КонДата); ТЗ = склЗапрос.ВыполнитьЗапрос(ТекстЗапроса); ТЗ.ВыбратьСтроку(); |
|||
22
orefkov
16.03.14
✎
15:37
|
(0)
Исправь тз2 = Запрос.ВыполнитьЗапрос(ТекстЗапроса); на тз2 = Запрос.Выполнить(); А то ты подготовленный запрос сбрасываешь. |
|||
23
orefkov
16.03.14
✎
15:39
|
(0)
По полю ДатаВыдачи есть сортировка или отбор? Тогда лучше group by code убрать, не тот индекс берет. |
|||
26
furia
16.03.14
✎
15:42
|
(23) нет нету, я это знаю. сейчас все по (22) отработало. Большое спасибо за sqlite и за помощь! куда слать благодарности ?
|
|||
27
furia
16.03.14
✎
15:42
|
желательно qiwi )
|
|||
28
orefkov
16.03.14
✎
16:08
|
(27)
Есть ЯД - 410011016100902 |
|||
29
orefkov
16.03.14
✎
19:13
|
+(28)
И вам спасибо :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |