Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
12 / 13 / 6
Регистрация: 13.11.2012
Сообщений: 295

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

23.07.2014, 14:31. Показов 1327. Ответов 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
9923 / 6459 / 2457
Регистрация: 21.01.2014
Сообщений: 27,409
Записей в блоге: 3
23.07.2014, 15:31
Лучший ответ Сообщение было отмечено names1995 как решение

Решение

Для БД, которые работали с BDE (тот же Paradox) был применим такой хороший компонент как TBatchMove, который позволял это делать очень просто.
Для ADO такого не предусмотрели, поэтому приходится что-то выдумывать, например так, как в примерном проекте (делался на RAD XE3)
Вложения
Тип файла: rar DB_ARCH.rar (97.6 Кб, 9 просмотров)
1
Модератор
 Аватар для D1973
9923 / 6459 / 2457
Регистрация: 21.01.2014
Сообщений: 27,409
Записей в блоге: 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
9923 / 6459 / 2457
Регистрация: 21.01.2014
Сообщений: 27,409
Записей в блоге: 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
9923 / 6459 / 2457
Регистрация: 21.01.2014
Сообщений: 27,409
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru