Имя: Пароль:
1C
1C 7.7
v7: MySQL ADODB.Connection помогите получить количество обновленных или вставленных строк
0 sysadminlk
 
27.09.24
07:13
Попытка
        ТаблицаЗаписей = СоздатьОбъект("ТаблицаЗначений");    
        Соед = СоздатьОбъект("ADODB.Connection");
        Соед.Open("driver={MySQL ODBC 5.1 Driver}; server="+server+"; uid="+uid+"; pwd="+pwd+"; database="+database+"; 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 sysadminlk
 
27.09.24
07:15
р = ВыпЗапросНаСайтттт("INSERT INTO `copysms` SET `phone`='111', `text`='111';
    |SELECT CONVERT(ROW_COUNT(), CHAR) AS 'row';");
    Сообщить(р);
    Если ТипЗначенияСтр(р) = "ТаблицаЗначений" Тогда
        глПоказатьТаблицуЗначений(р);
    КонецЕсли;

Microsoft OLE DB Provider for ODBC Drivers: [MySQL][ODBC 5.1 Driver][mysqld-5.1.73]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 'SELECT CONVERT(ROW_COUNT(), CHAR) AS 'row'' at line 2
2 sysadminlk
 
27.09.24
08:16
Отбой уже нашел как

Функция РаскрытьВыборку(Выборка)
    ТаблицаЗаписей = СоздатьОбъект("ТаблицаЗначений");
    Для НомПол=0 По Выборка.Fields().Count-1 Цикл
        ТаблицаЗаписей.НоваяКолонка(СокрЛП(Выборка.Fields(НомПол).Name));
    КонецЦикла;
    НомСтроки = 0;
    Пока Выборка.EOF() = 0 Цикл
        НомСтроки=НомСтроки+1;
        ТаблицаЗаписей.НоваяСтрока();
        Для НомерКолонки=1 По ТаблицаЗаписей.КоличествоКолонок() Цикл
            ТаблицаЗаписей.УстановитьЗначение(НомСтроки,НомерКолонки,СокрЛП(Выборка.Fields(НомерКолонки-1).Value));
        КонецЦикла;        
        Выборка.MoveNext();
    КонецЦикла;
    Возврат ТаблицаЗаписей;
КонецФункции    // РаскрытьВыборку

Функция ВыпЗапросНаСайт(Запросы, server="", userid="user",password="qwerty",database="main") Экспорт
    server = ?(ПустоеЗначение(server)=1,ИпСервера,server);
    Итоги = СоздатьОбъект("СписокЗначений");
    Попытка
        Connection = СоздатьОбъект("ADODB.Connection");
        Connection.Open("driver={MySQL ODBC 5.1 Driver}; server="+server+"; uid="+userid+"; pwd="+password+"; database="+database+"; port=3306; STMT=SET CHARACTER SET cp1251");
        Если Connection.State = 1 Тогда
            Если ТипЗначенияСтр(Запросы) = "Строка" Тогда
                Список = СоздатьОбъект("СписокЗначений");            
                Для НомСтр=1 По СтрКоличествоСтрок(Запросы) Цикл
                    Стр = СтрПолучитьСтроку(Запросы,НомСтр);
                    Список.ДобавитьЗначение(СокрЛП(Стр));        
                КонецЦикла;
                Запросы = Список;
            КонецЕсли;
            Для Ном=1 По Запросы.РазмерСписка() Цикл        
                Выборка = Connection.Execute(Запросы.ПолучитьЗначение(Ном));
                Если Выборка.State = 0 Тогда
                    Выборка = Connection.Execute("SELECT CONVERT(ROW_COUNT(), CHAR) AS 'affected_rows';");    
                КонецЕсли;
                Если Запросы.РазмерСписка() = 1 Тогда
                    ТабЗнач = РаскрытьВыборку(Выборка);
                    Connection.Close();
                    Connection="";                
                    Возврат ТабЗнач;
                Иначе
                    Итоги.ДобавитьЗначение(РаскрытьВыборку(Выборка));                    
                КонецЕсли;                        
            КонецЦикла;
            Connection.Close();
            Connection="";
            Возврат Итоги;
        Иначе
            Сообщить("Connection.State:"+Connection.State+"");
        КонецЕсли;
    Исключение
        Возврат ОписаниеОшибки();
    КонецПопытки;
КонецФункции    //ВыпЗапросНаСайт