Имя: Пароль:
1C
1C 7.7
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();