Помогите пожалуйста решить проблему с обработкой исклучительных ситуаций в БД. Короче у меня выводится ошибка Key Violation. Короче я понял причину - это повторение полей в primary index(key). Но я немогу сдеать так чтобы при ошибке выводилось мое сообщение а не системное(key violation). Вернее мое выводится единожды а потом только системное. Ниже код. Может использовать глобальный обработчик иск. ситуаций? как? Спасибо!!!
Добрый день, dude ! Скорее всего, ошибка твоя в том, что ты выбрал поле для primary key изменяемым пользователем. И при добавлении/изменении ты это поле изменяешь сам, не смотря на его уникальность. Вообще, для полного вопроса лучше бы ты указал параметры таблицы, а то совершенно непонятно, где у тебя какие индексы и вообще какова структура таблицы?? Могу пока что посоветовать сделать первичным ключом автоинкрементное поле, как ты и хотел в первый раз, а потом к этому полю ВООБЩЕ НИГДЕ не обращаться. Можешь завести себе вторичные индексы по любым полям... Индексы, кстати говоря, штука довольно капризная... При работе paradox-базы по сети BDE сам не обновляет индексы, а база этого сделать не может, если ресурсы используются в это время другим клиентом (при создании базы данных с разделяемыми файлами). У меня уже в написанной базе каждые
два дня появлялась ошибка "index out of date", с которой я так и не смог бороться... Пришлось делать базу не через TTable, а через связку TDataBase+TQuery. Кстати, через TQuery довольно удобно работать - попробуй!
Ответ отправлен: 08.11.2002, 00:40 Отправитель: baldr
Вопрос № 268
Как сделать так чтобы в БД 2 поля вместе взятые были уникальны? Например номер пасспорта и фамилия. Просто мне ныжен такой эффект как от key. Если их нельзя как то обединить с key то скажите как это можно сделать другим методом? Спасибо Вам, эксперты!!
Добрый день, dude! Можно создать и вторичный индекс тоже. Только никто не гарантирует, что он будет уникальным... Вообще, текстовое поле не рекомендуется делать ключом. Я советую делать все же через TQuery - там можно быстро проверить запросом, существует ли такая запись.
Ответ отправлен: 08.11.2002, 00:50 Отправитель: baldr
Вопрос № 270
Здравствуйте эксперты. У меня такой вопрос, как сделать, чтобы визард устанавливал мою программу. Если можно по подробнее. Заранее спасибо.
Доброе время суток, chiv! ===== Pro bono publico, no bloody panico! ===== Желаешь подробный ответ - задавай корректный вопрос. Какой визард ты имеешь в виду? Инсталлятор типа Install Shield, Wise Installer, Windows Installer, Ghost и иже с ними? Если так, то тебе нужно читать документацию по данным установочным пакетам. А если ты про то как его в Дельфе написать, так это тема моей следующей научной диссертации :) Если серьезно, то все зависит от тебя, а методы написания ограничиваются только твоей фантазией...
Ответ отправлен: 12.11.2002, 13:19 Отправитель: Idle Sign
Вопрос № 272
Доброе время суток, эксперты. Необходимо узнать код нажатой кнопки. Как?
Доброе время суток, Chainik! Непонятно, что значит код, но попробуй использовать ActiveControl. Эта функция возвращает много интересной информации об активном элементе.
Ответ отправлен: 12.11.2002, 09:24 Отправитель: Vladimir Отвечает Idle Sign
Приветствую Вас, Chainik! ===== Pro bono publico, no bloody panico! ===== При нажатии клавиши системе отсылается сообщение, его-то и нужно ловить. К примеру Msg: TMessage, тогда msg.LParamLo - модификатор нажатой клавиши (e.g.MOD_CONTROL), а (msg.LParamHi - собственно виртуальный код нажатой клавиши (e.g. VK_ADD).
Ответ отправлен: 12.11.2002, 13:19 Отправитель: Idle Sign
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.