Имя: Пароль:
1C
1С v8
Закончилось место на SQL, а ADODB.Command не получило ошибку, или я не там смотрю?
0 Megas
 
09.10.18
10:59
8.2 толстый клиент, в серверном модуле такой текст:


    СтрокаСоединения = "Provider=SQLOLEDB.1; User ID=SUPER; Password=SUPER; Initial Catalog=ИмяРабочейБазы; Data Source=СерверРабочейБазы";
    СтрокаСоединения = СтрЗаменить(СтрокаСоединения, "СерверРабочейБазы", СтруктураНастроек.СерверРабочейБазы);
    СтрокаСоединения = СтрЗаменить(СтрокаСоединения, "ИмяРабочейБазы",       СтруктураНастроек.ИмяРабочейБазы);
    
    Соединение = Новый COMОбъект("ADODB.Connection");
    Соединение.ConnectionString = СтрокаСоединения;
    Попытка
        Соединение.Open();
    Исключение
        Сообщить(ОписаниеОшибки());
        ВызватьИсключение;
    КонецПопытки;
    
    Команда = Новый COMОбъект("ADODB.Command");
    Команда.ActiveConnection = Соединение;
    
    Команда.CommandText = СтруктураНастроек.СтрокаКоманды;      
    Команда.Execute();
    Соединение.Close();

СтруктураНастроек.СтрокаКоманды по сути Insert
И всё было хорошо пока не кончилось место на диске.... и самое ужасно что "ADODB.Command" и "ADODB.Connection" не получили ошибки, просто в базу не добавилась очередная запись. Что я сделал не так и как исправить?
1 Cool_Profi
 
09.10.18
11:12
А может, смотреть возвращаемое значение и первый параметр у Execute() ?
2 Greeen
 
09.10.18
11:12
Execute()
Выполняет запрос, оператор SQL, хранимую процедуру или любую другую команду, доступную провайдеру. Возвращает объект Recordset, доступный только для чтения курсором Forward-only, если переданная команда возвращает записи. (Если нужен объект Recordset, доступный для записи, следует создать его непосредственно, и воспользоваться его свойствами и методами.)

Можно с этим поиграться
3 Megas
 
09.10.18
11:17
(1)(2)Спасибо попробую. Не смотрел что он Возвращает при Insert
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.