Форум по 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:30
Scorpuha Scorpuha вне форума
Новичок
 
Регистрация: 13.06.2013
Сообщения: 77
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

сделал вот так, никакой реакции на нажатии мышкой

Код:
var
i: integer;
begin
with DBGrid1.DataSource.DataSet do
begin
StringGrid1.ColCount:= FieldCount;
StringGrid1.RowCount:= StringGrid1.RowCount+1;
 for i := 0 to Fields.Count-1 do
 StringGrid1.Cells[i, StringGrid1.RowCount-1]:= Fields[i].AsString;
  //StringGrid1.Cells[i, 0]:= Fields[i].AsString;
Ответить с цитированием
  #8  
Старый 18.10.2013, 11:33
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

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

минутку, после нажатия кнопки в нижнии строки стринга стали добавляться строчки из ДБгрида, но почему то за двойной клик в ДБгриде появляется по 2-3 одинаковых строчек в стринге.
Ответить с цитированием
  #10  
Старый 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)
  #11  
Старый 18.10.2013, 11:40
Scorpuha Scorpuha вне форума
Новичок
 
Регистрация: 13.06.2013
Сообщения: 77
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

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



у меня получается что надо каждый раз создавать и сохранять таблицу ORDERS
Ответить с цитированием
  #12  
Старый 18.10.2013, 11:42
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

Вы её один раз создаёте и храните там все заказы.
Я даже код привёл и все структуры таблиц.
Ответить с цитированием
  #13  
Старый 18.10.2013, 11:49
Scorpuha Scorpuha вне форума
Новичок
 
Регистрация: 13.06.2013
Сообщения: 77
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

вот тут вы несколько другое говорили

http://www.delphisources.ru/forum/sh...ad.php?t=25193
Ответить с цитированием
  #14  
Старый 18.10.2013, 12:03
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

Там слово в слово тоже самое. И даже термины те же. Только здесь уже конкретные таблицы и конкретные формы-диалогов.

Советую почитать вот это полностью: http://it.kgsu.ru/DelADO/ado_001.html

Как только всё осилите, вопросов больше не останется.
В этом блоге ваше приложение разбирается по винтикам ОТ и ДО.
Ответить с цитированием
  #15  
Старый 18.10.2013, 13:39
Scorpuha Scorpuha вне форума
Новичок
 
Регистрация: 13.06.2013
Сообщения: 77
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

ээээ, добавил таблицу orders, также добавил поле IDorder в таблицу Products. Но вот незадача, DBGrid никак хочет отображать новое поле, или так просто нельзя добавлять поля в существующие таблицы?
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter