Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Базы данных и репортинг > Удаление выделенной строки из DBGrig через DataSet |
Автор: FOLGA 19.4.2010, 08:46 | ||
Всем здравствуйте! Вопрос следующего характера: нужно из DBGrid`а удалить выделенную строку. Где-то прочитала, что для этого достаточно поставить в Options DBGrid`а dgRowSelected в true и прописать код:
Но почему-то это не работает, он удаляет все записи из таблицы. Не подскажете, чего не хвататет? |
Автор: Данкинг 19.4.2010, 09:38 |
former, а чем "if not DBGrid1.DataSource.DataSet.Eof"-то мешает? Видимо, торможу. ![]() |
Автор: former 19.4.2010, 10:13 |
Данкинг, не-е-е, это видимо я торможу. ![]() |
Автор: casinosoftguru 19.4.2010, 10:53 |
еще можно DataController.DeleteFocused |
Автор: former 19.4.2010, 11:38 |
![]() |
Автор: Deniz 19.4.2010, 11:48 |
а это еще из какой оперы? |
Автор: FOLGA 19.4.2010, 13:43 |
Ну так что же мне делать-то? Причем при нажатии кнопки все работает нормально, а при повторном открытии приложения база "пустеет"... ![]() |
Автор: Frees 19.4.2010, 13:45 |
какие компоненты доступа используешь? |
Автор: FOLGA 19.4.2010, 13:54 |
Frees, IBdataBase, IBDataSet, IBDataSource, IBDataTransaction, база FireBird 2.1 |
Автор: Данкинг 19.4.2010, 13:59 |
FOLGA, если FB, то удаляй запросом лучше. Он ИМХО всё же лучше под запросы заточен. Добавлено через 45 секунд Ну так из-за этого же вся таблица точно удаляться не будет. ![]() |
Автор: FOLGA 19.4.2010, 14:03 | ||
А это как? (теперь можете долго кричать и ругаться) |
Автор: Данкинг 19.4.2010, 14:13 |
Это через IbQuery, только в таблице необходимо уникальное поле для условия запроса (where...) Прочитай любую книгу по работе с БД (необязательно FB). Суть работы запросов везде одинакова. Да и на форуме примеров масса. ![]() Добавлено через 1 минуту и 6 секунд Да и в любом случае метод Dataset.Delete не должен очищать всю таблицу. Он или удаляет активную запись, или же вообще не работает. ![]() |
Автор: Frees 19.4.2010, 14:24 | ||
TIBDataSet говоришь, а что у тебя в нем в DeleteSql написано? сдается мне что там условия нет... Добавлено через 3 минуты и 51 секунду
это зависит от того какой запрос на удаление написан |
Автор: Данкинг 19.4.2010, 14:34 |
Возможно, я просто с FB обычно использую IbQuery и всё. Зачем там датасеты всякие? |
Автор: Frees 19.4.2010, 14:40 |
ну я вообщето на фибах их использую, но если они аналогичны, то все запросы Update insert delet select в одном объекте и операции с набором данных становится проще, и можно использовать ДБ аваре компоненты |
Автор: former 19.4.2010, 14:44 |
Скорее всего в запросе на удаление косяк. Наверняка отсутствует условие where. |
Автор: Данкинг 19.4.2010, 15:01 |
В общем, код в студию. Без него причина косяка понятна не будет. |
Автор: FOLGA 19.4.2010, 15:03 | ||
Frees, да, там его и правда не было... дописала вот так:
выдает ошибку выполнения арифметической операции... |
Автор: Данкинг 19.4.2010, 15:09 |
Во-первых, слово "driver" нигде не зарезервировано? Во-вторых (начинаю ругаться): млин, в натуре, почему нельзя запросы писать непосредственно в коде, а не в свойствах компонентов? ![]() Добавлено через 25 секунд Java на вас нет. ![]() |
Автор: former 19.4.2010, 15:20 | ||||
Запрос должен быть таким:
(Проверь driver) А дальше читай про работу с параметрами запроса.
Данкинг, много разных за и против. |
Автор: FOLGA 19.4.2010, 15:26 | ||||
Вот так заработало. Спасибо!!! ![]() |
Автор: Данкинг 19.4.2010, 16:08 |
"За" и "против" - это понятно, только чем больше ручной работы, тем лучше понимаешь сам процесс. ![]() |
Автор: former 19.4.2010, 17:52 |
Что бы лучше понимать процесс, нужно книжки, мануалы и статьи читать, пользоваться DRKB и поиском по форуму. ![]() |