|
v7: 1SQLite и прямые запросы | ☑ | ||
---|---|---|---|---|
0
Arti
27.08.20
✎
15:16
|
Всем добрый день. Пытаюсь научиться писать прямые запросы из 7.7, что-то не получается. Пробую так:
Попытка база = СоздатьОбъект("SQLiteBase"); Исключение ЗагрузитьВнешнююКомпоненту("1sqlite.dll"); база = СоздатьОбъект("SQLiteBase"); КонецПопытки; база.Открыть(":memory:"); запрос = база.НовыйЗапрос(); ТЗ = запрос.ВыполнитьЗапрос(" |SELECT | Склад.Descr |FROM | $Справочник.Склады AS Склад"); Пишет "no such table". Попробовал ещё так: ЗагрузитьВнешнююКомпоненту("1CPP.dll"); RS = СоздатьОбъект("ODBCRecordset"); RS.УстБД1С(); ТекстЗапроса = " |SELECT | Спр.Code as Код, | Спр.Descr as Наименование |FROM | $Справочник.Склады as Спр"; ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса); ТЗ.ВыбратьСтроку(); Тоже ругается, уже на ВыбратьСтроку(), так как ТЗ = 0. Куда копать? |
|||
1
Ray Zexter
27.08.20
✎
15:24
|
БазаДанных = СоздатьОбъект("SQLiteBase");
БазаДанных.Открыть(":memory:"); Запрос = БазаДанных.НовыйЗапрос(); Запрос.ВыполнитьЗапрос("create virtual table Склады using dbeng(Справочник.Склады)"); Текст = "SELECT |code Код, |id [Склад :Справочник.Склады] |From Склады "; Попытка ТЗ=Запрос.ВыполнитьЗапрос(Текст); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки |
|||
2
Arti
27.08.20
✎
15:30
|
(1) Большое спасибо, получилось! Только непонятно, мне для каждой таблицы, которая будет в запросе, создавать виртуальную?
|
|||
3
Mikeware
27.08.20
✎
15:33
|
Найди класс ПрямойЗапрос или ПоставщикДанных, и пользуйся ими
|
|||
4
Said_We
27.08.20
✎
15:34
|
(2) SQLite если файловая, то да.
БазаДанных.Открыть(":memory:"); Базу же в памяти создаешь. |
|||
5
Said_We
27.08.20
✎
15:36
|
Не "создаешь", а открываешь. Но не суть....
|
|||
6
Arti
27.08.20
✎
15:37
|
(4) Угу, понял. Для клиент-серверной этого не нужно?
|
|||
7
Said_We
27.08.20
✎
15:39
|
(6) Для клиент-серверного можно не использовать SQLite.
Посмотри в 1С++ компоненту "ПрямойЗапрос" называется. Там в зависимости от БД запрос строится или напрямую к БД и если файловая, то через SQLite. |
|||
8
Mikeware
27.08.20
✎
15:41
|
(6) Для клиент-серверной достаочно 1с++
|
|||
9
Said_We
27.08.20
✎
15:41
|
Текст запроса в 1С будет у тебя одинаковый и работать будет как на файловой версии так и на SQL.
|
|||
10
Mikeware
27.08.20
✎
15:43
|
(7) "ПрямойЗапрос" - не компонента, а класс.
|
|||
11
Sserj
27.08.20
✎
15:44
|
(0) На сколько помню в 1sqlite для автоподключения нужно не $ ставить а через подчеркивание писать:
ТЗ = запрос.ВыполнитьЗапрос(" |SELECT | Склад.Descr |FROM | Справочник_Склады AS Склад") |
|||
12
Said_We
27.08.20
✎
15:48
|
(10) Да. Но не суть важно.
|
|||
13
Mikeware
27.08.20
✎
15:49
|
(12) Просто чувак может начать искать именно _компоненту_...
|
|||
14
Arti
27.08.20
✎
15:58
|
(11) Спасибо, попробую.
|
|||
15
Arti
27.08.20
✎
15:58
|
(13) Да, знаю, что класс, ищу.
|
|||
16
Mikeware
27.08.20
✎
16:03
|
||||
17
Mikeware
27.08.20
✎
16:04
|
||||
18
Arti
27.08.20
✎
16:14
|
А конструктор умные люди не придумали?
|
|||
19
Холст
27.08.20
✎
16:17
|
(2) Нет, виртуальную таблицу отдельно кодом прописывать не обязательно, практически с первыми же обновлениями 1SQLite уважаемый автор Орефков (простите если исказил фамилию) сделал автоподключение виртуальной таблицы
|
|||
20
Arti
27.08.20
✎
16:34
|
Разобрался, получилось выполнить запрос. Жаль только, что нет конструктора, для выполнения задачи придётся то же самое в 8-ке сделать, а потом портировать запрос в 7.7.
|
|||
21
Arti
27.08.20
✎
16:37
|
Решил использовать 1SQLite. Теперь кумекаю, как там временные таблицы создавать.
|
|||
22
Sserj
27.08.20
✎
16:39
|
(21) Не поверишь :)
CREATE TABLE |
|||
23
Arti
27.08.20
✎
17:03
|
(22) Может, TEMPORARY?
(7) Не получилось подключить. |
|||
24
Mikeware
27.08.20
✎
17:16
|
(20) и конструктор есть, и консоль для отладки... В клюшках всё есть...
|
|||
25
Ёпрст
27.08.20
✎
18:19
|
(0)
ТЗ = запрос.ВыполнитьЗапрос(" |SELECT | Склад.Descr |FROM | [Справочник.Склады] Склад"); |
|||
26
Ёпрст
27.08.20
✎
18:20
|
(21)
CREATE TEMP TABLE tmp_docs(d varchar(13) primary key not null) |
|||
27
tgu82
28.08.20
✎
09:17
|
(24) А где есть конструктор и консоль? Где их взять?
|
|||
28
tgu82
28.08.20
✎
09:28
|
(27)+ Нашел где. Теперь бы еще знать зачем :)
|
|||
29
Mikeware
28.08.20
✎
09:29
|
(27) хм. Да много где есть...
http://catalog.mista.ru/public/14933/ http://catalog.mista.ru/public/98982/ |
|||
30
Mikeware
28.08.20
✎
09:31
|
(28) скачал и не знаешь зачем? закачай обратно. а то кому-нибудь не хватит.
|
|||
31
Said_We
28.08.20
✎
10:33
|
(20) Возможностей языка SQL в "ПрямомЗапросе" больше. 1С8 не поддерживает некоторые конструкции. Пиши сразу на SQL, не нужна для этого 8-ка совсем.
|
|||
32
Mikeware
28.08.20
✎
10:37
|
(31) ну как же восьмерочникам без конструктора запросы-то пейсать? :-)
|
|||
33
Ёпрст
28.08.20
✎
10:48
|
И проще найти свою версию на форуме 1cpp..чем на нимфостарте
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |