Имя: Пароль:
1C
Админ
SQLite (LiteX) и 1Cv8.2
0 Cr5
 
16.03.11
19:51
Помогите решить вопрос с кодировкой...

Исходник функции по загрузке данных в файл *.db ниже.

Попытка    
      СтрокаПодключения="E:\!C_Bases_8.2\SQLite\1sprdb.db";
      Connection = Новый ComОбъект("LiteX.LiteConnection");    
  Connection.Path = СтрокаПодключения;
  Connection.Open();
  Connection.Execute("PRAGMA encoding='UTF-8'");
       
  Connection.BatchExecute( "CREATE TABLE IF NOT EXISTS spr_klient(fk_key integer, descr varChar(100)); CREATE INDEX IF NOT EXISTS x_pk_x_kl ON spr_klient(fk_key)");
       
  Connection.Execute("DELETE FROM spr_klient");
       
  Счётчик = 0;
  Пока Выборка.Следующий() Цикл        
          Connection.Execute( "INSERT INTO spr_klient(fk_key, descr) VALUES ('"+Строка(Выборка.Код)+"','"+Выборка.Наименование+"')");
      Счётчик = Счётчик+1;
      Состояние(СокрЛП(Строка(Выборка.Наименование)));        
  КонецЦикла;        
   
      Connection.Close();
  Сообщить("Экспорт прошел успешно!
  |Выгружено элементов: "+Счётчик);    
Исключение
  Сообщить(ОписаниеОшибки());
КонецПопытки;

В строку Connection.Execute("PRAGMA encoding='UTF-8'"); не ругается только на УТФ-8 и УТФ-16

Суть вопроса - в таблице иероглифами Наименование, как быть и что делать?
1 Amra
 
16.03.11
19:57
Convert('"+Выборка.Наименование+"' using utf8)
2 Cr5
 
16.03.11
20:19
Connection.Execute( "INSERT INTO spr_klient(fk_key, descr) VALUES ('"+Строка(Выборка.Код)+"', Convert('"+Выборка.Наименование+"' using utf8))");

Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (LiteX.LiteStatement.1): near "using": syntax error
3 shuhard
 
16.03.11
20:23
(2) значит CAST, а не Convert
http://www.sqlite.org/lang_expr.html
4 Amra
 
16.03.11
20:25
Проверь, чему равно "INSERT INTO spr_klient(fk_key, descr) VALUES ('"+Строка(Выборка.Код)+"', Convert('"+Выборка.Наименование+"' using utf8))" в момент выполнения?
5 Amra
 
16.03.11
20:26
(3) У мя конверт в такой ситуации уже год крутится по три раза на дню. Есть подозрение, что есть одиночные ковычки в наименовании
6 Cr5
 
16.03.11
20:33
В момент выполнения INSERT INTO spr_klient(fk_key, descr) VALUES ('"+Строка(Выборка.Код)+"', Convert('"+Выборка.Наименование+"' using utf8))

Ошибка при вызове метода контекста (Execute)
7 Cr5
 
16.03.11
20:38
кавычек тоже не обнаружено
8 Cr5
 
16.03.11
20:41
и CAST ругается на тоже самое
9 Amra
 
16.03.11
20:42
(6) Да блин, отладчиком остановись в этой строке, и перед ее исполнением проверь, чему равна команда целиком
10 Cr5
 
16.03.11
20:44
я так и сделал!!!
вот результат в табло "Ошибка при вызове метода контекста (Execute)"
11 shuhard
 
16.03.11
20:45
(8) пора залезть на сайт вендора и изучить язычок
12 Amra
 
16.03.11
20:45
Не Connection.Execute( "INSERT INTO spr_klient(fk_key, descr) VALUES ('"+Строка(Выборка.Код)+"', Convert('"+Выборка.Наименование+"' using utf8))") , а  "INSERT INTO spr_klient(fk_key, descr) VALUES ('"+Строка(Выборка.Код)+"', Convert('"+Выборка.Наименование+"' using utf8))"
13 Cr5
 
16.03.11
20:49
Ответ отладчика - тип Строка:
INSERT INTO spr_tovar(fk_key, descr) VALUES ('2000000293271',Convert('Труба 0,5м ф115 0,8мм') using utf8)
14 Amra
 
16.03.11
20:53
Скобка перед using лишняя, а вот после utf8 их должно быть две
15 БибиГон
 
16.03.11
20:53
скобка лишняя чтоли закрывающая.
16 Cr5
 
16.03.11
20:59
Результат отладчика после того как убрал лишнюю скобку - INSERT INTO spr_tovar(fk_key, descr) VALUES ('2000000293271',Convert('Труба 0,5м ф115 0,8мм' using utf8))


все равно ругается...
17 Cr5
 
16.03.11
21:01
пробовал и так - INSERT INTO spr_tovar(fk_key, descr) VALUES ('2000000293271',Convert('Труба 0,5м ф115 0,8мм') using utf8)
18 Amra
 
16.03.11
21:05
Бредовая идея, конечно, но убери запятые в наименовании
19 Cr5
 
16.03.11
21:10
Результат отладчика -
INSERT INTO spr_tovar(fk_key, descr) VALUES ('2000000293271',Convert('Труба 0 5м ф115 0 8мм' USING 'utf8'))

{ВнешняяОбработка.ТОВыгрузкаЗагрузкаТСДIntermecCK31.МодульОбъекта(79)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (LiteX.LiteStatement.1): near "USING": syntax error
20 Cr5
 
16.03.11
21:12
может проблема в файле "E:\!C_Bases_8.2\SQLite\1sprdb.db" он не привязан не к чему... он после загрузки должен передаваться в терминал сбора данных для последующего считывания наименования номенклатуры по штрихкоду
21 БибиГон
 
16.03.11
21:21
попробуй вставлять частями, т.е. запиши только одно поле и смотри результат. К какому придерется.
вот так
INSERT INTO spr_tovar(fk_key) VALUES ('2000000293271') using utf8)

INSERT INTO spr_tovar(descr) VALUES (Convert('Труба 0,5м ф115 0,8мм') using utf8)
22 Cr5
 
16.03.11
21:43
ему не нравиться using на него ругается "Произошла исключительная ситуация (LiteX.LiteStatement.1): near "using": syntax error"
23 orefkov
 
17.03.11
01:03
(0)
Сколько не пользовался SQLite, никогда не было проблем с кодировкой. Чем проверяешь, что в табличке иероглифы?
24 Cr5
 
17.03.11
12:38
Проверяю SQLite Maestro и на Терминале сбора данных при считывании штрих-кода номенклатура тоже иероглифами
25 orefkov
 
17.03.11
22:58
(24)
Попробуй вместо LiteX юзать - dhRichClient3 http://www.thecommon.net/3.html
По крайней мере я ей из восьмерки работаю с sqlite базой, проблем не было.
Независимо от того, куда вы едете — это в гору и против ветра!