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