![]() |
![]() |
![]() |
|
Sqlite и 1с8 | ☑ | ||
---|---|---|---|---|
0
Маленький Вопросик
29.01.10
✎
07:36
|
Народ, очень нужно хранить данные в отдельной внешней таблице от базы... подскажите пожалуйста как организовать доступ к sqlite из 1с8???
Если можно примеры... |
|||
1
Маленький Вопросик
29.01.10
✎
07:56
|
апну тему.. дайте хоть какую-нибудь зацепку
|
|||
2
shuhard
29.01.10
✎
08:06
|
(1) ADODB - кули тут думать
|
|||
3
Маленький Вопросик
29.01.10
✎
08:10
|
(2) есть пример подключения через ADODB????
|
|||
4
shuhard
29.01.10
✎
08:12
|
(3) учу пользоваться поиском на мисте - дорого
|
|||
5
fantomask
29.01.10
✎
08:13
|
(3) Запросиками делаешь запись в БД
СтрокаЗапроса2 = "SELECT u.id, u.login, a.id FROM users_accounts u_a, users u, accounts a WHERE u_a.uid = u.id AND u_a.is_deleted =0 AND u_a.account_id = a.id AND u.login='"+НомерДог+"' ORDER BY login;"; ADOUtils = Новый("AddIn.ADOUtils"); Connection = Новый COMОбъект("ADODB.Connection"); Connection.Open(СтрокаПодключения); Recordset = Connection.Execute(СтрокаЗапроса2); |
|||
6
fantomask
29.01.10
✎
08:13
|
(3)
СтрокаЗапроса2 = "SELECT u.id, u.login, a.id FROM users_accounts u_a, users u, accounts a WHERE u_a.uid = u.id AND u_a.is_deleted =0 AND u_a.account_id = a.id AND u.login='"+НомерДог+"' ORDER BY login;"; ADOUtils = Новый("AddIn.ADOUtils"); Connection = Новый COMОбъект("ADODB.Connection"); Connection.Open(СтрокаПодключения); Recordset = Connection.Execute(СтрокаЗапроса2); |
|||
7
Маленький Вопросик
29.01.10
✎
08:23
|
(6) а можно примерчик СтрокаПодключения???
|
|||
8
fantomask
29.01.10
✎
08:24
|
(7) СтрокаПодключения = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=172.16.110.17;USER = sardor;DATABASE=UTM5;PASSWORD = sardor;OPTION=3;";
|
|||
9
Маленький Вопросик
29.01.10
✎
08:27
|
(8) ругается на ADOUtils = Новый("AddIn.ADOUtils");
|
|||
10
Маленький Вопросик
29.01.10
✎
08:33
|
Тип не определен (AddIn.ADOUtils)
ADOUtils = Новый("AddIn.ADOUtils"); |
|||
11
fantomask
29.01.10
✎
08:37
|
v8: v8: ADODB + MySQL, проблема с обращением к результату
вот почитай там код пользуйся поиском, находится снизу, справа |
|||
12
shuhard
29.01.10
✎
08:38
|
(11)[находится снизу, справа]
справа говоришь забористая травка |
|||
13
Маленький Вопросик
29.01.10
✎
08:44
|
вся пролема в том, что у меня sqlite, а не mysql
подключение к sqlite ведется просто как к файлу СтрокаПодключения="sqldb/1sqlite.db"; |
|||
14
xzorkiix
29.01.10
✎
08:47
|
(0) автор об стену - в чем разница между подключением из "1С" и "не 1С"? учи мать часть! RTFM
|
|||
15
fantomask
29.01.10
✎
08:50
|
(14) +1 знания которых автор сам постигнет запомнит надолго, нежели то что достанется нахаляву!
|
|||
16
Маленький Вопросик
29.01.10
✎
09:00
|
ПутьКБазе="File=""d:\1sqlite.db""; Usr=""""; Pwd="""";";
//V8 = Новый COMОбъект("V8.Application"); V8 = Новый COMОбъект("ADODB.Connection"); Попытка Открытие = V8.Connect(ПутьКБазе); Исключение Сообщить("Соединение не установлено!!!"); Возврат; КонецПопытки; соединение не установлено! |
|||
17
Маленький Вопросик
29.01.10
✎
09:02
|
(14) если ты имеешь ввиду, логин и пароль к базе, то можешь сам убиться об стену, т.к sqlite не требует их.
|
|||
18
fantomask
29.01.10
✎
09:11
|
(16) честно говоря строка подключения это знания, которых ты должен постигнуть сам! Читая другие строки подключения, смотри как подключаются из других программ к этой БД! Гугл тебе в помошь!
|
|||
19
xzorkiix
29.01.10
✎
09:13
|
(17) нет не логин и нет не пароль. Я о сути работы с этой СУБД.
Как то пришлось с ней поработать, все что надо нашел здесь http://www.sqlite.org/docs.html |
|||
20
xzorkiix
29.01.10
✎
09:17
|
к (19) наврал. Тогда я еще 7.7 юзал пользовал вот этот компонент
http://code.google.com/p/sqlite1c/ или его аналог. http://www.google.ru/search?sourceid=chrome&ie=UTF-8&q=1С+%2B+sqlite |
|||
21
orefkov
29.01.10
✎
09:26
|
(20)
http://code.google.com/p/sqlite1c/ не будет работать в 8ке, делалась исключительно под 77. Надо искать на форумах 1cpp.ru, проскакивал там в свое время OLE-компонент для работы с sqlite. |
|||
22
Маленький Вопросик
29.01.10
✎
09:29
|
(21) 1cpp.ru - только для 77 вроде.
|
|||
23
orefkov
29.01.10
✎
10:00
|
Вот нашел в
http://www.1cpp.ru/forum/YaBB.pl?num=1187844655/4#4 "LiteX это Com объект обертка над Sqlite API. весь объект с описанием и ссылкой на скачивание находятся здесь http://roed.republika.pl/litex/automation.html Скачиваем расспаковываем, регистрируем regsvr32 <путь>sqlite3.dll Если после этого в 1с программа не жалуется на oDb = СоздатьОбект("LiteX.LiteConnection"); то все установка LiteX завершена и можно использовать его на языке 1с. LiteX внутри себя содержит весь sqlite и пользоваться бд sqlite можно используя методы и свойства LiteX." Так как это COM - объект, юзать можно и в 77 и в 8х. |
|||
24
Маленький Вопросик
29.01.10
✎
12:25
|
(23) ага, где бы его еще скачать? :)
|
|||
25
Megas
29.01.10
✎
12:33
|
Эх !!!
ТекстШапка = " | select | aviro_orders.id, | aviro_orders.1c_id, | aviro_orders.date, | aviro_orders.client_id, | aviro_orders.comment, | aviro_orders.status, | | aviro_order_data.od_id, | aviro_order_data.od_order_id, | aviro_order_data.od_name, | aviro_order_data.od_value | | | from | | aviro_orders as aviro_orders | | Left join aviro_order_data | on aviro_orders.id = aviro_order_data.od_order_id | |where | (aviro_orders.id = "+ Формат(Число(СокрЛп(id_aviro)),"ЧДЦ=0; ЧН=0; ЧГ=") +")"; ТаблицаШапкаЗаказа = Обработка_Прямой_запрос_к_aviro_ru(ТекстШапка); Функция Обработка_Прямой_запрос(п_Текст) л_Параметры_соединения = "DRIVER={MySQL ODBC 5.1 Driver};OPTION=3;DATABASE=MYSQLDATABASENAME;PWD=PASSSSSS;PORT=3306;SERVER=127.0.0.1;UID=LOGIN"; гл_Соединение_av = Новый COMОбъект("ADODB.Connection"); Попытка гл_Соединение_av.Open(л_Параметры_соединения); Исключение Сообщить("Отсутствует связь с базой AVIRO!"); КонецПопытки; //} л_ТЗ = Новый ТаблицаЗначений; Если (гл_Соединение_av.State = 0) Тогда л_Параметры_соединения = "DRIVER={MySQL ODBC 5.1 Driver};OPTION=3;DATABASE=MYSQLDATABASENAME;PWD=PASSSSSS;PORT=3306;SERVER=127.0.0.1;UID=LOGIN"; гл_Соединение_av = Новый COMОбъект("ADODB.Connection"); Попытка гл_Соединение_av.Open(л_Параметры_соединения); Исключение Сообщить("Отсутствует связь с базой!"); Возврат(л_ТЗ); КонецПопытки; КонецЕсли; л_Команда = Новый COMОбъект("ADODB.Command"); л_Команда.ActiveConnection = гл_Соединение_av; л_Команда.CommandText = п_Текст; л_Команда.CommandType = 1; л_Набор_записей = Новый COMОбъект("ADODB.Recordset"); л_Набор_записей.CursorType = 3; Попытка л_Набор_записей = л_Команда.Execute("USE "); Исключение Сообщить(ОписаниеОшибки()); Возврат(л_ТЗ) Конецпопытки; л_Число_колонок = л_Набор_записей.Fields.Count - 1; Если (л_Число_колонок > 0) Тогда Для Ф = 0 По л_Число_колонок Цикл л_Колонка_добавлена = Ложь; л_Префикс = ""; л_сч = 0; Пока (л_Колонка_добавлена = Ложь) Цикл Попытка л_ТЗ.Колонки.Добавить(л_Префикс + л_Набор_записей.Fields(Ф).Name); л_Колонка_добавлена = Истина; Исключение Если (л_сч = 0) Тогда л_сч = л_сч + 1; л_Префикс = "_"; Иначе л_Префикс = "_" + л_сч + "_"; л_сч = л_сч + 1; КонецЕсли; КонецПопытки; КонецЦикла; КонецЦикла; Если (л_Набор_записей.EOF() = Истина) И (л_Набор_записей.BOF() = Истина) Тогда Иначе л_Набор_записей.MoveFirst(); Пока (л_Набор_записей.EOF() = 0) Цикл л_стр = л_ТЗ.Добавить(); Для Ф = 0 По л_Число_колонок Цикл л_стр[Ф] = л_Набор_записей.Fields(Ф).Value; КонецЦикла; л_Набор_записей.MoveNext(); КонецЦикла; КонецЕсли; КонецЕсли; Попытка л_Набор_записей.Close(); Исключение КонецПопытки; гл_Соединение_av.Close(); гл_Соединение_av = неопределено; Возврат(л_ТЗ) КонецФункции |
|||
26
Megas
29.01.10
✎
12:34
|
(25) - Это запрос к MySQL и функция котрая возвращает ТЗ
|
|||
27
Маленький Вопросик
29.01.10
✎
12:53
|
LiteX.LiteConnection - короче с этой штуку надо где-то добыть.... и разбираться, а сегодня пятница...
|
|||
28
Megas
29.01.10
✎
12:55
|
(27) Ставь MySQL и не парься... бесплатная программулина и все её используют!
|
|||
29
Маленький Вопросик
29.01.10
✎
13:34
|
Процедура КнопкаВыполнитьНажатие(Кнопка)
СтрокаПодключения="D:\works_jan\sqldb\aaa2.db"; Connection = Новый ComОбъект("LiteX.LiteConnection"); Connection.Open(СтрокаПодключения); СтрокаЗапроса2 = "INSERT INTO mytable (name, surname) VALUES (""YAHHOO!!!!"",""HELOW!!!!"");"; Recordset = Connection.Execute(СтрокаЗапроса2); КонецПроцедуры ПОЛУЧИЛОСЬ!!!!! Яхуууу..... |
|||
30
Маленький Вопросик
29.01.10
✎
13:37
|
А теперь как получить массив из Recordset???? Кто-нить подскажет???
|
|||
31
orefkov
29.01.10
✎
14:08
|
(30)
Ну, конкретно с LiteX не работал, но думаю примерно так - выполнить запрос, потом перебирать все записи, получать поля. Как-то так... К LiteX доки то есть с примерами? |
|||
32
Маленький Вопросик
29.01.10
✎
14:13
|
(31) ага... я это знаю... только примеров не нашел и синтаксис мне как-то не очень:
вот например вывод Сообщить(Recordset): COMSafeArray - массив, только как его разложить??? |
|||
33
orefkov
29.01.10
✎
14:19
|
(32)
Я в 8ке не силен, но тут товарищи с мест говорят, что в 8ке COMSafeArray - штатный тип и описан в документации. Также наверное можно в отладчике глянуть свойства/методы. |
|||
34
Маленький Вопросик
29.01.10
✎
14:32
|
(33) да спасибо.. все нашел...
|
|||
35
Маленький Вопросик
29.01.10
✎
14:32
|
+теперь можно неограниченно применять это...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |