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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.09.2009, 09:05
Gribok Gribok вне форума
Новичок
 
Регистрация: 25.09.2009
Сообщения: 53
Репутация: 4
По умолчанию Выгрузка определенного поля

Люди скажите как зделать чтоб выгружалось в Excel только выделенная строка DBGrid

Код:
var
xl:Variant;
bm: TBookmark;
col, row,i: Integer;
sline: string;
mem:TMemo;
Size: cardinal;
PRes: PChar;
BRes: boolean;
ExcelApp,Workbook,Colum,Sheet: OLEVariant;
TemplateFile,cn,un:String;

begin
// подрубаем кнопку каторая включает невидимые колонки таблици
Button4.Click;

// создаем масив
Size := MAX_COMPUTERNAME_LENGTH + 1;
PRes := StrAlloc(Size);
if BRes then cn:= StrPas(PRes);

Size := MAX_COMPUTERNAME_LENGTH + 1;
PRes := StrAlloc(Size);
if BRes then un := StrPas(PRes);

Screen.Cursor := crArrow;
DBGrid1.DataSource.DataSet.DisableControls;
bm := DBGrid1.DataSource.DataSet.GetBookmark;
DBGrid1.DataSource.DataSet.First;
i:=1;

// создаём объект Excel
begin
ExcelApp:=CreateOleObject('Excel.Application');
ExcelApp.Application.EnableEvents:=false;
ExcelApp.WorkBooks.Add;
ExcelApp.WorkBooks[1].WorkSheets[1].name := 'Отчёт';
ExcelApp.Visible := false;
Colum:=ExcelApp.Workbooks[1].WorkSheets['Отчёт'].Columns;

for col := 0 to DBGrid1.FieldCount-1 do
if  DBGrid1.Columns[col].Visible then begin
Colum.Columns[i].ColumnWidth:=20;Inc(i);
end;

Colum:=ExcelApp.Workbooks[1].WorkSheets['Отчёт'].Rows;
Colum.Rows[2].Font.Bold:=true;
Colum.Rows[2].Font.Size:=12;
Colum.Rows[1].Font.Bold:=true;
Colum.Rows[1].Font.Color:=0;
Colum.Rows[1].Font.Size:=12;
ExcelApp.Visible := false;

begin
mem := TMemo.Create(Self);
mem.Visible := false;
mem.Parent := Form1;
mem.Clear;
sline := '';
sline :=(#9'БД студентов на '+DateToStr(date));
mem.Lines.Add(sline);
sline := '';

for col := 0 to DBGrid1.FieldCount-1 do
if  DBGrid1.Columns[col].Visible then
sline := sline + DBGrid1.Columns[col].Title.Caption + #9;
mem.Lines.Add(sline);
mem.Lines.Add('');
for row := 0 to DBGrid1.DataSource.DataSet.RecordCount-1 do

begin
sline := '';
for col := 0 to DBGrid1.FieldCount-1 do
if  DBGrid1.Columns[col].Visible then
sline := sline + DBGrid1.Fields[col].AsString + #9;
mem.Lines.Add(sline);
DBGrid1.DataSource.DataSet.Next;
if DBGrid1.DataSource.DataSet.Eof then Break;
end;

mem.SelectAll;
mem.CopyToClipboard;
begin
ExcelApp.Visible := true;
ExcelApp.Workbooks[1].WorkSheets['Отчёт'].Paste;
end;


DBGrid1.DataSource.DataSet.GotoBookmark(bm);
DBGrid1.DataSource.DataSet.FreeBookmark(bm);
DBGrid1.DataSource.DataSet.EnableControls;
Screen.Cursor := crArrow;
Button5.Click;
end;
end;
end;
так я выгруаю всю Бд
а мне нужно только выделеную строку
что исправить???
Ответить с цитированием
  #2  
Старый 03.10.2009, 17:46
Sed0Y Sed0Y вне форума
Прохожий
 
Регистрация: 29.09.2009
Сообщения: 10
Репутация: 10
По умолчанию примерно так.... дальше я думаю ты додумаешься

если строка выделенная то...

Код:
if (DBGrid1.SelectedRows.CurrentRowSelected = True) then...
Ответить с цитированием
  #3  
Старый 03.10.2009, 17:52
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Gribok, всё так же как в твоём коде только:
1. ты НЕ переходишь на первую строку
2. после выгрузки текущей строки ты НЕ переходишь на следующую строку
вобщем делаешь выгрузку одной строки без цыкла
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter