Страница 1 из 1

Ошибка при удалении из Pick

Добавлено: 03 фев 2015, 18:59
Irina_
Здравствуйте. Возникла проблема. Надо воспользоваться интерфейсом Z_Staffcat::PickCatalog2.
Вызываю Runinterface( Z_Staffcat::PickCatalog2, integer(-11), comp(0), comp(100) ) ;
Множественный выбор сохраняется в маркере с именем CatalogsMarker. С маркерами не приходилось работать, а с Pick работала. Поэтому надо перебросить данные из маркера в Pick c заданным wList. Но предварительно нужно почистить Pick. Делаю delete Pick where (( word(99) == Pick.wList ));
При компиляции получаю ошибку: "Нет такой функции, поля или метода : DELETE D:\VIPer\Projects\Up_Pers\frm\Dialog_6t.vip"
Как решить проблему?

Re: Ошибка при удалении из Pick

Добавлено: 04 фев 2015, 09:01
RAJAH
Irina_ писал(а):Делаю delete Pick where (( word(99) == Pick.wList ));При компиляции получаю ошибку
Наверное, надо как-то так:

Код: Выделить всё

<<name_view>>.delete all pick where ((99 == pick.wlist));

Re: Ошибка при удалении из Pick

Добавлено: 04 фев 2015, 10:22
Irina_
Здравствуйте. Большое спасибо, помогло. Как-то не подумала, что проблема может быть из-за этого. Обычно удаляла данные из таблиц в памяти, никогда не указывала имя view, проблем не было.

Re: Ошибка при удалении из Pick

Добавлено: 04 фев 2015, 11:44
ira
Irina_ писал(а):Здравствуйте. Большое спасибо, помогло. Как-то не подумала, что проблема может быть из-за этого. Обычно удаляла данные из таблиц в памяти, никогда не указывала имя view, проблем не было.
Здравствуйте! Я думаю проблема не в отсутствии имени view, а в отсутствии ALL.

Re: Ошибка при удалении из Pick

Добавлено: 04 фев 2015, 11:59
Irina_
Ira, Вы ошибаетесь. All не влияет на проблему. Собственно и логично, т.к. указано условие Where, по которому идет удаление.

Re: Ошибка при удалении из Pick

Добавлено: 04 фев 2015, 12:12
Den
странная ваще то ошибка. По идее так должно прокатывать. Так как если даже объявлена именовая вью в фейсе, то pick в этом случае засунется в эту вью.
Например все соберется :

Код: Выделить всё

interface delete123;
   create view t1
    from pick
   ;
 HandleEvent
   CmInit: delete pick where ((word(99)==pick.wlist));
 end;
end.
без варнинга

в так :

Код: Выделить всё

interface delete123;
   create view t1
!    from pick
   ;
 HandleEvent
   CmInit: delete pick where ((word(99)==pick.wlist));
 end;
end.
тоже успешно скомпиляется, но с варнингом :
10:09:15 │ Предупреждение: Неявное добавление таблицы PICK в логическую таблицу T1 (стр.10, поз.24 в C:\gal\example\123.vip)
│ CmInit: delete pick where ((word(99)==pick.wlist));

Наверное, что то связано с особенностью Вашего конкретного Dialog_6t.vip.

Re: Ошибка при удалении из Pick

Добавлено: 04 фев 2015, 12:41
Irina_
Den, Вы правы. Не стала сразу подробно описывать, но сделаю это сейчас.
Из основного интерфейса, где описана view, вызываю интерфейс, в котором определяются параметры работы основного интерфейса, и здесь же удаляю записи из Pick. Проверено, что ошибки нет, если в интерфейсе ввода параметров:
1. задать именованный create view и удаление делать, используя имя view, как советовал RAJAH
2. задать просто create view без имени, тогда удаление можно делать, не ссылаясь на имя вью.
Просто ранее у меня не было необходимости чистить таблицу не в основном интерфейсе, а в интерфейсе задания параметров. Теперь буду знать, что в таком случае надо как минимум поступать по п.2.
Еще раз спасибо всем.

Re: Ошибка при удалении из Pick

Добавлено: 04 фев 2015, 12:47
m0p3e
Но лучше все-таки маркером воспользоваться :)

Re: Ошибка при удалении из Pick

Добавлено: 04 фев 2015, 13:50
Irina_
Возможно, так и сделаю с текущим фейсом, а может с каким-то будущим. Люблю пробовать разные варианты действий. Но только когда есть время, а когда во времени ограничена, то лучше использовать отработанный вариант. Уже были мысли попробовать работать с маркерами, хотя острой необходимости не было, т.к. использовала стандартные фейсы, где выбор сохраняется сразу в Pick. Хотя знаю, что многие интерфейсы работают с маркерами, а не с Pick.