powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Удаление записей из нескольких таблиц
11 сообщений из 11, страница 1 из 1
Удаление записей из нескольких таблиц
    #36617160
rekki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужна помощь в удалении записей из некоторого количества таблиц.
Имеем форму на которой отображается информация о работнике взятая из нескольких таблиц. Нужно сделать кнопочку по нажатию которой будет удалятся ВСЯ информация о данном работнике (из всех таблиц)
Код не работает, ругается на PACK
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
del=RECNO()
DELETE from rabotnik where RECNO()=del
DELETE from dol_razr where RECNO()=del
DELETE from obrazovanie where RECNO()=del
DELETE from rab_temp where RECNO()=del
CLOSE DATABASES

PUBLIC opened

Open DataBase data1
PACK

CREATE CURSOR mycur (fio c( 40 ), tab_no int( 4 ), d........
...
Рейтинг: 0 / 0
Удаление записей из нескольких таблиц
    #36617163
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rekkiКод не работает, ругается на PACK
Код: plaintext
1.
2.
3.
4.
...
Open DataBase data1 exclusive
PACK
...
но тут есть свои ограничения. читайте про эксклюзивный режим
...
Рейтинг: 0 / 0
Удаление записей из нескольких таблиц
    #36617187
rekki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не помогло, сейчас почитаю про этот режим
...
Рейтинг: 0 / 0
Удаление записей из нескольких таблиц
    #36617962
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rekkiНе помогло, сейчас почитаю про этот режим

Читать особо нечего, PACK требует эксклюзивного открытия. Причем, желательно предварительно (при многопользовательской работе) проверить возможность открытия БД эксклюзивно.
...
Рейтинг: 0 / 0
Удаление записей из нескольких таблиц
    #36618116
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rekki,
А что, иногда и так бывает, что в разных таблицах у данных на одного и того же работника одинаковые номера записей...
...
Рейтинг: 0 / 0
Удаление записей из нескольких таблиц
    #36618390
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
igorbikrekki,
А что, иногда и так бывает, что в разных таблицах у данных на одного и того же работника одинаковые номера записей...
А зачем нам номера записей ? Обычно, каждому работнику присваивается некий уникальный ID (невидимый пользователю), который и фигурирует во всех родительских и дочерних таблицах. По нему и удалять. Т.е. Иванов И.И. получил при создании его карточки ID=12345, и этот ID прописываем во всех дочерних таблицах. Очень желательно этим таблицам придать индексный файл по полю ID, тогда гораздо легче записи работника отыскивать/удалять.
...
Рейтинг: 0 / 0
Удаление записей из нескольких таблиц
    #36618764
MAYAKOV_SV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rekkiНужна помощь в удалении записей из некоторого количества таблиц.

Код удаления неверный.
Если отображается инфо о работнике из разных таблиц, то в связанных таблицах должны быть поля по которым они связываются с работником.
Так как не знаю как оно называется, ну например: rabotnik_id
нужно что-то типа:
Код: plaintext
1.
2.
3.
4.
5.
 rid = ...
DELETE from rabotnik where rabotnik_id=rid
DELETE from dol_razr where rabotnik_id=rid
DELETE from obrazovanie where rabotnik_id=rid
DELETE from rab_temp where rabotnik_id=rid
А то в приведенном вами коде удалятся не те записи.
Т.е. вы пытались найти номер текущей записи работника и удалить по одной записи из связанных таблиц с тем же самым номером записи.
Правда в связанных таблицах (dol_razr,obrazovanie,rab_temp) - это не номер работника, а просто номер записи...
...
Рейтинг: 0 / 0
Удаление записей из нескольких таблиц
    #36619547
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAYAKOV_SV,

Вот и я выше писал:
"А что, иногда и так бывает, что в разных таблицах у данных на одного и того же работника одинаковые номера записей"
В след. раз буду невежливым и тупо тыкать в код.
...
Рейтинг: 0 / 0
Удаление записей из нескольких таблиц
    #36623964
rekki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблицы связаны по полю fio.
Вобщем все решилось перемещением функции PACK выше Open-a
...
Рейтинг: 0 / 0
Удаление записей из нескольких таблиц
    #36624038
MAYAKOV_SV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rekkiТаблицы связаны по полю fio.
Обычно работники связываются по ключевому числовому полю.
А вдруг работник фамилию поменяет, тогда Update по всем остальным таблицам придется делать, а это не айс.
Ну типа работник: {emp_id, fio, datarogd, data_in}.
Образование: {educ_id, name, emp_id}.
emp_id - уникальный ключ по которому и связываются все таблицы с работником.
...
Рейтинг: 0 / 0
Удаление записей из нескольких таблиц
    #36624076
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rekkiТаблицы связаны по полю fio.
Вобщем все решилось перемещением функции PACK выше Open-a
Это ваш временный успех. Ожидайте других сюрпризов. Вам следует присваивать каждому работнику уникальный номер, тогда нет опасности нарваться на совпадения фамилий.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Удаление записей из нескольких таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]