Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

копирование определенного набора данных из dbgrid в clipboard [D7, XP]


Страницы:   1 2

kate158 ©   (2008-10-15 17:00:00) 

Здравствуйте,мастера!Помогите разобраться с простой вещью.Нужно скопировать определенный столбец из таблицы в БД,допутим 6.Есть код:
procedure TForm1.Button3Click(Sender: TObject);
var i: integer;
begin
 dbgrid3.DataSource.DataSet.First;
 while not dbgrid3.DataSource.DataSet.EOF do
 begin
  for i := 0 to (dbgrid3.DataSource.Dataset.FieldCount - 1) do
    Clipboard.AsText:=(dbgrid3.DataSource.Dataset.Fields[5].AsString);
   dbgrid3.DataSource.DataSet.Next;
 end;
end;

в буфер копируется только последняя запись,а нужен весь столбец полностью.как изменить код?


Сергей М.   (2008-10-15 19:35:00) [21]


> kate158   (15.10.08 18:24) [14]


Что за ослиное упрямство ?
Ты про стринглист почему пропустила мимо ушей ?
Он и разделителями управляет автоматически)


Anatoly Podgoretsky   (2008-10-15 19:25:00) [22]

> kate158  (15.10.2008 18:24:14)  [14]

Ну пока еще не рабочий, но уже близко.
Ты что мимо ушей пропустила слова про разделители?
Кому нужна эта колбаса?


Anatoly Podgoretsky   (2008-10-15 19:00:00) [23]

> Плохиш  (15.10.2008 18:11:13)  [13]

Тебе обидно, а мне приятно :-)


Anatoly Podgoretsky   (2008-10-15 19:00:00) [24]

> kate158  (15.10.2008 18:09:10)  [10]

Ты Катя не так начинаешь, начинать надо со ссылки на фотографию.
А касательно кода, ничего не изменилось, ты точно также в цикле заменяешь одно значение другим.
Я же привел формулу. S := S + N
И S это действительно S(tring), а N это твои данные, которые ты аккумулируешь в ней.

А Clipboard.AsText := S;
Делаешь по окончанию цикла while

Разделители данных твое дело, вопрос согласования с получателем этих данных.


Плохиш   (2008-10-15 18:41:00) [25]


> kate158   (15.10.08 18:24) [14]
> мастера,я не знаю чем Вы мне помогаете,но,в беседе с Вами,
> каким то образом получается рабочий код

Поздравляю :-)

PS. А что значения-то сплошной кучей пишуться, может разделитель-какой вставить?


kate158   (2008-10-15 18:24:00) [26]

мастера,я не знаю чем Вы мне помогаете,но,в беседе с Вами,каким то образом получается рабочий код.)))
вот он:
procedure TForm1.ButtonClick(Sender: TObject);
var а: string;
begin
 dbgrid3.DataSource.DataSet.First;
 while not dbgrid3.DataSource.DataSet.EOF do
 begin
   а:=а+(dbgrid3.DataSource.Dataset.Fields[5].AsString);
   dbgrid3.DataSource.DataSet.Next;
 end;
 Clipboard.AsText:=а;
end;

спасибо


Плохиш   (2008-10-15 18:11:00) [27]


> kate158   (15.10.08 18:09) [10]
>
> > Anatoly Podgoretsky ©   (15.10.08 17:25) [6]
>
> добавляю еще строку кода.

Я разрыдался....


kate158   (2008-10-15 18:10:00) [28]


> Jeer ©   (15.10.08 18:08) [9]


> Германн ©   (15.10.08 17:30) [8]

мне тоже нравится


Плохиш   (2008-10-15 18:10:00) [29]


> kate158   (15.10.08 17:14) [4]

> объявляю переменную  i целого типа в разделе var.перехожу
> на первую запись в дбгриде.пока не наступит конец дбгрида
> добавляюв буфер записи начиная с первой по последнюю.

Можете подтвердить выделенное куском своего кода?


kate158   (2008-10-15 18:09:00) [30]


> Anatoly Podgoretsky ©   (15.10.08 17:25) [6]

добавляю еще строку кода.
procedure TForm1.Button3Click(Sender: TObject);
var i: integer;
begin
 dbgrid3.DataSource.DataSet.First;
while not dbgrid3.DataSource.DataSet.EOF do
 begin
  for i := 0 to (dbgrid3.DataSource.Dataset.FieldCount - 1) do
    Clipboard.AsText:=(dbgrid3.DataSource.Dataset.Fields[5].AsString);
   dbgrid3.DataSource.DataSet.Next;
 end;
Clipboard.AsText:=(dbgrid3.DataSource.Dataset.Fields[i].AsString);
end;


Jeer   (2008-10-15 18:08:00) [31]


> Класс! Прям Пестня :)
>


Главное - под конец рабочего дня - настроение повысилось, однако :)


Германн   (2008-10-15 17:30:00) [32]


> перехожу на первую запись в дбгриде.пока не наступит конец
> дбгрида

Класс! Прям Пестня :)


kate158   (2008-10-15 17:26:00) [33]

сорри.да,я знаю что данные в датасете.имею в виду dbgrid3.DataSource.DataSet.ну да ладно)


Anatoly Podgoretsky   (2008-10-15 17:25:00) [34]

> kate158  (15.10.2008 17:14:04)  [4]

Больше одной записи, это когда S := S + N, а не S := N


Сергей М.   (2008-10-15 17:19:00) [35]


> kate158   (15.10.08 17:14) [4]


> данные,которые нужно записать в буфер находятся в дбгриде


Нет там никаких данных.
Данные - в дейтасете, а не в гриде.
С тем же успехом на месте грида вправе оказаться любойдругой контрол, у которого есть св-во DataSource, через которое контрол получает для втизуализации данные из дейтасета.


kate158   (2008-10-15 17:14:00) [36]


> Palladin ©   (15.10.08 17:04) [2]
> вот опишешь словами, что же у тебя в коде происходит, может
> быть и натолкну на верную мысль

пишу обработчик нажатия на кнопку "добавить в буфер".
объявляю переменную  i целого типа в разделе var.перехожу на первую запись в дбгриде.пока не наступит конец дбгрида добавляю в буфер записи начиная с первой по последнюю.

> Сергей М. ©   (15.10.08 17:06) [3]

данные,которые нужно записать в буфер находятся в дбгриде.


Сергей М.   (2008-10-15 17:06:00) [37]


> как изменить код?


Заведи StringList, в каждой итерации цикла добавляй в него очер.строку.
По выходу из цикла пиши StringList.Text в клипборд.

Только причем здесь DBGrid - непонятно..


Palladin   (2008-10-15 17:04:00) [38]

вот опишешь словами, что же у тебя в коде происходит, может быть и натолкну на верную мысль


Palladin   (2008-10-15 17:03:00) [39]

этому нужно долго учится... думать


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо