![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как избежать повторного ввода данных в базу? [D7, XP]
unknow © (2010-08-11 14:10:00)Здравствуйте Мaстера Delphi! Помогите решить такую проблему.
Имеется база подшипников. Ввод данных выполняется через DBGrid.
При добавлении записи необходимо делать проверку - не введен ли уже такой подшипник, если в базе (Interbase) уже имеется такой подшипник, то должно выдаваться соответствующее сообщение. Я представляю процесс так: берем только что введенное в DBGrid значение и проводим поиск по базе, если такое значение есть - выдается сообщение, если нет - происходит запись в базу. вопрос в том, где взять то значение, которое будем искать, в каком свойстве DBGrid оно находится.
12 (2010-08-16 16:02:00) [21]
> А как теперь эту ошибку обработать, чтобы выдавалось сообщение
> на русском
не надо менять - добавь свое. см sniknik © (16.08.10 15:36) [11]
try
бла-бла
except
on E:Exception do
begin
E.Message := E.Message + #13#10 + 'я думаю, что ошибка такая-то, для исправления надо сделать то-то';
Raise;
end;
end;
> Ввожу данные в DBGrid, нажимаю в навигаторе сохранить данные
> (Button1 - закрывает форму)
данные в DBGrid отсутствуют см Ega23 © (11.08.10 14:47) [2]
с DBGrid связан dataset - вот на его события (onUpdate|insert и т.п.)и вешать
sniknik (2010-08-16 15:36:00) [22]> чтобы выдавалось сообщение на русском.
а вот этого не надо... сам себе проблем наделаешь. сопровождать программы с "самопереведенными ексептами" практически невозможно (ну, вернее если бы это делали грамотно, и заменяли бы сообщение только одного, а то меняют у всего класса, а то и вообще всего отловленного).
unknow (2010-08-16 15:23:00) [23]У меня на форме DBGrid, Navigator и Button1.
Ввожу данные в DBGrid, нажимаю в навигаторе сохранить данные (Button1 - закрывает форму)
Как такового кода для записи в базу нет. Или он сгенерирован, но я не знаю где.
Anatoly Podgoretsky (2010-08-16 15:08:00) [24]В том месте где производится запись с базу
unknow (2010-08-16 15:01:00) [25]Что try except я знаю, только не соображу никак где именно это применить
Anatoly Podgoretsky (2010-08-16 14:41:00) [26]> unknow (16.08.2010 14:26:06) [6]
try except
unknow (2010-08-16 14:26:00) [27]
> И ничего искать не надо, сервер БД сам все проверит и сам
> все найдет, автоматически. Если такая запись уже имеется,
> выдаст ошибку, а дубль не вставит.
Спасибо за ответы. Сделал - ошибку выдает. А как теперь эту ошибку обработать, чтобы выдавалось сообщение на русском.
Юрий Зотов (2010-08-11 18:07:00) [28]
> unknow (11.08.10 14:10)
См. [4]. И ничего искать не надо, сервер БД сам все проверит и сам все найдет, автоматически. Если такая запись уже имеется, выдаст ошибку, а дубль не вставит.
Sergey13 (2010-08-11 15:07:00) [29]> [0] unknow (11.08.10 14:10)
Поставь уникальный индекс на поле (или группу полей), по которому считается, что "уже имеется такой подшипник".
Jeer (2010-08-11 14:56:00) [30]
> Ega23 © (11.08.10 14:47) [2]
>
> В DBGrid нет никаких данных.
Ты покусился на "святое" - юзеры их там видят ? Видят. Значит они там есть !
Все остальное - происки недоразвитых программистов :)
Ega23 (2010-08-11 14:47:00) [31]В DBGrid нет никаких данных.
Сергей М. (2010-08-11 14:22:00) [32]> берем только что введенное в DBGrid значение и проводим поиск по базе
И не находим. А оно на самом деле есть. А почему бы ему там не быть ?
И при коммите пишущей транзакции получаем граблями.
Как тебе такая перспектива ?