Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Удаление записей из нескольких таблиц / 11 сообщений из 11, страница 1 из 1
07.05.2010, 12:47
    #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
07.05.2010, 12:50
    #36617163
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей из нескольких таблиц
rekkiКод не работает, ругается на PACK
Код: plaintext
1.
2.
3.
4.
...
Open DataBase data1 exclusive
PACK
...
но тут есть свои ограничения. читайте про эксклюзивный режим
...
Рейтинг: 0 / 0
07.05.2010, 12:59
    #36617187
rekki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей из нескольких таблиц
Не помогло, сейчас почитаю про этот режим
...
Рейтинг: 0 / 0
07.05.2010, 17:29
    #36617962
reware
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей из нескольких таблиц
rekkiНе помогло, сейчас почитаю про этот режим

Читать особо нечего, PACK требует эксклюзивного открытия. Причем, желательно предварительно (при многопользовательской работе) проверить возможность открытия БД эксклюзивно.
...
Рейтинг: 0 / 0
07.05.2010, 20:22
    #36618116
igorbik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей из нескольких таблиц
rekki,
А что, иногда и так бывает, что в разных таблицах у данных на одного и того же работника одинаковые номера записей...
...
Рейтинг: 0 / 0
08.05.2010, 09:19
    #36618390
reware
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей из нескольких таблиц
igorbikrekki,
А что, иногда и так бывает, что в разных таблицах у данных на одного и того же работника одинаковые номера записей...
А зачем нам номера записей ? Обычно, каждому работнику присваивается некий уникальный ID (невидимый пользователю), который и фигурирует во всех родительских и дочерних таблицах. По нему и удалять. Т.е. Иванов И.И. получил при создании его карточки ID=12345, и этот ID прописываем во всех дочерних таблицах. Очень желательно этим таблицам придать индексный файл по полю ID, тогда гораздо легче записи работника отыскивать/удалять.
...
Рейтинг: 0 / 0
08.05.2010, 21:50
    #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
10.05.2010, 13:15
    #36619547
igorbik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей из нескольких таблиц
MAYAKOV_SV,

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


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