Top.Mail.Ru
Ответы

C++Builder не пойму в чем проблема...

есть таблица бд,поле Kat уникальное.В билдере в баттон клик прописываю
try
{
Table1->Edit();
Table1->FieldValues["Kat"]=DBEdit1->Text
Table1->Post();
}
catch(...)
{
Application->MessageBox("","",MB_OK|MB_ICONWARNING);
Form1->Close();
}

при первом запуске программы - работает нормально,но при повторном запуске - не появляется сообщение об ошибке и в бд записываются неуникальные значения...уже не знаю что делать...(

По дате
По рейтингу
Аватар пользователя
Новичок
13лет

А правильно ли состряпана БД?
там ведь четко нужно выносить отдельно ключи и связки чтоб дублей не было (учи реляционную алгебру, блин)
А все эти "Табле1 - > " Это просто поделки на простейшие случаи

Аватар пользователя
13лет

код по логике не верен.

try
{
Table1->Edit(); ///открыли для редактирования
тут надо дать человеку ввести чтото, DBEdit уже связан с полем данное присваивание не имеет смысла
Table1->FieldValues["Kat"]=DBEdit1->Text

тут можно вызвать окно редактирования
после его закрытия делаем РОСТ
Table1->Post();
}
catch(...)
{
Application->MessageBox("","",MB_OK|MB_ICONWARNING); сообщение это хорошо но закрывать форму сразу плохо.
Может я желаю исправить неверные данные.
Form1->Close();
}

Аватар пользователя
13лет

Странно. . Ничего в голову не приходит кроме одного :
1) Сделай программу так как она должна быть перед первым запуском.
2) В опциях проекта убери галочки use dynamic rtl, и runtime lib's.
3) Сохрани проект и модули.
4) Запускай прогу.
5) Закрой прогу опять всё сохрани.
6) Выходи из билдера
7) Попробуй просто exe-файл позапускать

Источник: P.S бывает среда глючит и без перезагрузки компа отказывается корректно работать. У меня так было.
Аватар пользователя
Искусственный Интеллект
13лет

Где-то что-то не закрываешь.