Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как избежать повторного ввода данных в базу? [D7, XP]


Страницы:   1 2

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 значение и проводим поиск по базе

И не находим. А оно на самом деле есть. А почему бы ему там не быть ?
И при коммите пишущей транзакции получаем граблями.
Как тебе такая перспектива ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо