Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.05.2012, 02:29
wymkent wymkent вне форума
Прохожий
 
Регистрация: 04.03.2012
Сообщения: 19
Репутация: 10
По умолчанию Перекинуть выбранную строчку из одной таблицы на вторую

Всем привет! есть две таблицы Tb1 и Tb2, нужно перекинуть выбранную строчку из ревой DBGrid на вторую (из первой таблица на вторую) использую ADOquery бд Access. спасибо!
Ответить с цитированием
  #2  
Старый 16.05.2012, 02:44
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

SQL:
Код:
insert into Tb2 select * from Tb1 where id = :id;
потом просто перечитаешь вторую таблицу.
Структура таблиц должна быть одинаковая.

Delphi:
Код:
Tb2.Edit;
For I := 0 To Tb1.Fields.Count-1 Do
  Tb2.Fields[i].Value := Tb1.Fields[i].Value;
Tb2.Post;
В предположении, что структура таблиц одинаковая и нет BLOB-полей.

Если структура разная, то нужен список перекидываемых полей.
Соответсвенно, в случае SQL надо будет генерировать запрос в рантайм (если для разных таблиц нужна операция). В случае Delphi, просто идем по списку имен полей и обращаемся через FieldByName(names[i]) вместо Fields[i].
Ответить с цитированием
  #3  
Старый 16.05.2012, 06:07
wymkent wymkent вне форума
Прохожий
 
Регистрация: 04.03.2012
Сообщения: 19
Репутация: 10
По умолчанию

lmikle не могли бы вы полностью прописать код?
Ответить с цитированием
  #4  
Старый 16.05.2012, 15:31
Аватар для Viajero
Viajero Viajero вне форума
Активный
 
Регистрация: 14.06.2011
Адрес: РБ
Сообщения: 214
Версия Delphi: Delphi 7 FB 2.5
Репутация: 5849
По умолчанию

Из действующего проекта. Вставка выбранных записей из одной таблицы в другую:
Код:
procedure TwPricemaking.kToPriceClick(Sender: TObject);
var
 cRow:integer;
begin
  if (gDetailing.SelectedRows.Count<0) then exit;
  if GiPriceListId=null then exit;
{Перезапись выбранных столбцов в Price}
  with gDetailing.DataSource.DataSet do
    for cRow:=0 to gDetailing.SelectedRows.Count-1 do begin
      GotoBookmark(pointer(gDetailing.SelectedRows.Items[cRow]));
      iDetailID:=FieldByName('DETAIL_ID').AsInteger;
      iLabourPrice:=FieldByName('LABOUR_COST').AsInteger;
      sLongName:=FieldByName('DETAIL_LONGNAME').AsString;
      iSeqence:=wPricing.hSpBase.Gen_Id('PRICE_SEQ',1);

      wPricing.hrPrices.Append;
      wPricing.hrPrices.FieldByName('PRICE_ID').AsInteger:=iSeqence;
      wPricing.hrPrices.FieldByName('PRICELIST_ID').AsInteger:=GiPriceListId;
      wPricing.hrPrices.FieldByName('DETAIL_ID').AsInteger:=iDetailID;
      wPricing.hrPrices.FieldByName('LABOUR_PRICE').AsInteger:=iLabourPrice;
      wPricing.hrPrices.FieldByName('DETAIL_LONGNAME').AsString:=sLongName;
    end;
end;
__________________
- Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА!

Последний раз редактировалось Viajero, 16.05.2012 в 15:34.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:13.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter