Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Удаляет выделенную в листбоксе строку с базы, но в то же время создает новую, пустую запись в конце таблицы при каждом новом удалении. Не могу уловить логики. От чего при удалении создается пустая запись и как этого избежать?
Попробуйте после команды dbfDeleteRecord применить команду dbfPack.
К сожалению не помогло, по-прежнему, добавляет пустую запись
Добавлено (24 Февраля 2020, 18:15) --------------------------------------------- Вадим, А вот если выводить данные через dbfShowTable, в объект Rectangle, то удаляется нормально без добавления пустой записи. Но не совсем устраивает тот вид в котором эта таблица отображается
Добавлено (24 Февраля 2020, 20:07) --------------------------------------------- Вопрос решен
Желательно конечно было бы описать решение вопроса...
Подозреваю что нужно было добавить команду dbfShowAll после dbfDeleteRecord, хотя вроде бы производится перезагрузка базы данных командой dbfRefresh и тогда по идее одна из команд как бы лишняя.
ЦитатаВадим ()
но в то же время создает новую, пустую запись в конце таблицы при каждом новом удалении.
На сколько мне память не изменяет, какая то проблема была с добавлением новой пустой записи. Обойти это можно например сортировкой базы, после перехода к последней или первой записи (не помню где будет находится пустая запись после сортировки, в начале или конце), проверки существования пустой записи и естественно удаления, если такая существует.
Добавлено (24 Февраля 2020, 22:07) ---------------------------------------------
Цитатаalex_loc ()
Вместо dbfQuery применил dbfFind, перестало добалять пустую строку.
dbfFind найдет только первое совпадение и не факт что это будет то что нужно. Например есть записи:
Сто Стол Столярка
При поиске Сто найдет все три записи, Стол две последние и т.д. А если в базе несколько одинаковых записей? И нужно удалить вторую по списку?
Для удаления лучше всего использовать только выделенную запись, или все соответствующие поиску.
Добавлено (24 Февраля 2020, 22:15) ---------------------------------------------
Цитатаalex_loc ()
Не могу уловить логики. От чего при удалении создается пустая запись
Опять же, на сколько мне память позволяет...
Когда поиск производится командой dbfQuery, выводятся только те записи которые соответствуют запросу. Новая пустая строка добавляется по моему по умолчанию всегда, для дальнейшего редактирования (добавления) данных. В итоге при отмене поиска и вывода всех строк данные базы обновляются автоматически, пустая строка в базе как бы закрепляется и получается что при каждом удалении добавляется новая строка.
При использовании dbfFind, данные базы не обновляются и пустая строка при каждом удалении не добавляется постоянно а остается в единичном исполнении. Не хочешь читать хелп?
Для удаления лучше всего использовать только выделенную запись, или все соответствующие поиску.
В том и дело, что dbfQuery и dbfFind применял для удаления выделенного пунка в листбоксе Одна команда удаляет выделенную строку и добавляет в конец пустую, а вторая работает как надо без добавления пустой строки. Глюк?
Ну наверно можно сказать и так. Я чуть выше описал из за чего это. Возможно разработчики упустили этот момент. Я уже не помню, поднимал на оффоруме этот вопрос или нет. Со временем я на другой плагин перешел, у него возможностей больше и не помню всех тонкостей. Хотя у платного плагина по моему то же самое происходит, хотя точно не уверен. По этому вряд ли это глюк. Не хочешь читать хелп?