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

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

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

Решение

Для БД, которые работали с BDE (тот же Paradox) был применим такой хороший компонент как TBatchMove, который позволял это делать очень просто.
Для ADO такого не предусмотрели, поэтому приходится что-то выдумывать, например так, как в примерном проекте (делался на RAD XE3)
Вложения
Тип файла: rar DB_ARCH.rar (97.6 Кб, 9 просмотров)
1
Модератор
 Аватар для D1973
9911 / 6448 / 2455
Регистрация: 21.01.2014
Сообщений: 27,373
Записей в блоге: 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
9911 / 6448 / 2455
Регистрация: 21.01.2014
Сообщений: 27,373
Записей в блоге: 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
9911 / 6448 / 2455
Регистрация: 21.01.2014
Сообщений: 27,373
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru