Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.11.23;
Скачать: CL | DM;

Вниз

копирование определенного набора данных из dbgrid в clipboard   Найти похожие ветки 

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

Здравствуйте,мастера!Помогите разобраться с простой вещью.Нужно скопировать определенный столбец из таблицы в БД,допутим 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;

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


 
Palladin ©   (2008-10-15 17:03) [1]

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


 
Palladin ©   (2008-10-15 17:04) [2]

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


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


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


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

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


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


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

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

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

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


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


> kate158   (15.10.08 17:14) [4]


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


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


 
Anatoly Podgoretsky ©   (2008-10-15 17:25) [6]

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

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


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

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


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


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

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


 
Jeer ©   (2008-10-15 18:08) [9]


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


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


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


> 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;


 
kate158   (2008-10-15 18:10) [11]


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


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

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


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


> kate158   (15.10.08 17:14) [4]

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

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


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


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

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


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

мастера,я не знаю чем Вы мне помогаете,но,в беседе с Вами,каким то образом получается рабочий код.)))
вот он:
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:41) [15]


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

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

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


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

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

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

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

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


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

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

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


 
Anatoly Podgoretsky ©   (2008-10-15 19:25) [18]

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

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


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


> kate158   (15.10.08 18:24) [14]


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


 
Anatoly Podgoretsky ©   (2008-10-15 19:40) [20]

> Сергей М.  (15.10.2008 19:35:19)  [19]

И про фотку вопрос мимо ушей пропустила.


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


> Anatoly Podgoretsky ©   (15.10.08 19:40) [20]


Ты думаешь, мы могли бы там что-то выдающееся узреть ?


 
Anatoly Podgoretsky ©   (2008-10-15 19:51) [22]

> Сергей М.  (15.10.2008 19:45:21)  [21]

Я стараюсь верить в хорошее.
Однажды Бритни Спирс узрел.


 
Сергей М. ©   (2008-10-15 19:57) [23]


> Anatoly Podgoretsky ©   (15.10.08 19:51) [22]


> Однажды Бритни Спирс узрел.


Типа ты ей про формулу S + N втёр, а она тебе фотку в благодарность ?)


 
Сергей М. ©   (2008-10-15 20:08) [24]


> Anatoly Podgoretsky ©   (15.10.08 19:51) [22]


Упс !
С Катюшей ю дыд ит эген ?)


 
Anatoly Podgoretsky ©   (2008-10-15 20:47) [25]

> Сергей М.  (15.10.2008 19:57:23)  [23]

Ну примерно так и было :-)


 
kate158   (2008-10-16 09:34) [26]


> Плохиш ©   (15.10.08 18:41) [15]


> Anatoly Podgoretsky ©   (15.10.08 19:25) [18]

+"_"

> Anatoly Podgoretsky ©   (15.10.08 19:00) [16]

я предпочитаю не светиться.)

> Сергей М. ©   (15.10.08 19:35) [19]

можно и стринглист,aStrList.Add(s);
Казалось,что сессия уже давно закрыта.)


 
Плохиш ©   (2008-10-16 12:05) [27]


> можно и стринглист,aStrList.Add(s);

И что это за s такой?


 
kate158 ©   (2008-10-16 12:12) [28]

эмм..что-то типа этого
aStrList.Add(aDataset.Fields[5].AsString + "|" );


 
Сергей М. ©   (2008-10-16 12:13) [29]


> kate158 ©   (16.10.08 12:12) [28]


А палка-то зачем на конце ?)


 
kate158 ©   (2008-10-16 12:14) [30]


> Сергей М. ©   (16.10.08 12:13) [29]

для красоты :D


 
Сергей М. ©   (2008-10-16 12:17) [31]

А, ну да ..
Я сообразил - смайлик это, чтоб юзеру веселей было)


 
stas ©   (2008-10-16 12:22) [32]


> kate158 ©   (16.10.08 12:14) [30]

тогда так :-D

aStrList.Add("|***"+aDataset.Fields[5].AsString + "***|" );


 
Anatoly Podgoretsky ©   (2008-10-16 12:30) [33]

> Сергей М.  (16.10.2008 12:13:29)  [29]

А как узнать конец или нет?
Но я против палки вообще, принято или запятая или табуляция, но все зависит от задачи.


 
Сергей М. ©   (2008-10-16 12:35) [34]


> Anatoly Podgoretsky ©   (16.10.08 12:30) [33]


> как узнать конец или нет?


Дык а стринглист-то почему начал фигурировать ?
Как раз потому что при его использовании о конце и его прощупывании заботиться не надо)

Хотя я тоже за CSV- или TSV-формат - под него заточены все более-менее приличные приложения, позволяющие импорт текста из клипборда


 
Anatoly Podgoretsky ©   (2008-10-16 13:16) [35]

> Сергей М.  (16.10.2008 12:35:34)  [34]

Ну с стринглист и разделитель не нужен, но что нам известно о реальной задаче?


 
Сергей М. ©   (2008-10-16 13:31) [36]


> Anatoly Podgoretsky ©   (16.10.08 13:16) [35]


> что нам известно о реальной задаче?


Да собственно ничего..
Только "как скопировать"


 
Плохиш ©   (2008-10-16 13:55) [37]


> Anatoly Podgoretsky ©   (16.10.08 12:30) [33]
> > Сергей М.  (16.10.2008 12:13:29)  [29]
>
> А как узнать конец или нет?
> Но я против палки вообще

Прям фрейдизм какой-то :-))))


 
Anatoly Podgoretsky ©   (2008-10-16 14:07) [38]

> Сергей М.  (16.10.2008 13:31:36)  [36]

Ну и немного кода, например без разделителей значений


 
Anatoly Podgoretsky ©   (2008-10-16 14:10) [39]

> Плохиш  (16.10.2008 13:55:37)  [37]

Ну подумаешь НЕ пропустил



Страницы: 1 вся ветка

Текущий архив: 2008.11.23;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.01 c
15-1221911341
Урсулапов
2008-09-20 15:49
2008.11.23
Какой программой можно редактировать субтитры?


2-1223964676
vajo
2008-10-14 10:11
2008.11.23
Преобразовать мемо поле в строку.


2-1223880639
_Anatolii_
2008-10-13 10:50
2008.11.23
Сортировка по значению Combobox


2-1223575339
Первокласник Вася
2008-10-09 22:02
2008.11.23
Свойство SQL Query1


2-1223445414
Девушка
2008-10-08 09:56
2008.11.23
cxGrid столбец типа ImageComboBox отобразить значение поля