Имя: Пароль:
1C
 
Как изменить данные поля таблицы SQL
0 VanoZZZ
 
15.08.06
09:10
Есть следующий код:
Процедура ПолучениеСпискаБаз()  
   ОпределениеПараметровПодключенияSQL();
   ConnectionString="Provider=SQLOLEDB.1;Password="+pwd+";Persist Security Info=True;User ID="+uid+";Initial Catalog="+db+";Data Source="+server;
   CommandText="SELECT * From [_1SDBSET] (nolock) WHERE DBSTATUS='C'";
   Попытка
       Соединение=СоздатьОбъект("ADODB.Connection");
   Исключение
       Сообщить("Невозможно создать ADODB-объект!","!");
       Возврат;
   КонецПопытки;    
   Попытка
       Соединение.Open(ConnectionString);
   Исключение
       Сообщить("Невозможно установить ADODB-соединение с БД!","!");
       Возврат;
   КонецПопытки;
   Запрос=СоздатьОбъект("ADODB.Command");
   Запрос.ActiveConnection=Соединение;    
   Запрос.CommandText=CommandText;
   НаборЗаписей = СоздатьОбъект("ADODB.Recordset");
   НаборЗаписей=Запрос.Execute();
   Пока НаборЗаписей.Eof() = 0 Цикл
       ТекФайлВыгрузки=НаборЗаписей.Fields("DBFNPC").Value;
       НаборЗаписей.MoveNext();
   КонецЦикла;
   НаборЗаписей.Close();
   Соединение.Close();
КонецПроцедуры

Так вот, здесь в цикле получаем значение поля "DBFNPC", нужно сделать условие, если это значение не соответствует определенному параметру, то менять значени в таблице. Вопрос, как это можно сделать, т.е. как тут можно поменять значение в таблице, а не как сделать условие (это уж поверьте соображу как:)). Заранее спасибо
1 Господин ПЖ
 
15.08.06
09:11
Update
2 Sadovnikov
 
15.08.06
09:12
Пересматривай подход к программированию. В скуле все делается запросами.
Update <ИмяТаблицы>
Set <НужноеПоле> = <НужноеЗначение>
Where <ЗдесьОбычноеУсловие>
3 VanoZZZ
 
15.08.06
09:19
(2)пресмотреть... Дело в том, что я в сиквеле ламо полное и нет времени пока с ним поразбираться...
А не получится НаборЗаписей.UpDate(ТакоеТоПоле) или что-нить типа того... Только запрос менять?
4 VanoZZZ
 
15.08.06
09:36
(2) Я в (3) похоже фигню сморозил. Вожешь тогда подсказать, как сделать такое условие, мне в общем нужно чтобы в таблице по колонке "DBFNPC", не было совпадений, т.е. в каждой строке по этому полю значение уникально
5 VanoZZZ
 
15.08.06
09:50
Спасибо, пошел читать книжки...
6 VanoZZZ
 
15.08.06
12:48
Блин, кто-нить помогите плз, может у кого-нить есть пример похожий с моим случаем, как при переборе получить значение поля таблицы и если уже такое значение есть в других строках, поменять значение этого поля
7 SnarkHunter
 
15.08.06
12:57
UPDATE [_1SDBSET] SET DBFNPC = CAST(ROWID AS CHAR(<ТУТ_РАЗМЕР_ПОЛЯ_DBFNPC>)) WHERE DBSTATUS = 'C'
8 VanoZZZ
 
15.08.06
14:02
(7) так это опять запросом, а в переборе нельзя?
Update <ИмяТаблицы>
Set <НужноеПоле> = <НужноеЗначение>
Where <ЗдесьОбычноеУсловие>
мне не подходит, т.к. я не знаю заранее какое нужно <НужноеЗначение>, его уже нужно определить конкретно для этой строки.
У рекордсета есть же метод Update, но у меня почему то не работет
Делаю так:
ОпределениеПараметровПодключенияSQL();
ConnectionString="Provider=SQLOLEDB.1;Password="+pwd+";Persist Security Info=True;User ID="+uid+";Initial Catalog="+db+";Data Source="+server;
CommandText="SELECT * From [_1SDBSET] (nolock) WHERE DBSTATUS='C'";
Попытка
   Соединение=СоздатьОбъект("ADODB.Connection");
Исключение
   Сообщить("Невозможно создать ADODB-объект!","!");
   Возврат;
КонецПопытки;    
Попытка
   Соединение.Open(ConnectionString);
Исключение
   Сообщить("Невозможно установить ADODB-соединение с БД!","!");
   Возврат;
КонецПопытки;
НаборЗаписей = СоздатьОбъект("ADODB.Recordset");
НаборЗаписей.Open(CommandText,Соединение,2);
Пока НаборЗаписей.Eof() = 0 Цикл
   НаборЗаписей.UpDate("DBFNPC","qwe");
КонецЦикла;
Выдает ошибку:
НаборЗаписей.UpDate("DBFNPC","qwe");
{D:\MY DOCUMENTS\1C\7.7\ОБРАБОТКИ\НАРАБОТКИ\ЗАГРУЗКАУРИБ.ERT(196)}: ADODB.Recordset: Current Recordset does not support updating. This may be a limitation of the provider, or of the selected locktype.