C++Builder не пойму в чем проблема...
есть таблица бд,поле Kat уникальное.В билдере в баттон клик прописываю
try
{
Table1->Edit();
Table1->FieldValues["Kat"]=DBEdit1->Text
Table1->Post();
}
catch(...)
{
Application->MessageBox("","",MB_OK|MB_ICONWARNING);
Form1->Close();
}
при первом запуске программы - работает нормально,но при повторном запуске - не появляется сообщение об ошибке и в бд записываются неуникальные значения...уже не знаю что делать...(
А правильно ли состряпана БД?
там ведь четко нужно выносить отдельно ключи и связки чтоб дублей не было (учи реляционную алгебру, блин)
А все эти "Табле1 - > " Это просто поделки на простейшие случаи
код по логике не верен.
try
{
Table1->Edit(); ///открыли для редактирования
тут надо дать человеку ввести чтото, DBEdit уже связан с полем данное присваивание не имеет смысла
Table1->FieldValues["Kat"]=DBEdit1->Text
тут можно вызвать окно редактирования
после его закрытия делаем РОСТ
Table1->Post();
}
catch(...)
{
Application->MessageBox("","",MB_OK|MB_ICONWARNING); сообщение это хорошо но закрывать форму сразу плохо.
Может я желаю исправить неверные данные.
Form1->Close();
}
Странно. . Ничего в голову не приходит кроме одного :
1) Сделай программу так как она должна быть перед первым запуском.
2) В опциях проекта убери галочки use dynamic rtl, и runtime lib's.
3) Сохрани проект и модули.
4) Запускай прогу.
5) Закрой прогу опять всё сохрани.
6) Выходи из билдера
7) Попробуй просто exe-файл позапускать
Где-то что-то не закрываешь.