12 / 13 / 6
Регистрация: 13.11.2012
Сообщений: 295

Удаление строки с одной базы и перемещение ее в Архив (Таблицу)

23.07.2014, 14:31. Показов 1324. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, Надо с одной таблицы удалить строку как бы и переместить в ее в корзину (в другую таблицу) скажем.
На формах ADOTable1, DataSource1, DBGrid1

Добавлено через 4 часа 2 минуты
????????????????????
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.07.2014, 14:31
Ответы с готовыми решениями:

Перемещение строки из таблицы в таблицу
Доброго времени суток ! Просьба следующая: сделать в Buildere 2 таблицы (3Х3), первую строку второй таблицы заполнить единицами, и по...

Как программно скопировать таблицу из одной базы в другую
как программно скопировать таблицу из одной базы в другую? есть 2 базы: 1.mdb и 2.mdb в 1ой базе таблица qwerty во 2ой базе запрос...

Как в ADO связать таблицу из одной базы в другую?
Как в ADO связать таблицу из одной базы в другую? В DAO такая возмоможность существует. Например: Dim dbsTemp As Database Dim...

17
 Аватар для Витальич
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
23.07.2014, 14:41
Стараюсь ни когда не делать функционала удаления данных в своих проектах, вместо этого в таблицу добавляю поле "View". Если поле View равно 1 то данные отображаются, если 0 то не отображаются.
0
12 / 13 / 6
Регистрация: 13.11.2012
Сообщений: 295
23.07.2014, 15:12  [ТС]
мне нужно чтобы когда я их удалял, они перемещались в другую таблицу, обычный cutpaste

Добавлено через 1 минуту
Цитата Сообщение от Витальич Посмотреть сообщение
Стараюсь ни когда не делать функционала удаления данных в своих проектах, вместо этого в таблицу добавляю поле "View". Если поле View равно 1 то данные отображаются, если 0 то не отображаются.
мне нужно чтобы когда я их удалял, они перемещались в другую таблицу, обычный cutpaste
0
Модератор
 Аватар для D1973
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,390
Записей в блоге: 3
23.07.2014, 15:31
Лучший ответ Сообщение было отмечено names1995 как решение

Решение

Для БД, которые работали с BDE (тот же Paradox) был применим такой хороший компонент как TBatchMove, который позволял это делать очень просто.
Для ADO такого не предусмотрели, поэтому приходится что-то выдумывать, например так, как в примерном проекте (делался на RAD XE3)
Вложения
Тип файла: rar DB_ARCH.rar (97.6 Кб, 9 просмотров)
1
Модератор
 Аватар для D1973
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,390
Записей в блоге: 3
23.07.2014, 15:33
Цитата Сообщение от Витальич Посмотреть сообщение
Стараюсь ни когда не делать функционала удаления данных
А как на счет разрастания объемов БД?
0
 Аватар для Витальич
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
23.07.2014, 15:36
Таблица1 - где удаляем, Таблица 2 - куда записываем.
создали новую запись в таблице 2 записали туда значения, удали запись в таблице 1
1
12 / 13 / 6
Регистрация: 13.11.2012
Сообщений: 295
23.07.2014, 15:45  [ТС]
НЕ могу понять что ты там сделал в проекте ?

Добавлено через 1 минуту
ну и как это реализовать?
C++
1
2
3
Form5->ADOTable1->Edit ();
Form5->ADOTable1->Insert();
ADOTable1->Delete ();
а как записать туда значение?

Добавлено через 6 минут
C++
1
2
3
4
Form5->ADOTable1->Edit ();
Form5->ADOTable1->Insert();
ADOTable1=Form5->ADOTable1;
ADOTable1->Delete ();
0
 Аватар для Витальич
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
23.07.2014, 16:07
Лучший ответ Сообщение было отмечено names1995 как решение

Решение

Цитата Сообщение от D1973 Посмотреть сообщение
А как на счет разрастания объемов БД?
У меня есть мелкосерийный проект на FB (4 инсталляции у заказчика) где базы по 120 и более гигов. Проблем по обработке данных нет. Дисковая подсистема аппаратный рейд пять. Еже секундный инсерт около 800 параметров (правда дискреты пакую в int 32). К чему это я? Да кого сейчас волнует размер БД.

Добавлено через 20 минут
names1995, Вот Выдрал из проекта, в нем есть перенос данных из таблицы в таблицу.

Читаю данные из таблицы (Курсор стоит на выбранной записи:
C++
1
2
3
dataBD->p[0] = DataSourceIn->DataSet->FieldByName("ID")->AsInteger;
dataBD->p[1] = DataSourceIn->DataSet->FieldByName("S")->AsFloat;
dataBD->p[2] = DataSourceIn->DataSet->FieldByName("F")->AsInteger;
Запись(перенос) данных в новую таблицу.
C++
1
2
3
4
5
6
   DataSourceOut->DataSet->Append();
   DataSourceOut->DataSet->FieldByName("ID")->AsInteger = dataBD->p[0];
   DataSourceOut->DataSet->FieldByName("P1")->AsAnsiString = dataBD->p[1];
   DataSourceOut->DataSet->FieldByName("P2")->AsAnsiString = dataBD->p[2];
 
   DataSourceOut->DataSet->Post();
Удаляю в первой таблице
C++
1
DataSourceIn->DataSet->Delete();
Вам можно и напрямую без массива, у мены там дополнительная обработка.
Насчет перенести одной строчкой все столбцы не знаю, ни когда не надо было.
1
Модератор
 Аватар для D1973
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,390
Записей в блоге: 3
23.07.2014, 16:16

Не по теме:

Цитата Сообщение от Витальич Посмотреть сообщение
Да кого сейчас волнует размер БД.
Ну это я так... По старинке еще рассуждаю :D



Добавлено через 2 минуты
Цитата Сообщение от names1995 Посмотреть сообщение
НЕ могу понять что ты там сделал в проекте ?
А пытался?
0
 Аватар для Витальич
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
23.07.2014, 16:21
D1973, у ТС ADOTable Ваш пример он может не понять. Мой вариант тоже не айс, но ближе идеологически.
0
Модератор
 Аватар для D1973
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,390
Записей в блоге: 3
23.07.2014, 16:25
Цитата Сообщение от Витальич Посмотреть сообщение
у ТС ADOTable
Дык а у меня что? Тот же Access, те же компоненты TADOTable, TADOQuery, TADOConnection.
А если Вы про
Цитата Сообщение от D1973 Посмотреть сообщение
такой хороший компонент как TBatchMove
, то это я так упомянул, я его всегда поминаю, когда аналогичную задачу делать приходится
2
 Аватар для Витальич
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
23.07.2014, 16:28
D1973, У Вас сделано через TADOQuery, а ТС скорей всего не знает его, по крайней мере он о нем не упоминал в вопросе.
Цитата Сообщение от D1973 Посмотреть сообщение
TBatchMove
ни когда не юзал (не знал), даже в темные времена BDE
1
23.07.2014, 16:41

Не по теме:

Цитата Сообщение от Витальич Посмотреть сообщение
ТС скорей всего не знает его
Ну, судя по соседним темам на форуме - знаком хотя бы в общих чертах

0
12 / 13 / 6
Регистрация: 13.11.2012
Сообщений: 295
24.07.2014, 11:35  [ТС]
Попытаюсь потом еще раз, спасибо вам ) будут вопросы обращусь

Добавлено через 17 часов 9 минут
Цитата Сообщение от Витальич Посмотреть сообщение
(Курсор стоит на выбранной записи:
как мне курсор на выбранную запись поставить?
C++
1
2
3
4
5
ADOTable1-> ADOTable1->FieldByName("ÔÈÎ")->AsString;
ADOTable1-> = ADOTable1->FieldByName("Íîìåð äîãîâîðà")->AsString;
ADOTable1-> = ADOTable1->FieldByName("Àäðåñ")->AsString;
ADOTable1-> = ADOTable1->FieldByName("Äîìàøíèé òåëåôîí")->AsString;
ADOTable1-> = ADOTable1->FieldByName("Äàòà ïîäêëþ÷åíèÿ")->AsInteger;
0
 Аватар для Витальич
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
24.07.2014, 11:43
У Вас Grid(таблица) подключен? Если да, то через него и устанавливаете. Для управления из кода, есть методы First(), Next() итд
1
12 / 13 / 6
Регистрация: 13.11.2012
Сообщений: 295
24.07.2014, 11:54  [ТС]
да, т.е оно будет как-то вот так.

C++
1
2
3
4
5
ADOTable1->First () = ADOTable1->FieldByName("ФИО")->AsString;
ADOTable1->First () = ADOTable1->FieldByName("Номер договора")->AsString;
ADOTable1->First () = ADOTable1->FieldByName("Адрес")->AsString;
ADOTable1->First () = ADOTable1->FieldByName("Домашний телефон")->AsString;
ADOTable1->First () = ADOTable1->FieldByName("Дата подключения")->AsInteger;
а как я метод буду приравнивать ?
0
 Аватар для Витальич
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
24.07.2014, 12:08
C++
1
2
3
4
5
6
ADOTable1->First ();  // Перешли к первой записи в таблице 1
ADOTable2->Append(); // Открыли датасет в таблице 2 на вставку новой записи.
ADOTable2->FieldByName("ФИО")->AsString = ADOTable1->FieldByName("ФИО")->AsString;
ADOTable2->FieldByName("Еще поля")->AsString = ADOTable1->FieldByName("Еще поля")->AsString;
ADOTable2->Post(); // Фиксируем данные в таблице 2
ADOTable1->Delete(); // Удаляем данные из таблице 1
Я ни когда не работал с ADO, пример который я привел из своего проекта использует таблицу MIDAS, там я работаю не с самой таблицей, а датасетом
Цитата Сообщение от Витальич Посмотреть сообщение
DataSourceOut->DataSet->Append();
Возможно и в ADO так надо, тогда код для переноса/удаления будет выглядеть так:
C++
1
2
3
4
5
6
ADOTable1->DataSet->First ();  // Перешли к первой записи в таблице 1
ADOTable2->DataSet->Append(); // Открыли датасет в таблице 2 на вставку новой записи.
ADOTable2->DataSet->FieldByName("ФИО")->AsString = ADOTable1->DataSet->FieldByName("ФИО")->AsString;
ADOTable2->DataSet->FieldByName("Еще поля")->AsString = ADOTable1->DataSet->FieldByName("Еще поля")->AsString;
ADOTable2->DataSet->Post(); // Фиксируем данные в таблице 2
ADOTable1->DataSet->Delete(); // Удаляем данные из таблице 1
1
12 / 13 / 6
Регистрация: 13.11.2012
Сообщений: 295
24.07.2014, 12:41  [ТС]
Вот так работает, спасибо )
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm2::BitBtn1Click(TObject *Sender)
{
 
Form5->ADOTable1->Append();
Form5->ADOTable1->FieldByName("ÔÈÎ")->AsString = ADOTable1->FieldByName("ÔÈÎ")->AsString;
Form5->ADOTable1->FieldByName("Íîìåð äîãîâîðà")->AsString = ADOTable1->FieldByName("Íîìåð äîãîâîðà")->AsString;
Form5->ADOTable1->FieldByName("Àäðåñ")->AsString = ADOTable1->FieldByName("Àäðåñ")->AsString;
Form5->ADOTable1->FieldByName("Äîìàøíèé òåëåôîí")->AsString = ADOTable1->FieldByName("Äîìàøíèé òåëåôîí")->AsString;
Form5->ADOTable1->Post();
ADOTable1->Delete();
 
 
 
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.07.2014, 12:41
Помогаю со студенческими работами здесь

Дабавление, изменение удаление записей в таблицу базы данных
Добрый день! Нужно написать программу в универ, столкнулся с проблемой. Есть база данных, написанная в MS Server 2012. Я ее подключи к...

Как запретить удаление строки в DataGridView, если пользователь не выбрал ни одной строки?
Здравствуйте! У меня есть datagridview и кнопка удаления записи на форме. Данные в datagridview попадают из таблицы базы данных...

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

Вывод одной строки из базы
Подскажите, как вывести из базы на экран одну строку, id строки известен. Как вывести данные всех строк я знаю, а вот с одной строкой...

Удаление строки из базы
while ( ($cat = mysqli_fetch_assoc($result))) { echo '<a href="1190.php?id=' .$cat. '"><h3>' . $cat . '</h3></a> ...


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

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

Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru