Показать сообщение отдельно
  #6  
Старый 17.04.2008, 15:01
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,106
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Horror
мне нада сделать так:
на главной форме распологается грид в который вбито 1000 наименований продукции. Так же существует форма Заказ на которой распологается второй грид. Мне нужно чтобы, установив курсор на любой записи в главном гриде и нажав на кнопку Добавить в заказ эта запись скопировалась во второй грид, который находится на форме Заказ.
Само собой первый и второй грид абсолютно одинаковы, т.е. в таблицах все типы и размер полей равны.

Какие компоненты для доступа к данным (т.е. DataSet'ы)?

Если TTable или обновляемый TQuery, то путем простой вставки записи е копирования ее содержимого. При этом путь к источника данных надо указывать полностью (с указанием формы).
Примерно так:
Код:
OrderForm.tOrder.Insert;
For I := 0 To OrderForm.tOrder.Fields.Count-1 Do
  OrderForm.tOrder.Fields[i].Value := SkladForm.tSklad.FieldByName(OrderForm.tOrder.Fields[i].FieldName).Value;
OrderForm.tOrder.Post;
Здесь предполагается, что обе формы созданы (исп. соотв. переменные OrderForm и SkladForm) и в источнике tSklad запись уже спозиционированна.

Если просто TQuery, то можно просто выполнить запрос типа
Код:
INSERT INTO Order (SELECT * FROM Storage)
Order - таблица заказа
Storage - таблица склада (т.е. товаров).
Данный запрос подразумевает точную идентичность этих таблиц. Если таблицы не идентичны (просто достаточно что бы был разный порядок полей), то в части SELECT вместо * укажи список полей в том порядке, который соответсвует таблице Order.
Ответить с цитированием