2 / 2 / 0
Регистрация: 15.05.2011
Сообщений: 89
1

Удаление записи из таблицы

15.06.2011, 01:07. Показов 2532. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
помогите решит проблему удаления из таблицы данных
вот нашол нафоруме
Я тебе могу предложить как я делаю
Код
	 
 if(MainForm->ADOQuery1->RecordCount !=0)
     {
         AnsiString ds = "Вы деиствительно хотите удалить выбранную строку? \n\n" + IntToStr(ADOQuery1->FieldByName("Invent_Number")->AsInteger)+" - "+ADOQuery1->FieldByName("Number_in_Lan")->AsString+" - "+ADOQuery1->FieldByName("Department")->AsString+" - "+ADOQuery1->FieldByName("Processor")->AsString+" - "+ADOQuery1->FieldByName("Memory")->AsString+" - "+ADOQuery1->FieldByName("HDD")->AsString+" - "+ADOQuery1->FieldByName("Room")->AsString;
     if (Application->MessageBox(ds.c_str(),"Подтверждение удаления строки из базы данных",MB_YESNO +MB_TOPMOST+ MB_ICONQUESTION)!=IDYES)
     {
         Abort();
     }
     else
 
      if(DBGrid1->SelectedRows->Count > 0)
     {
         ADOQuery1->DisableControls();
         int curItem = ADOQuery1->RecNo;
         ADOQuery1->First();
         while(!ADOQuery1->Eof)
     {
     if(DBGrid1->SelectedRows->CurrentRowSelected)
     {
         ADOQuery1->Delete();
     }
    else
     {
         ADOQuery1->Next();
     }
     }
        DBGrid1->SelectedRows->Clear();
        if(ADOQuery1->RecordCount > 0)
     {
        if(curItem > ADOQuery1->RecordCount)
     {
        ADOQuery1->Last();
     }
    else
    {
        ADOQuery1->RecNo = curItem;
        DBGrid1->SelectedRows->CurrentRowSelected = true;
    }
    }
     ADOQuery1->EnableControls();
    }
я вроде его адаптировал немного выдаёт сообщение типа вы хотит удалить такуюто строчку жму ок но ничего не происходит запись не удаляется но и ошибок никаких если можете помогите
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2011, 01:07
Ответы с готовыми решениями:

Удаление одной записи из таблицы
Добрый вечер! Мне нужно удалить из списка одну запись (строку). String table, table_id; int...

Удаление выбранной записи из таблицы
Нашел на форуме способ удаления, и вроде бы он рабочий: String...

Кнопка, отвечающая за удаление текущей записи из таблицы
Помогите написать обработчик событий для кнопки, отвечающей за удаление текущей записи из таблицы в...

Удаление записи из таблицы, с проверкой на совпадение с записями из другой таблицы.
День добрый! В общем такая проблема: Мой проект на курсовую работу представляет из себя простую...

2
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
15.06.2011, 10:09 2
Лучший ответ Сообщение было отмечено mojohead как решение

Решение

Этот код был предназначен для удаления нескольких строк
Поэтому сделай, в свойствах Грида так чтобы можно было выделять полностью строку и возможность выделять одну строку, а много строк.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
void __fastcall TMainForm::DelString()
{
if(MainForm->ADOQuery1->RecordCount !=0)
     {
         AnsiString ds = "Âû äåèñòâèòåëüíî õîòèòå óäàëèòü âûáðàííóþ ñòðîêó? \n\n" + IntToStr(ADOQuery1->FieldByName("Invent_Number")->AsInteger)+" - "+ADOQuery1->FieldByName("Number_in_Lan")->AsString+" - "+ADOQuery1->FieldByName("Department")->AsString+" - "+ADOQuery1->FieldByName("Processor")->AsString+" - "+ADOQuery1->FieldByName("Memory")->AsString+" - "+ADOQuery1->FieldByName("HDD")->AsString+" - "+ADOQuery1->FieldByName("Room")->AsString;
     if (Application->MessageBox(ds.c_str(),"Ïîäòâåðæäåíèå óäàëåíèÿ ñòðîêè èç áàçû äàííûõ",MB_YESNO +MB_TOPMOST+ MB_ICONQUESTION)!=IDYES)
     {
         Abort();
     }
     else
 
      if(DBGrid1->SelectedRows->Count > 0)
     {
         ADOQuery1->DisableControls();
         int curItem = ADOQuery1->RecNo;
         ADOQuery1->First();
         while(!ADOQuery1->Eof)
     {
     if(DBGrid1->SelectedRows->CurrentRowSelected)
     {
         ADOQuery1->Delete();
     }
    else
     {
         ADOQuery1->Next();
     }
     }
        DBGrid1->SelectedRows->Clear();
        if(ADOQuery1->RecordCount > 0)
     {
        if(curItem > ADOQuery1->RecordCount)
     {
        ADOQuery1->Last();
     }
    else
    {
        ADOQuery1->RecNo = curItem;
        DBGrid1->SelectedRows->CurrentRowSelected = true;
    }
    }
     ADOQuery1->EnableControls();
    }
}
}
//---------------------------------------------------------------------
0
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
15.06.2011, 11:02 3
Приведенный код (оба вообще-то, т.к. сущность у обоих одинаковая) - пример того, как НЕЛЬЗЯ удалять записи. Криминала тут валом.
Два основных (каждый тянет на "вышку"):
1. Использование RecNo в качестве идентификатора удаляемых записей - уже преступление ! Сколько раз повторять железное правило:
PureBasic
1
 ИСПОЛЬЗОВАТЬ RECNO и RECORDCOUNT КРАЙНЕ ОСТОРОЖНО, НИ В КОЕМ СЛУЧАЕ НЕ ПОЛАГАЯСЬ НА ИХ ДОСТОВЕРНОСТЬ !
Например, для вывода внизу грида текста типа "Запись nnn из mmmm",
Ан нет ! Народ упрямо лезет сослепу в эту кучу свежего г..на, где к тому же еще лежат вилы, капкан и пара грабель ! Виват "славным" учителям или как ?
2. Выделение строк средствами стандартного DBGrid смерти подобно. Точнее выделяить можно конечно, но следует помнить, что при любом изменении в составе и порядке записей рекордсета (удаление и добавление, понятное дело - это именно изменене в составе) приводит к потере валидости букмарок, с помощью которых грид "метит" выделенные записи. А уж делать удаление по этим букмаркам - все равно что на улице нарисовать в витрине магазина цель и пальнуть в нее из дробовика - скоко при этом ляжет народу, с дуру "шоппингующего" в этом маркете, одному всевышнему известно ! И вообще выделение строк не следует делать штатными средствами TDBGrid потому, что оно реализовано крайне глюкаво (во-первых только подряд, во-вторых любой клик на сетке отменяем выделенную и т.д.), а если уж делать, так грамотно, используя технологию визуального выделения (чекбоксы в спец колонке, иной цвет, обязательно возможность отображения только выделенных, использование в качестве указателей на выделенные записи их UID, выполнение удаления в контексте транзакции (или все или ни одной !) и т.д.) Короче, голову нао использовать, господа, а не только глаза и руки.
0
15.06.2011, 11:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2011, 11:02
Помогаю со студенческими работами здесь

Удаление записи из таблицы БД
Всем привет ! пишу Бд в делфи .все данные хранятся в CDS.Сделала кнопку добавления данных в таблицы...

Удаление записи из таблицы
Здравствуйте. Имею две таблицы: Сотрудники и Должности. CREATE TABLE "EMPLOYEE" ( ...

Удаление записи из таблицы БД
Здравствуйте. Возникла небольшая проблема. Необходимо редактировать таблицу БД через скрипт....

Удаление записи из таблицы
Необходимо удалить запись из таблицы в бд, по нажатию на кнопку в WPF. Использую Entity Framework...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru