|
|
v7: Как узнать сколько было обновлено строк через ADODB.Recordset если RS.State = 0? |
☑ |
|
0
sysadminlk
26.07.16
✎
12:13
|
MySQL UPDATE
Функция ВыпЗапросНаСайт(ТекстЗапроса) Экспорт
Попытка
ТаблицаЗаписей = СоздатьОбъект("ТаблицаЗначений");
Соед = СоздатьОбъект("ADODB.Connection");
Соед.Open("driver={MySQL ODBC 5.1 Driver}; server=192.168.0.1; uid=user; pwd=paRol; database=main; port=3306; STMT=SET CHARACTER SET cp1251");
RS = CreateObject("ADODB.Recordset");
RS.Open(ТекстЗапроса, Соед);
Если RS.State = 0 Тогда
Перейти ~Конец;
КонецЕсли;
Для НомПол=0 По RS.Fields().Count-1 Цикл
ТаблицаЗаписей.НоваяКолонка(СокрЛП(RS.Fields(НомПол).Name));
КонецЦикла;
НомСтроки = 0;
Пока RS.EOF() = 0 Цикл
НомСтроки=НомСтроки+1;
ТаблицаЗаписей.НоваяСтрока();
Для НомерКолонки=1 По ТаблицаЗаписей.КоличествоКолонок() Цикл
ТаблицаЗаписей.УстановитьЗначение(НомСтроки,НомерКолонки,СокрЛП(RS.Fields(НомерКолонки-1).Value));
КонецЦикла;
RS.MoveNext();
КонецЦикла;
RS.Close();
~Конец:
RS="";
Соед.Close();
Соед="";
Возврат ТаблицаЗаписей;
Исключение
Возврат ОписаниеОшибки();
КонецПопытки;
КонецФункции // ВыпЗапросНаСайта
|
|
|
1
vde69
26.07.16
✎
12:17
|
что-то я не вижу у тебя обновления ....
можно подробнее чего недо?
|
|
|
2
sysadminlk
26.07.16
✎
12:29
|
Рез = "UPDATE `main`.`pricelist` SET `pl_sect` = '44' WHERE `pl_id` =5816030;";
Рез = ВыпЗапросНаСайт(Рез);
Как узнать сколько записей было обновлено?
|
|
|
3
Ёпрст
гуру
26.07.16
✎
12:29
|
(0) если RS.State = 0 было обновлено 0 строк
©Капитан Очевидность
ЗЫ: ибо,
Если RS.State = 0 Тогда
Перейти ~Конец;
КонецЕсли;
|
|
|
4
Ёпрст
гуру
26.07.16
✎
12:31
|
(2)
посмотреть @@ROWCOUNT нужно
|
|
|
5
Ёпрст
гуру
26.07.16
✎
12:33
|
ну и в клюшках применять ado, когда есть 1cpp.. изврат
|
|
|
6
Это_mike
26.07.16
✎
12:38
|
(5) так мускул же....
|
|
|
7
sysadminlk
26.07.16
✎
12:41
|
(6) +1 ROWCOUNT там нету
|
|
|
8
sysadminlk
26.07.16
✎
12:41
|
может можно как-то написать запрос чтоб mysql вернул таблицу строк которые обновил?
|
|
|
9
vde69
26.07.16
✎
13:16
|
(2) обновит или все или ни одной по фильтру
"WHERE pl_id =5816030"
а вообще делается сначала селект с фильтром (и тут можно посмотреть сколько планируется к обновлению строк) а потом обновление, причина простая - если фильтр не валидный то вместо апдейта нужно делать инсерт, а то получишь ошибку....
|
|
|
10
ADirks
26.07.16
✎
13:27
|
а кстати да, зачем ADODB? неудобно же
с 1С++ как-то проще
База = СоздатьОбъект("ODBCDataBase");
СтрокаПодключения = "Driver=MySQL ODBC 5.1 Driver;Server="+MySQL_Сервер+";Port=3306;Database="+MySQL_База+";Uid="+MySQL_Логин+";Pwd="+MySQL_Пароль+";";
рез = База.Соединение(СтрокаПодключения);
Если рез <> 1 Тогда
Сообщить("Ошибка подключения к серверу телефонии!
|
|"+СтрокаПодключения+"
|
|"+База.ПолучитьОписаниеОшибки(), "!");
Возврат 0;
КонецЕсли;
Запрос = СоздатьОбъект("ODBCRecordSet");
Запрос.УстБД(База);
|
|
|
11
Ёпрст
гуру
26.07.16
✎
13:33
|
(7)та ну ???
SELECT ROW_COUNT();
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший