Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как в dbgrid удалить строку с известным номером, как в dbgrid удалить строку с известным  
:(
    Опции темы
blackDancer
Дата 29.4.2009, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 23.1.2009
Где: Тамбов

Репутация: нет
Всего: нет



как в dbgrid удалить строку с известным номером?

Код

GridMap->DataSource->DataSet->Delete();


не работает

Это сообщение отредактировал(а) blackDancer - 29.4.2009, 21:11
PM MAIL   Вверх
Alca
Дата 29.4.2009, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



давай больше кода


--------------------
PM WWW ICQ Skype Jabber   Вверх
Данкинг
Дата 29.4.2009, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(blackDancer @  29.4.2009,  22:09 Найти цитируемый пост)
как в dbgrid удалить строку с известным номером?

В DBGrid- никак. smile Не устану этого повторять. smile 

Цитата(blackDancer @  29.4.2009,  22:09 Найти цитируемый пост)
не работает

Почему не работает? Этот код должен удалять ту строку, которая активна в Dataset.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
blackDancer
Дата 29.4.2009, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 23.1.2009
Где: Тамбов

Репутация: нет
Всего: нет



Цитата(Alca @ 29.4.2009,  23:38)
давай больше кода

Какой нафик код.
Как удалить в dbgrid строку с известным номером?
Какой тут может быть код я просто привёл пример что так не работает.
Есть dbgrid  в нём что то есть надо удалить например третью строку и всё. Как? smile  
PM MAIL   Вверх
Alca
Дата 29.4.2009, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



а DBNavigator удаляет?


--------------------
PM WWW ICQ Skype Jabber   Вверх
Данкинг
Дата 29.4.2009, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(blackDancer @  30.4.2009,  00:44 Найти цитируемый пост)
Есть dbgrid  в нём что то есть надо удалить например третью строку и всё. Как? 

Третью строку Dataset' а надо удалить? Дык:
Код

Dataset->Recno()=3;
DataSet->Delete();



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Alca
Дата 29.4.2009, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Если надо удалять неактивную запись, то надо юзать SQL.

Добавлено через 1 минуту и 7 секунд
Либо бегать по датасету 

Это сообщение отредактировал(а) Alca - 29.4.2009, 23:50


--------------------
PM WWW ICQ Skype Jabber   Вверх
Dmi3ev
Дата 30.4.2009, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



Код

        if (ADOQuery1->RecordCount>0)
                ADOQuery1->Delete();
        else
                MessageBox(NULL, "Таблица пуста! Удаление невозможно!", "Сообщение", MB_OK);

У тебя тоже самое! Но это удалит ту запись, на которой, в данный момент бегунок...

Это сообщение отредактировал(а) Dmi3ev - 30.4.2009, 00:41


--------------------

PM MAIL   Вверх
SAnatoliy
Дата 30.4.2009, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 1.10.2007

Репутация: нет
Всего: нет



У меня работает так. при выделении строк/и.

 if(DBGrid1->SelectedRows) { DBGrid1->SelectedRows->Delete(); }
             else { ShowMessage("Выделите запись"); }
PM MAIL   Вверх
blackDancer
Дата 30.4.2009, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 23.1.2009
Где: Тамбов

Репутация: нет
Всего: нет



Код

        GridMap->DataSource->DataSet->First();  
        while(!GridMap->DataSource->DataSet->Eof)   
        {
                GridMap->DataSource->DataSet->Delete();
                GridMap->DataSource->DataSet->Next();      
        }


Делаю вот так при вызове данной функции прога виснет?
PM MAIL   Вверх
Alca
Дата 30.4.2009, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



 smile 


--------------------
PM WWW ICQ Skype Jabber   Вверх
Лапоть
Дата 30.4.2009, 11:28 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 3.4.2009

Репутация: 1
Всего: 2



Цитата(Данкинг @  30.4.2009,  00:43 Найти цитируемый пост)
В DBGrid- никак.  Не устану этого повторять
Блин! Ну когда ж этот перец (да и не только он) поймёт, что в гриде данные только отображаются! smile 

PM MAIL   Вверх
Данкинг
Дата 30.4.2009, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(blackDancer @  30.4.2009,  12:14 Найти цитируемый пост)
Делаю вот так при вызове данной функции прога виснет? 

Это вопрос? Отвечаю: да, виснет. smile Почему? Потому что в твоём случае более логично сделать так:

Код

 while(!GridMap->DataSource->DataSet->Recordcount()=0)   
        {GridMap->DataSource->DataSet->Delete();}

(в синтаксисе Билдера могу ошибаться, но суть такая)
Но вообще-то боюсь, что при больших объёмах такой код сильно замедлит работу программы. И лучше использовать запрос (delete from ...).

Цитата(Лапоть @  30.4.2009,  12:28 Найти цитируемый пост)
Блин! Ну когда ж этот перец (да и не только он) поймёт, что в гриде данные только отображаются!

Когда-нибудь: мы же верим в лучшее! smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
blackDancer
Дата 30.4.2009, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 23.1.2009
Где: Тамбов

Репутация: нет
Всего: нет



Цитата(Данкинг @ 30.4.2009,  11:34)
Цитата(blackDancer @  30.4.2009,  12:14 Найти цитируемый пост)
Делаю вот так при вызове данной функции прога виснет? 

Это вопрос? Отвечаю: да, виснет. smile Почему? Потому что в твоём случае более логично сделать так:

Код

 while(!GridMap->DataSource->DataSet->Recordcount()=0)   
        {GridMap->DataSource->DataSet->Delete();}

(в синтаксисе Билдера могу ошибаться, но суть такая)
Но вообще-то боюсь, что при больших объёмах такой код сильно замедлит работу программы. И лучше использовать запрос (delete from ...).

Цитата(Лапоть @  30.4.2009,  12:28 Найти цитируемый пост)
Блин! Ну когда ж этот перец (да и не только он) поймёт, что в гриде данные только отображаются!

Когда-нибудь: мы же верим в лучшее! smile

Так не работает вообше даже не запускается, и какая разница что так как ты предложил и я сделал нет разницы только первый вариант сто пудов работает:

Код

     while(!GridMap->DataSource->DataSet->Eof)   
     {
        KeshRes[i][0]=GridMap->Fields[3]->AsFloat; 

        GridMap->DataSource->DataSet->Next();      
        i++;                            
        maxLongKesh++;                  
     }


Это пример его использования вот.
PM MAIL   Вверх
Dmi3ev
Дата 30.4.2009, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



blackDancer, мы тебе все вот че пытаемся объяснить:

Вот упрощенная схема (без разбора конкретных технологий и тд и тп)
________
твоя БД  |
________|
Таблица1|-------------------->Table1-------------->DataSource1------------->DBGrid1
________|                                 |
Таблица2|                                 |----------------->DataSource2------------->DBGrid2
________|

попробуй при таком раскладе удалять все в DBGrid1!
в DBGrid2 ничего не изменится...
потому как DBGrid - это компонент для визуально отображения данных... Понимаешь??? в БД при этом ничего не случится!!! 
Для того чтобы удалять данные в БД, в данном случае, надо работать с методами Table1...


--------------------

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0917 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.