Войти
NeoBooker.ru
Добро пожаловать к нам в гости!
Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
  • Страница 1 из 1
  • 1
Модератор форума: Peter, DEMBEL, YURIY  
Проблема с удалением записи
alex_locДата: Пт, 21 Февраля 2020, 11:21 | Сообщение # 1
Новичок
Доброго дня!
Проблема следующего характера:

MessageBox "Удаление" "Удалить запись?" "Да|Нет" "[Result]"

If "[Result]" "=" "1"
dbfQuery "sprav-vidrab.dbf" "vidrab==[ListBox24]"
dbfDeleteRecord "sprav-vidrab.dbf"
EndIf
dbfRefresh "sprav-vidrab.dbf"
dbfFieldToVar "sprav-vidrab.dbf" "vidrab" "[vidrab]" "NoBlanks"

Удаляет выделенную в листбоксе строку с базы, но в то же время создает новую, пустую запись в конце таблицы при каждом новом удалении.
Не могу уловить логики. От чего при удалении создается пустая запись и как этого избежать? help help
 
СообщениеДоброго дня!
Проблема следующего характера:

MessageBox "Удаление" "Удалить запись?" "Да|Нет" "[Result]"

If "[Result]" "=" "1"
dbfQuery "sprav-vidrab.dbf" "vidrab==[ListBox24]"
dbfDeleteRecord "sprav-vidrab.dbf"
EndIf
dbfRefresh "sprav-vidrab.dbf"
dbfFieldToVar "sprav-vidrab.dbf" "vidrab" "[vidrab]" "NoBlanks"

Удаляет выделенную в листбоксе строку с базы, но в то же время создает новую, пустую запись в конце таблицы при каждом новом удалении.
Не могу уловить логики. От чего при удалении создается пустая запись и как этого избежать? help help

Автор - alex_loc
Дата добавления - 21 Февраля 2020 в 11:21
ВадимДата: Вс, 23 Февраля 2020, 18:46 | Сообщение # 2
Генератор идей
Доброго времени, Александр!

Попробуйте после команды dbfDeleteRecord применить команду dbfPack.


Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
 
СообщениеДоброго времени, Александр!

Попробуйте после команды dbfDeleteRecord применить команду dbfPack.

Автор - Вадим
Дата добавления - 23 Февраля 2020 в 18:46
alex_locДата: Пн, 24 Февраля 2020, 08:53 | Сообщение # 3
Новичок
Цитата Вадим ()
Попробуйте после команды dbfDeleteRecord применить команду dbfPack.

К сожалению не помогло, по-прежнему, добавляет пустую запись wall

Добавлено (24 Февраля 2020, 18:15)
---------------------------------------------
Вадим, А вот если выводить данные через dbfShowTable, в объект Rectangle, то удаляется нормально без добавления пустой записи.
Но не совсем устраивает тот вид в котором эта таблица отображается

Добавлено (24 Февраля 2020, 20:07)
---------------------------------------------
Вопрос решен

 
Сообщение
Цитата Вадим ()
Попробуйте после команды dbfDeleteRecord применить команду dbfPack.

К сожалению не помогло, по-прежнему, добавляет пустую запись wall

Добавлено (24 Февраля 2020, 18:15)
---------------------------------------------
Вадим, А вот если выводить данные через dbfShowTable, в объект Rectangle, то удаляется нормально без добавления пустой записи.
Но не совсем устраивает тот вид в котором эта таблица отображается

Добавлено (24 Февраля 2020, 20:07)
---------------------------------------------
Вопрос решен


Автор - alex_loc
Дата добавления - 24 Февраля 2020 в 08:53
ВадимДата: Пн, 24 Февраля 2020, 21:34 | Сообщение # 4
Генератор идей
Александр, а как Вы раньше выводили данные? Я обычно использую команду dbpShowGrid. Такую проблему с добавлением строки не наблюдал.

В чем была причина и найденное решение?


Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
 
СообщениеАлександр, а как Вы раньше выводили данные? Я обычно использую команду dbpShowGrid. Такую проблему с добавлением строки не наблюдал.

В чем была причина и найденное решение?

Автор - Вадим
Дата добавления - 24 Февраля 2020 в 21:34
alex_locДата: Пн, 24 Февраля 2020, 21:51 | Сообщение # 5
Новичок
Цитата Вадим ()
dbpShowGrid

Имеете ввиду dbfShowTable ?
Вместо dbfQuery применил dbfFind, перестало добалять пустую строку.
 
Сообщение
Цитата Вадим ()
dbpShowGrid

Имеете ввиду dbfShowTable ?
Вместо dbfQuery применил dbfFind, перестало добалять пустую строку.

Автор - alex_loc
Дата добавления - 24 Февраля 2020 в 21:51
mishemДата: Пн, 24 Февраля 2020, 22:00 | Сообщение # 6
Эксперт форума
Цитата alex_loc ()
Вопрос решен

Желательно конечно было бы описать решение вопроса...

Подозреваю что нужно было добавить команду dbfShowAll после dbfDeleteRecord, хотя вроде бы производится перезагрузка базы данных командой dbfRefresh и тогда по идее одна из команд как бы лишняя.

Цитата Вадим ()
но в то же время создает новую, пустую запись в конце таблицы при каждом новом удалении.

На сколько мне память не изменяет, какая то проблема была с добавлением новой пустой записи. Обойти это можно например сортировкой базы, после перехода к последней или первой записи (не помню где будет находится пустая запись после сортировки, в начале или конце), проверки существования пустой записи и естественно удаления, если такая существует.

Добавлено (24 Февраля 2020, 22:07)
---------------------------------------------

Цитата alex_loc ()
Вместо dbfQuery применил dbfFind, перестало добалять пустую строку.

dbfFind найдет только первое совпадение и не факт что это будет то что нужно. Например есть записи:

Сто
Стол
Столярка

При поиске Сто найдет все три записи, Стол две последние и т.д.
А если в базе несколько одинаковых записей? И нужно удалить вторую по списку?

Для удаления лучше всего использовать только выделенную запись, или все соответствующие поиску.

Добавлено (24 Февраля 2020, 22:15)
---------------------------------------------

Цитата alex_loc ()
Не могу уловить логики. От чего при удалении создается пустая запись

Опять же, на сколько мне память позволяет...

Когда поиск производится командой dbfQuery, выводятся только те записи которые соответствуют запросу. Новая пустая строка добавляется по моему по умолчанию всегда, для дальнейшего редактирования (добавления) данных. В итоге при отмене поиска и вывода всех строк данные базы обновляются автоматически, пустая строка в базе как бы закрепляется и получается что при каждом удалении добавляется новая строка.

При использовании dbfFind, данные базы не обновляются и пустая строка при каждом удалении не добавляется постоянно а остается в единичном исполнении.


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Цитата alex_loc ()
Вопрос решен

Желательно конечно было бы описать решение вопроса...

Подозреваю что нужно было добавить команду dbfShowAll после dbfDeleteRecord, хотя вроде бы производится перезагрузка базы данных командой dbfRefresh и тогда по идее одна из команд как бы лишняя.

Цитата Вадим ()
но в то же время создает новую, пустую запись в конце таблицы при каждом новом удалении.

На сколько мне память не изменяет, какая то проблема была с добавлением новой пустой записи. Обойти это можно например сортировкой базы, после перехода к последней или первой записи (не помню где будет находится пустая запись после сортировки, в начале или конце), проверки существования пустой записи и естественно удаления, если такая существует.

Добавлено (24 Февраля 2020, 22:07)
---------------------------------------------

Цитата alex_loc ()
Вместо dbfQuery применил dbfFind, перестало добалять пустую строку.

dbfFind найдет только первое совпадение и не факт что это будет то что нужно. Например есть записи:

Сто
Стол
Столярка

При поиске Сто найдет все три записи, Стол две последние и т.д.
А если в базе несколько одинаковых записей? И нужно удалить вторую по списку?

Для удаления лучше всего использовать только выделенную запись, или все соответствующие поиску.

Добавлено (24 Февраля 2020, 22:15)
---------------------------------------------

Цитата alex_loc ()
Не могу уловить логики. От чего при удалении создается пустая запись

Опять же, на сколько мне память позволяет...

Когда поиск производится командой dbfQuery, выводятся только те записи которые соответствуют запросу. Новая пустая строка добавляется по моему по умолчанию всегда, для дальнейшего редактирования (добавления) данных. В итоге при отмене поиска и вывода всех строк данные базы обновляются автоматически, пустая строка в базе как бы закрепляется и получается что при каждом удалении добавляется новая строка.

При использовании dbfFind, данные базы не обновляются и пустая строка при каждом удалении не добавляется постоянно а остается в единичном исполнении.

Автор - mishem
Дата добавления - 24 Февраля 2020 в 22:00
alex_locДата: Пн, 24 Февраля 2020, 22:19 | Сообщение # 7
Новичок
Цитата mishem ()
Для удаления лучше всего использовать только выделенную запись, или все соответствующие поиску.

В том и дело, что dbfQuery и dbfFind применял для удаления выделенного пунка в листбоксе
Одна команда удаляет выделенную строку и добавляет в конец пустую, а вторая работает как надо без добавления пустой строки. Глюк? dont_know
 
Сообщение
Цитата mishem ()
Для удаления лучше всего использовать только выделенную запись, или все соответствующие поиску.

В том и дело, что dbfQuery и dbfFind применял для удаления выделенного пунка в листбоксе
Одна команда удаляет выделенную строку и добавляет в конец пустую, а вторая работает как надо без добавления пустой строки. Глюк? dont_know

Автор - alex_loc
Дата добавления - 24 Февраля 2020 в 22:19
mishemДата: Пн, 24 Февраля 2020, 22:31 | Сообщение # 8
Эксперт форума
Цитата alex_loc ()
Глюк?

Ну наверно можно сказать и так. Я чуть выше описал из за чего это. Возможно разработчики упустили этот момент. Я уже не помню, поднимал на оффоруме этот вопрос или нет. Со временем я на другой плагин перешел, у него возможностей больше и не помню всех тонкостей. Хотя у платного плагина по моему то же самое происходит, хотя точно не уверен. По этому вряд ли это глюк.


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Цитата alex_loc ()
Глюк?

Ну наверно можно сказать и так. Я чуть выше описал из за чего это. Возможно разработчики упустили этот момент. Я уже не помню, поднимал на оффоруме этот вопрос или нет. Со временем я на другой плагин перешел, у него возможностей больше и не помню всех тонкостей. Хотя у платного плагина по моему то же самое происходит, хотя точно не уверен. По этому вряд ли это глюк.

Автор - mishem
Дата добавления - 24 Февраля 2020 в 22:31
ВадимДата: Вт, 25 Февраля 2020, 13:57 | Сообщение # 9
Генератор идей
Цитата alex_loc ()
Имеете ввиду dbfShowTable ?

Нет, именно dbpShowGrid, а dbfShowTable я вообще ещё в своих программах не использовал кажется.

Для удаления записи использую обычно такую подпрограмму:

Добавлено (25 Февраля 2020, 13:59)
---------------------------------------------
А, я не обратил внимание, я то про плагин NeoBookDBPro пишу :)

Добавлено (25 Февраля 2020, 14:19)
---------------------------------------------

Цитата mishem ()
По этому вряд ли это глюк.

Я тоже не думаю, что это глюк. Скорее всего особенность работы с базой.

Можно попробовать после удаления записи находить пустую строку и удалять её.
Прикрепления: 0890456.png (128.9 Kb)


Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)

Сообщение отредактировано
Вадим - Вт, 25 Февраля 2020, 13:58
 
Сообщение
Цитата alex_loc ()
Имеете ввиду dbfShowTable ?

Нет, именно dbpShowGrid, а dbfShowTable я вообще ещё в своих программах не использовал кажется.

Для удаления записи использую обычно такую подпрограмму:

Добавлено (25 Февраля 2020, 13:59)
---------------------------------------------
А, я не обратил внимание, я то про плагин NeoBookDBPro пишу :)

Добавлено (25 Февраля 2020, 14:19)
---------------------------------------------

Цитата mishem ()
По этому вряд ли это глюк.

Я тоже не думаю, что это глюк. Скорее всего особенность работы с базой.

Можно попробовать после удаления записи находить пустую строку и удалять её.

Автор - Вадим
Дата добавления - 25 Февраля 2020 в 13:57
  • Страница 1 из 1
  • 1
Поиск: