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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.10.2013, 10:00
Scorpuha Scorpuha вне форума
Новичок
 
Регистрация: 13.06.2013
Сообщения: 77
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию как скопировать строки из DBgrida в другой DBGrid

Собственно на картинке. Первый грид отображает таблицу Товары. Второй грид что то типа заказ. Надо из первого грида по нажатию на строку скопировать ее в второй грид. Поля гридов будут одинаковы. Правда не знаю какой datasourse назначить второму гриду. по нажатию кнопки сохранить должен грид2 сохраниться в отдельную таблицу.

Забыл добавить, использую ADO
Изображения
Тип файла: jpg форма.jpg (76.4 Кбайт, 13 просмотров)

Последний раз редактировалось Scorpuha, 18.10.2013 в 10:26.
Ответить с цитированием
  #2  
Старый 18.10.2013, 10:56
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

гриды только отображают данные
привяжите ко 2 гриду соответствующую таблицу
а при нажатии кнопочки, добавляйте во 2ую таблицу нужную запись, например, с помощью запроса Query
потом нужно будет только обновить данные во 2 гриде
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
  #3  
Старый 18.10.2013, 11:04
Scorpuha Scorpuha вне форума
Новичок
 
Регистрация: 13.06.2013
Сообщения: 77
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

понимаю что гриды только отображают.
в моем варианте по нажатию кнопки сохранить надо креатить табличку, а как ее привязывать ко второму гриду не знаю.
Ответить с цитированием
  #4  
Старый 18.10.2013, 11:09
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Попробуйте скопировать в обычный StringGrid, для примера
Код:
procedure TfrmMain.DBGrid1CellClick(Column: TColumn);
var
 i: integer;
begin
with DBGrid1.DataSource.DataSet do
begin 
StringGrid1.ColCount:= FieldCount;
 for i := 0 to Fields.Count-1 do
  StringGrid1.Cells[i, 0]:= Fields[i].AsString;
end;
end;
Ответить с цитированием
  #5  
Старый 18.10.2013, 11:17
Scorpuha Scorpuha вне форума
Новичок
 
Регистрация: 13.06.2013
Сообщения: 77
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
Попробуйте скопировать в обычный StringGrid, для примера

вот что получилось: сейчас у меня ДБгриде три записи. жму на одну из них и эта запись отображается в стрингриде, жму другую запись в ДБгриде, а запись Стрингриде заменяется , но не добавляется.
Ответить с цитированием
  #6  
Старый 18.10.2013, 11:23
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Добавьте
Код:
StringGrid1.RowCount:= StringGrid1.RowCount+1;
и замените
Код:
StringGrid1.Cells[i, StringGrid1.RowCount-1]:= Fields[i].AsString;
Ответить с цитированием
  #7  
Старый 18.10.2013, 11:36
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

Да вы чё, упоролись что ль все тут? Какой Стринг грид. Какое копирование.

У вас должна быть "Таблица Заказов" (Orders) вида:
Код:
*ID - порядковый номер (*-означает AutoIncrement)
IDClient - Номер клиента из Справочника Клиентов
oNumber - номер Заказа
oDate - Дата заказа
И "Таблица Товаров" (Products) вида:
Код:
*ID - порядковый номер
IDOrder - Номер ПП заказа из таблицы Orders
+ все поля, которые у вас уже есть.

Эти две таблица должны быть связаны IDOrder(Products) -> ID(Orders)

Форма Диалог, в которой вы вносите новые поступления.
Форма Диалог, в которой вы оформляете новый заказ (В ней же вы выбираете товар, который относится к этому заказу. По двойному клику в DBGrid вызывается следующий код:
Код:
Products.Edit;
Products.FieldByName('IDOrder').AsInteger := Orders.FieldByName('ID').AsInteger;
Products.Post;

Последний раз редактировалось Uniq!, 18.10.2013 в 15:32.
Ответить с цитированием
Этот пользователь сказал Спасибо Uniq! за это полезное сообщение:
Freeman (18.10.2013)
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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