• Paranoid - курс по анонимности и безопасности в сети от команды codeby. Защита персональных данных, анонимность в сети интернет, настройка виртуальных машин, безопасная передача данных, анти форензика и еще много всего полезного. Подробнее ...

Удаление записей из связанных таблиц

  • Автор темы Kleopatra
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

Kleopatra

#1
Здравствуйте, я тут у вас новенькая, надеюсь уделите мне пару минут вашего драгоценного внимания???
Я начинающий "программист", у меня проблема, есть несколько связанных таблиц, используются на разных формах, как удалить запись? просто команда delete подвешивает прогу.
 
B

Barmutik

#2
А нужно произвести каскадное удаление?

Сколько записей в таблице? Какой сервер баз данных? С помощью чего подключаетесь и работаете с базой?
 
K

Kleopatra

#3
Да нужно каскадное удаление, записей в таблице до 1000, использую объект Table таблица Paradox
 
B

Barmutik

#4
Хмм.. ну тогда просто настроить Constraints при удаление из master таблицы из detail удалит автоматически.

Если это вызывает проблемы .. то удалять используя SQL всё ручками...

А на чём конкретно происходит подвисание программы? Просто на таком объёме удаление в пределе должно занимать полсекунды даже для очистки всей таблицы...
 
K

Kleopatra

#5
При удалении выдает сообщение "Master has detail records. Cannot delete or modify" и виснит


Извените за тупость " настроить Constraints" это как и где?
 
B

Barmutik

#6
CONSTRAINTы создаются при создании или изменение таблицы. Они позволяют отслеживать целостность структуры базы данных на уровне сервера СУБД. Т.е на Вашем примере.. при удаление записи из главной таблицы .. все записи из подчинённых таблиц удалятся автоматически. Это очень удобно... но есть одно но (лично для меня)... бывает что не отдающий себе отчёта в том что он делает пользователь может одним Делитом стереть пол базы данных :ph34r:

Для Вашего случая я бы посоветовал бы руками удалить сначала записи из подчинённых таблиц а уж потом из главной ... всё будет просто... B)

На всякий случай привожу синтаксис создания таблицы, там же указывается синnаксис создания Constraints..

CREATE TABLE

Syntax
CREATE TABLE
[ database_name.[ owner ] . | owner. ] table_name
( { < column_definition >
| column_name AS computed_column_expression
| < table_constraint > ::= [ CONSTRAINT constraint_name ] }

| [ { PRIMARY KEY | UNIQUE } [ ,...n ]
)

[ ON { filegroup | DEFAULT } ]
[ TEXTIMAGE_ON { filegroup | DEFAULT } ]

< column_definition > ::= { column_name data_type }
[ COLLATE < collation_name > ]
[ [ DEFAULT constant_expression ]
| [ IDENTITY [ ( seed , increment ) [ NOT FOR REPLICATION ] ] ]
]
[ ROWGUIDCOL]
[ < column_constraint > ] [ ...n ]

< column_constraint > ::= [ CONSTRAINT constraint_name ]
{ [ NULL | NOT NULL ]
| [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
[ WITH FILLFACTOR = fillfactor ]
[ON {filegroup | DEFAULT} ] ]
]
| [ [ FOREIGN KEY ]
REFERENCES ref_table [ ( ref_column ) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[ NOT FOR REPLICATION ]
]
| CHECK [ NOT FOR REPLICATION ]
( logical_expression )
}

< table_constraint > ::= [ CONSTRAINT constraint_name ]
{ [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
{ ( column [ ASC | DESC ] [ ,...n ] ) }
[ WITH FILLFACTOR = fillfactor ]
[ ON { filegroup | DEFAULT } ]
]
| FOREIGN KEY
[ ( column [ ,...n ] ) ]
REFERENCES ref_table [ ( ref_column [ ,...n ] ) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[ NOT FOR REPLICATION ]
| CHECK [ NOT FOR REPLICATION ]
( search_conditions )
}
 
K

Kleopatra

#7
Большое спасибо!
А еще вопрос можно?

Нужно создать отчет и вывести на него данные из связанных таблиц.
Делаю следующее:
1. Разместила QuickRep
2. Поместила 2 объекта Table и 1 DataSourse, таблицы связала между собой. Связала QuickRep с главной таблицей
3. На QuickRep разместила 2 QRBand: один rbDetail второй rbSubDetail и соответственно на каждый объекты для отображения данных

Проблема: из первой таблицы данные отображаются из второй нет.
 
B

Barmutik

#8
Так сходу не видя что бы сделали сложновато сказать.. по идее должно всё работать ..

ДЛя примера рекомендую Вам обратится к примерам по созданию отчётов в QuickReport .. там такие моменты достаточно хорошо освещены...
 
Статус
Закрыто для дальнейших ответов.