![]() |
|
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(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |