Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2015, 17:05   #1
Vongud
Пользователь
 
Аватар для Vongud
 
Регистрация: 26.08.2014
Сообщений: 24
Вопрос Перенос строк некоторых полей из одной таблицы в другую с помощью буфера обмена

Всем привет...
Такая задача: есть три формы (форма1, форма2, форма3), на них есть по одному DBGridEh (DBGridEh1, DBGridEh2, DBGridEh3). Есть ли какая-нибудь возможность при выделении строки в DBGridEh1 перенести НЕКОТОРЫЕ поля этой строки в DBGridEh3. НО! не в новую строку, а в существующую с другими данными (так сказать добавить в пустые ячейки выбранной записи)? А выбирается необходимая запись (куда добавить) в DBGridEh2 формы2. Типы полей совпадают, имена нет. БД Access.
Примерно, как мне кажется, реализация такова-на форме1 (в DBGridEh1) пользователь выбирает нужную строку, нажимает кнопку, необходимые поля из этой строки копируются в буфер обмена и открывается форма2. На ней пользователь выбирает в DBGridEh2 строку, в которую нужно вставить данные из DBGridEh1, жмёт ОК, они перемещаются в DBGridEh3, и форма2 закрывается. Только даже не понимаю, с чего начать, а именно, каким образом скопировать данные из нужных ячеек в буфер обмена.
Реальных таблиц в БД две. Первая отображается на форме1 и вторая на двух других формах.
Vongud вне форума Ответить с цитированием
Старый 28.04.2015, 17:18   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

любой DbGrid показывает данные из некой БД.
Перенос данных из одной таблицы БД в другую осуществляется выполнением операций над БД
Обычно это SQL но можно и писать СВОЙ код используя "навигацию" по полям и записям набора данных. Вы же уже знаете про Edit; Post; Field .AsString
и делается это безо всяких буферов обмена.

Цитата:
Реальных таблиц в БД две. Первая отображается на форме1 и вторая на двух других формах.
1)Открывается форма
2)пользователь указывает какие данные надо копировать.
3)Выполняется SQL команда копирования.(или код копирования МЕЖДУ разными наборам данных имеющимся(!) в программе)
4)другая форма настраивается на показ вновь скопированных данных.(если был код копирования то скорее всего она уже будет настроена)



постоянное копирование данных из таблицы в таблицу обычно говорит о неправильной структуре таблиц.(ну о этом я уже говорил).
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 28.04.2015 в 17:29.
evg_m на форуме Ответить с цитированием
Старый 28.04.2015, 17:33   #3
Vongud
Пользователь
 
Аватар для Vongud
 
Регистрация: 26.08.2014
Сообщений: 24
По умолчанию

Цитата:
используя "навигацию"
Что это, как это? Мне нужно именно некоторые поля. SQL скопирует все данные из грида. Мне бы так нахимичить: пользователь выделил строку (допустим с шестью полями) и после нажатия кнопки скопировались в буфер обмена только два поля из этой строки. Сразу открывается форма с другим гридом, где пользователь выделяет другую строку, и эти данные из буфера (именно из двух ячеек дбгрида первого) вставляются в другой дбгрид, на третьей форме. Форма закрылась, всё ОК.
Цитата:
любой DbGrid показывает данные из некой БД
Ну это ясно, я ж образно говорю, что таблица-это дбгрид.
Ну а главный вопрос-это вообще реально, не полностью запись новую создавать в другой таблице, а добавить в существующую? К тому же с разными именами, но с одинаковыми типами.
Vongud вне форума Ответить с цитированием
Старый 28.04.2015, 17:36   #4
Vongud
Пользователь
 
Аватар для Vongud
 
Регистрация: 26.08.2014
Сообщений: 24
По умолчанию

Цитата:
Вы же уже знаете про Edit; Post; Field .AsString
С их помощью вся запись копируется/вставляется и тд
Vongud вне форума Ответить с цитированием
Старый 28.04.2015, 17:43   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

отмеченные данные находятся в наборе данных DS1
данные для исправления в наборе данных DS2

Просматриваем все записи DS1 по очереди
1) если запись НЕ отмечена то переходим к к п7.
2) находим соответствующую запись в DS2
3) если неудачно к п7.
4) открываем редакцию (DS2.Edit)
5) копируем ВСЕ нужные поля
Код:
if .... then 
    DS2.Field... .Value:=DS1.Field... .Value; (столько сколько нужно полей)
6) закрываем редакцию (DS2.Post) а иногда может потребоваться DS2.Cancel;
7)переходим к следующей DS1.Next;

P.S.Интересно сколько еще нужно тем что вернуться к первоначальному предложению
для манипулирования данными применять SQL
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 28.04.2015 в 17:48.
evg_m на форуме Ответить с цитированием
Старый 28.04.2015, 17:48   #6
Vongud
Пользователь
 
Аватар для Vongud
 
Регистрация: 26.08.2014
Сообщений: 24
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
отмеченные данные находятся в наборе данных DS1
данные для исправления в наборе данных DS2

Просматриваем все записи DS1 по очереди
1) если запись НЕ отмечена то переходим к к п7.
2) находим соответствующую запись в DS2
3) если неудачно к п7.
4) открываем редакцию (DS2.Edit)
5) копируем ВСЕ нужные поля
Код:
if .... then 
    DS2.Field... .Value:=DS1.Field... .Value; (столько сколько нужно полей)
6) закрываем редакцию (DS2.Post) а иногда может потребоваться DS2.Cancel;
7)переходим к следующей DS1.Next;

tc
DS2.Locate(DS2.Edit;
Ds2
Ну примерно алгоритм понял, завтра вернусь к этому. Буду добавлять скрытые эдиты.
Vongud вне форума Ответить с цитированием
Старый 28.04.2015, 17:54   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Код:
D2.Edit;
if D2.field... .Value=NULL then D2.Field... .Value =D1.field... .Value;
....// и так пройтись по всем полям (если надо и КАК надо)
D2.Post;
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос данных из одной таблицы в другую atenon Microsoft Office Access 1 21.07.2014 21:36
перенос данных из одной таблицы в другую jawa250t БД в Delphi 1 09.03.2013 14:32
перенос из одной таблицы БД в другую WishHunter Помощь студентам 9 21.02.2013 08:15
Перенос данных из одной таблицы в другую D.O.G БД в Delphi 3 07.10.2010 12:23
перенос данных из одной таблицы в другую peq Microsoft Office Excel 5 28.08.2010 08:16