04.09.2007, 12:50 | #1 |
Участник
|
update_recordset
Всем привет)
Помогите разрешить такую ситуацию: есть контейнер conRecId, который содержит набор RecId, полученных из некоторого запроса Query. Требуется выполнить нечто вроде update_recordset table1 setting table1.field1 = value where table1.recid in (conRecId) Как это можно сделать?
__________________
Step by step... |
|
04.09.2007, 13:01 | #2 |
Участник
|
если значений не много, то можно сделать что-то типа
X++: update_recordset table1 setting table1.field1 = value where table1.recid like con2str(conRecId); |
|
04.09.2007, 13:01 | #3 |
Banned
|
Чудес не бывает: создайте query, создайте в нем столько ranges, сколько элементов в контейнере. Следите, чтобы количество ranges не зашкалило за 400: jinx: Maximale Anzahl von Einschr?nkungen in einer Abfrage ?
Последний раз редактировалось EVGL; 04.09.2007 в 13:03. |
|
04.09.2007, 13:08 | #4 |
Участник
|
что значит не много? чем ограничено это количество?
__________________
Step by step... |
|
04.09.2007, 13:14 | #5 |
Участник
|
Ну, прежде всего, типом возвращаемого значения метода con2str.
У меня там str 1000, что неплохо. Помимо этого, смотрите пред. пост Евгения про кол-во фильтров. Самый простой способ - экспериментальным путем это выяснить |
|
04.09.2007, 13:15 | #6 |
Участник
|
2 kashperuk: разве можно в части where использовать контейнеры, компилятор по крайней мере не пропускает
__________________
Step by step... |
|
04.09.2007, 13:23 | #7 |
Участник
|
Ну, это его просто глючит.
А вот если вынести преобразование в строку до обновления, то таки натыкаемся на проблему... Update_Recordset видимо глупая команда, и не может понять, что используется like, а соответственно, может быть перечень значений, то есть строка. Поэтому видимо таки придется построчно обвнолять. |
|
04.09.2007, 13:30 | #8 |
Участник
|
Цитата:
Видимо да))))) Спасибо за участие!!!
__________________
Step by step... |
|
04.09.2007, 13:31 | #9 |
Участник
|
X++: InventTable it; container c; str 1000 s; ; s = con2str(c); update_recordset it setting ItemId = "value" where it.ItemId like s; |
|
04.09.2007, 13:33 | #10 |
Участник
|
Да. Главное, чтобы это было не Мемо и не динамический str
|
|
04.09.2007, 14:19 | #11 |
Участник
|
Вы точно убедились что будет работать ?
Цитата:
Like "Value1,Value2"
Цитата:
Like "Value*"
Последний раз редактировалось Logger; 04.09.2007 в 14:28. |
|
|
За это сообщение автора поблагодарили: kashperuk (3). |
04.09.2007, 14:38 | #12 |
Moderator
|
Насколько я понимаю, Like "Value1,Value2" работать не будет.
__________________
Андрей. |
|