Пытаюсь обновить записи из 1с в phpmyadmin, но выдает ошибку о не правильном синатаксисе.
Пробовал разными способами, но итог один,подскажите как исправить?
Попытка
Пока Выборка.Следующий() Цикл
ТекЗапись = "UPD ATE Events_Types
|SET
| [Title] = '"+Выборка.Наименование+"',
| [Responsible] = '"+Выборка.Ответственный+"',
| [Creator] = '"+Выборка.Автор+"',
| [Publish] = '"+Число(Выборка.Публиковать)+"',
| [GPT] = '"+Число(Выборка.GPT)+"',
| [Edited] = '"+Число(Выборка.Отредактировано)+"',
| [Printer] ='"+Число(Выборка.Типограф)+"',
| [Verified] = '"+Число(Выборка.Проверено)+"'
| WHERE [ID1C] > 0";
//ТекЗапись = "UPDATE Events_Types SE T (Title = '"+Выборка.Наименование+"', Responsible = '"+Выборка.Ответственный+"', Creator = '"+Выборка.Автор+", Publish = '"+Число(Выборка.Публиковать)+", GPT = '"+Число(Выборка.GPT)+", Edited = '"+Число(Выборка.Отредактировано)+", Printer = '"+Число(Выборка.Типограф)+", Verified = '"+Число(Выборка.Проверено)+" WHERE ID1c > 0)";
КонецЦикла;
Соединение.Execute(ТекЗапись);
Сообщить("Данные обновлены!");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
/////////////////////////////////////////////
{Справочник.ВидСобытия.МодульМенеджера(97)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [MySQL][ODBC 8.0(a) Driver][mysqld-8.0.30]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[Title] = 'Рстория РёРіСЂ',
[Responsible] = '',
[Creator] = '',
[Publi' at line 3
Пробовал разными способами, но итог один,подскажите как исправить?
Попытка
Пока Выборка.Следующий() Цикл
ТекЗапись = "UPD ATE Events_Types
|SET
| [Title] = '"+Выборка.Наименование+"',
| [Responsible] = '"+Выборка.Ответственный+"',
| [Creator] = '"+Выборка.Автор+"',
| [Publish] = '"+Число(Выборка.Публиковать)+"',
| [GPT] = '"+Число(Выборка.GPT)+"',
| [Edited] = '"+Число(Выборка.Отредактировано)+"',
| [Printer] ='"+Число(Выборка.Типограф)+"',
| [Verified] = '"+Число(Выборка.Проверено)+"'
| WHERE [ID1C] > 0";
//ТекЗапись = "UPDATE Events_Types SE T (Title = '"+Выборка.Наименование+"', Responsible = '"+Выборка.Ответственный+"', Creator = '"+Выборка.Автор+", Publish = '"+Число(Выборка.Публиковать)+", GPT = '"+Число(Выборка.GPT)+", Edited = '"+Число(Выборка.Отредактировано)+", Printer = '"+Число(Выборка.Типограф)+", Verified = '"+Число(Выборка.Проверено)+" WHERE ID1c > 0)";
КонецЦикла;
Соединение.Execute(ТекЗапись);
Сообщить("Данные обновлены!");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
/////////////////////////////////////////////
{Справочник.ВидСобытия.МодульМенеджера(97)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [MySQL][ODBC 8.0(a) Driver][mysqld-8.0.30]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[Title] = 'Рстория РёРіСЂ',
[Responsible] = '',
[Creator] = '',
[Publi' at line 3
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)В конфе скорее всего не будет более 1000 записей.
Я только познаю работу с sql из 1с, можете подсказать, что здесь не так и как оптимизировать код?
У меня стоит задача, я сначала добавляю записи в sql у которых idsql = 0, после обновляю записи в sql у которых в 1с idsql > 0 и вытаскивать из sql id для записи в таблицу значений, для дальнейшей работы, чтоб по нему и смотреть, значения idsql
Я только познаю работу с sql из 1с, можете подсказать, что здесь не так и как оптимизировать код?
У меня стоит задача, я сначала добавляю записи в sql у которых idsql = 0, после обновляю записи в sql у которых в 1с idsql > 0 и вытаскивать из sql id для записи в таблицу значений, для дальнейшей работы, чтоб по нему и смотреть, значения idsql
(4)
По-сути тут все не так: см. (2). Оно, конечно, работать будет и в таком виде, если сказать соединению, что все запросы будут в кодировке Unicode.
Как включить это с помощью строки подключения должно быть указано в документации к драйверу ODBC MySQL, либо на каком-нибудь
https://www.connectionstrings.com
Код вида:
выполняет двойное преобразование значения: строка -> число -> строка. Для чего это выполняется - вообще не понятно.
...можете подсказать, что здесь не так и как оптимизировать код?
По-сути тут все не так: см. (2). Оно, конечно, работать будет и в таком виде, если сказать соединению, что все запросы будут в кодировке Unicode.
Как включить это с помощью строки подключения должно быть указано в документации к драйверу ODBC MySQL, либо на каком-нибудь
Код вида:
| [Publish] = '"+Число(Выборка.Публиковать)+"',
выполняет двойное преобразование значения: строка -> число -> строка. Для чего это выполняется - вообще не понятно.
(7) Везде где стоит преобразование, там булево, а в phpmyadmin булево числовое
я изменил немного код
я изменил немного код
Попытка
Пока Выборка.Следующий() Цикл
Соединение.Execute("UPDATE Events_Types
|SET
| Title = '"+Выборка.Наименование+"',
| Responsible = '"+Выборка.Ответственный+"',
| Creator = '"+Выборка.Автор+"',
| Publish = '"+Число(Выборка.Публиковать)+"',
| GPT = '"+Число(Выборка.GPT)+"',
| Edited = '"+Число(Выборка.Отредактировано)+"',
| Printer ='"+Число(Выборка.Типограф)+"',
| Verified = '"+Число(Выборка.Проверено)+"'");
КонецЦикла;
Сообщить("Данные обновлены!");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Показать
(3)
где указать кодировку?
//Подключение к SQL-серверу
Попытка
Соединение = Новый COMОбъект("ADODB.Connection");
Команда = Новый COMОбъект("ADODB.Command");
Выборка = Новый COMОбъект("ADODB.RecordSet");
Соединение.ConnectionString = "DRIVER=" + Драйвер + ";Server=" + СРВ + ";Database=" + БД + ";UID=" + УИД + ";PWD=" + ПВД + ";";
Соединение.ConnectionTimeout = 30;
Соединение.CommandTimeout = 600;
//Открытие соединение
Соединение.Open();
Команда.ActiveConnection = Соединение;
Сообщить("Успешное подключение!");
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
Показатьгде указать кодировку?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот