Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PowerBuilder Новый топик    Ответить
 Не работает удаление данных в таблице без Primary Key  [new]
MrKoder
Member

Откуда:
Сообщений: 47
В общем, у меня в БД есть 5 таблиц. Из них 3 основные, а 2 вспомогательные.
Есть кнопка "Удалить", при нажатии на которую должна удаляться строка из таблицы (данные я вывожу в DataWindow control). Так вот строки удаляются только из основных таблиц (поставщик, город и товар), а из вспомогательных таблиц (связь товар город, связь товар поставщик) удаление не происходит.

Код выглядит следующим образом (за то, что не выделил код извиняюсь, выделения PowerScript здесь не нашел):
Integer d;
Integer w;
w= messagebox("Удаление","Вы действительно хотите удалить запись ?",question!,yesno!);
if w=1 then
d=osn.dw_1.getRow();
osn.dw_1.deleteRow(d);
osn.dw_1.Update();
osn.dw_1.Retrieve();
end if

Помогите, пожалуйста, сделать удаление для вспомогательных таблиц!
Не обязательно править этот код, можно прописать его для другой кнопки (т.е. будет одна кнопка удаления для основных таблиц, и одна для связующих, в моем случае это не страшно).

К сообщению приложен файл. Размер - 22Kb
22 дек 18, 20:58    [21771183]     Ответить | Цитировать Сообщить модератору
 Re: Не работает удаление данных в таблице без Primary Key  [new]
MrKoder
Member

Откуда:
Сообщений: 47
При попытке удаления выдает такое окно

К сообщению приложен файл. Размер - 88Kb
22 дек 18, 21:00    [21771184]     Ответить | Цитировать Сообщить модератору
 Re: Не работает удаление данных в таблице без Primary Key  [new]
pand
Member

Откуда: Украина Харьков
Сообщений: 330
MrKoder,

Вы бы почитали хотябв базовые принципы работы Powerbuilder .

У Вас в datawindow не настроены условия обновления данных.

Если Вы используете базовый компонент datawindow из коробки в одном dw можно изменять данные только в одной таблице. Если нужно изменение в нескольких таблицах из одного dw то нужно либо использовать доп сервисы pfc
либо прописывать логику обновления самостоятельно
либо пользоваться тригирами бд
22 дек 18, 21:38    [21771194]     Ответить | Цитировать Сообщить модератору
 Re: Не работает удаление данных в таблице без Primary Key  [new]
MrKoder
Member

Откуда:
Сообщений: 47
pand,
Вы могли бы объяснить самый простой путь решения данной проблемы?
Дело в том, что я не планирую работать с PB в будущем, это лаба и не более того. Объяснений как ее выполнять нет, PB старенькой версии, все как обычно.
Помогите, пожалуйста, с решением этой задачи
22 дек 18, 22:54    [21771217]     Ответить | Цитировать Сообщить модератору
 Re: Не работает удаление данных в таблице без Primary Key  [new]
Dim2000
Member

Откуда: Москва
Сообщений: 5322

22.12.2018 22:54, MrKoder пишет:

> Помогите, пожалуйста, с решением этой задачи

Потратить время на то, чтобы ты смог незаслуженно получить диплом?

Задача реально примитивна.

Posted via ActualForum NNTP Server 1.5

25 дек 18, 14:27    [21772971]     Ответить | Цитировать Сообщить модератору
 Re: Не работает удаление данных в таблице без Primary Key  [new]
spas2001
Member

Откуда: Тамбов--->Москва-->Тамбов-->Москва-->Тамбов
Сообщений: 1973
У вас пока вообще ничего не удаляется
Настройте свойства обновления DW
Для остальных таблиц тоже сделайте dw невизуальные
Считываете ключ с основной таблицы ключ
По ключу делаете ретрайв этих dw и удаляете строки
Потом делаете апдейт
Потом удаляете запись из основных таблиц
У вас же там foreign keys кругом, он вам не даст удалить основную запись пока есть зависимые (это не всегда так, бывает наоборот - с удалением основной записи удаляются зависимые, но не в вашем случае)
Если переведете то что я написал в код - лаба готова
25 дек 18, 16:47    [21773139]     Ответить | Цитировать Сообщить модератору
 Re: Не работает удаление данных в таблице без Primary Key  [new]
Механик
Member

Откуда: Белгород
Сообщений: 2061
MrKoder
pand,
Вы могли бы объяснить самый простой путь решения данной проблемы?
Дело в том, что я не планирую работать с PB в будущем, это лаба и не более того. Объяснений как ее выполнять нет, PB старенькой версии, все как обычно.
Помогите, пожалуйста, с решением этой задачи
В DW имеется свойство Update. Если указать таблицу, то будет изменяться только в таблице. Если указать процедурный метод изменений Update/Delete/Insert, то при событии Update/Delete/Insert станет вызываться указанная процедура.
Вам либо на таблицу триггер на таблицу вешать, либо процедуру вызывать, либо код в соответствующих событиях прописывать.
Напрямую, одной настройкой DW удаление из нескольких таблиц не совершить.
26 дек 18, 08:18    [21773561]     Ответить | Цитировать Сообщить модератору
 Re: Не работает удаление данных в таблице без Primary Key  [new]
pand
Member

Откуда: Украина Харьков
Сообщений: 330
Механик
MrKoder
pand,
Вы могли бы объяснить самый простой путь решения данной проблемы?
Дело в том, что я не планирую работать с PB в будущем, это лаба и не более того. Объяснений как ее выполнять нет, PB старенькой версии, все как обычно.
Помогите, пожалуйста, с решением этой задачи
В DW имеется свойство Update. Если указать таблицу, то будет изменяться только в таблице. Если указать процедурный метод изменений Update/Delete/Insert, то при событии Update/Delete/Insert станет вызываться указанная процедура.
Вам либо на таблицу триггер на таблицу вешать, либо процедуру вызывать, либо код в соответствующих событиях прописывать.
Напрямую, одной настройкой DW удаление из нескольких таблиц не совершить.


Да мне то оно собственно и не надо. Про хранимые процедуры я в курсе. но стращать ими топикстартера это уже жестоко
26 дек 18, 10:49    [21773658]     Ответить | Цитировать Сообщить модератору
 Re: Не работает удаление данных в таблице без Primary Key  [new]
pand
Member

Откуда: Украина Харьков
Сообщений: 330
Механик,

сорри не заметил что мой пост был обернут в цитату
26 дек 18, 10:50    [21773659]     Ответить | Цитировать Сообщить модератору
Все форумы / PowerBuilder Ответить