Вопрос № 83227: Добрый день, уважаемые Эксперты!
Пользуюсь IBExpert. Создаю две таблицы:
Первая:
M_ID - Integer //(первичный ключ)
M_FAM - Varchar(30) //(Фамилия)
M_IM - Varchar(30) //(Имя)
M_AD - Integer //(Ссылка на вторую таблицу)
Втор...Вопрос № 83265: Здравствуйте.
Необходимо выбрать из таблицы"А" все строки по полю "DATA" которые соответствуют условию:
текущая дата в формате mm.yyyy(без числа) - значение из поля "DATA" в таком же формате = 5 лет.
В БД зна...Вопрос № 83277: Здравствуйте. Возникда такая ситуация, пытаюсь програмно задать столбцу некое значение (SQL Server 2000)
DataServer.tlOutputtype_msg.Value:=2;
тип столбца SmallInt. Программа запускается, а при нажатии на кнопку (задается параметр столбца), ...
Вопрос № 83.227
Добрый день, уважаемые Эксперты!
Пользуюсь IBExpert. Создаю две таблицы:
Первая:
M_ID - Integer //(первичный ключ)
M_FAM - Varchar(30) //(Фамилия)
M_IM - Varchar(30) //(Имя)
M_AD - Integer //(Ссылка на вторую таблицу)
Вторая:
A_ID - Integer // (первичный ключ = ссылка на M_AD из первой таблицы)
A_UL - Varchar(30) //(улица)
A_DOM - Varchar(10) //(дом)
Как практически в IBExppert-е организовать "каскадное" удаление записей? При удалении записи из первой таблицы что б удалялась соотв. запись из второй таблицы.
Такое каскадное удаление нужно делать на сервере IB или как то "обыгрывать" его в клиентском приложении (D7).
Отвечает: Проходящий Мимо
Здравствуйте, Дмитрий Александрович!
Рекомендую создать для второй таблицы уникальный первичный ключ. Вообще-то Вы неправильно построили зависимости между таблицами, по Вашему примеру вторая таблица - главная, а первая - подчиненная.
Переделать нужно так:
В IBExpert можно сделать в визуальном интерфейсе следующее (если он у Вас русифицирован):
1. в параметрах второй таблицы зайти на закладку "Ограничение" подзакладку "Внешние ключи"
2. Клавиша Ins (Новый внешний ключ)
3. В поле "На поле" задать A_AD
4. В поле "Внешняя таблица" задать имя главной таблицы М
5. В поле "Внешнее поле" задать M_ID - первичный ключ главной таблицы М
6. В поле "Правило удаления" задать CASCADE
7. Перейти на закладку "Поля", при вопросе сохранения сказать Да
8. Напротив записи A_AD в поле ВК появится ключик с буквой F
При помощи запроса можно сделать так:
ALTER TABLE А -- название зависимой таблицы
ADD CONSTRAINT FK_ A_AD -- название внешнего ключа
FOREIGN KEY (A_AD)
REFERENCES M (M_ID) -- название главной таблицы и ее перв. ключ
ON DELETE CASCADE; --удаляем каскадно все записи вторичной таблицы при удалении записи главной таблицы
Удачи!
--------- Carpe diem!
Ответ отправил: Проходящий Мимо (статус: 8-ой класс)
Ответ отправлен: 19.04.2007, 11:56 Оценка за ответ: 5 Комментарий оценки: Огромное спасибо!
Вопрос № 83.265
Здравствуйте.
Необходимо выбрать из таблицы"А" все строки по полю "DATA" которые соответствуют условию:
текущая дата в формате mm.yyyy(без числа) - значение из поля "DATA" в таком же формате = 5 лет.
В БД значение поля "DATA" записано в формате дд.мм.гггг
Помогите пожалуйста составить SQL запрос.
Как правило это делается встроенными функциями Базы Данных.
Например, для MSSQL7 :
Month(date) - месяц
YEAR(date) - год
GETDATE() -- текущая дата
запрос в приложении (проверен на MSSQL7)
Приложение:
--------- Пусть все будет хорошо! Давайте жить дружно! :) И будет жить еще лучше!
Ответ отправил: LanK (статус: Студент)
Ответ отправлен: 19.04.2007, 13:44
Вопрос № 83.277
Здравствуйте. Возникда такая ситуация, пытаюсь програмно задать столбцу некое значение (SQL Server 2000)
DataServer.tlOutputtype_msg.Value:=2;
тип столбца SmallInt. Программа запускается, а при нажатии на кнопку (задается параметр столбца), возникает следующая ошибка:
EDataBaseError with message 'tlOutput cannot perform this operation on a closed dataset'
Подскажите пожалуйсто, в чем может быть дело?
Заранее огромное спасибо...
Отправлен: 19.04.2007, 14:30
Вопрос задал: Глеб (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Jakoni
Здравствуйте, Глеб!
попробуйте так
Но может я ошыбаюсь
Приложение:
Ответ отправил: Jakoni (статус: 1-ый класс)
Ответ отправлен: 19.04.2007, 14:38
Отвечает: din
Здравствуйте, Глеб!
Ответ дает самое исключение:
"EDataBaseError with message 'tlOutput cannot perform this operation on a closed dataset'"
Данная операция не применима для закрытого набора данных. Сделайте DataServer.Open;
--------- Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: din (статус: Практикант)
Ответ отправлен: 19.04.2007, 14:44