![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
копирование определенного набора данных из dbgrid в clipboard [D7, XP]
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]этому нужно долго учится... думать