Как правильно удалять записи из таблицы? Остается пустая строка!!!
Помогите с удалением записей из таблицы.
Таблица Paradox.
Добавляю записи при помощи Append.
Когда удаляю из таблицы последнюю запись ВСЕГДА остается пустая запись в таблице и никак не удаляется. Все бы ничего, но когда снова заполняешь таблицу эта запись остается пустой и далее.
Из-за чего такое может быть. Удаляю записи Table->Delete();
Сохраняю Post().
Очень прошу помочь. Очень надоела сия бяка!
Из-за чего такое может быть. Удаляю записи Table->Delete();
Если данные отображаются через TDBGrid, надо иметь в виду, что он всегда отображает хотя бы одну строку, даже если нет данных. Наличие или отсутствие данных можно проверить вызовом метода RecordCount() таблицы.
Если данные отображаются через TDBGrid, надо иметь в виду, что он всегда отображает хотя бы одну строку, даже если нет данных. Наличие или отсутствие данных можно проверить вызовом метода RecordCount() таблицы.
Спасибо за ответ, но наверное я не совсем верно сформулировал вопрос. Дело в том что пустая запись остается в таблице и при просмотре ее в Database Desktop она видна как запись в таблице! Как раз DB Grid корректно отображает что записей нет.
Более того, я проверяю
if (DM1->Table->RecordCount < 1)
DeleteBtn->Enabled = false;
то есть гашу кнопку "удалить запись" если таблица пуста (не знаю насколько корректно проверяю, но работает) и кнопка гасится, то есть записей в таблице больше нет.
Но главная проблема, что когда я снова начинаю заполнять таблицу (добавляю первую запись), то выскакивает "Key violation" так не заполнено поле первичного ключа в той самой пустой записи!
Если можно хотя бы подскажите как наиболее корректно добавлять и удалять записи. Может что с этим я мудрю. Сейчас я не могу полностью удалять записи из таблицы, приходится всегда оставлять одну строчку. Может быть никогда и не возникнет ситуация, когда не будет в таблице ни одной записи, но как то неполноценно чувствую себя зная что есть такая, на первый взгляд ерундовая, ошибка.
terega
Дело в том что пустая запись остается в таблице и при просмотре ее в Database Desktop она видна как запись в таблице! Как раз DB Grid корректно отображает что записей нет.
При наличии отсутствия вирусов и прочих злонамеренных программ и черных духов в операционной системе метод Delete() таблицы работает корректно, и удаляет записи верно. Следовательно, если RecordCount() показывает, что записей нет, их действительно нет. Может быть, проблема в DBD, сам я им практически не пользовался предпочитая SQL Explorer. Он использует привычный грид, и правила отображения для него те же.
В твоем случае также можно сделать предположение о наличии фильтра записей таблицы при редактировании ее из программы. Ничего другое в голову просто не приходит.
После собственно удаления строки:
Table1->Edit();
Table1->Delete();
находилось следующее:
Table1->Edit();
Table1->Post();
Вот сей Post и мешал. Все работает хорошо. Надеюсь что удаленные записи будут пропадать бесследно :-)
Спасибо за мысли, поэкспериментировал зато по полной.