Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];




Вниз

Может быть глупый вопрос, но .... 


Smile   (2001-12-10 09:59) [0]

возможно ли все записи находящиеся в базе переводить в Excel?



Desdechado   (2001-12-10 10:55) [1]

в экселе делаешь "открыть файл", указываешь тип дбф - и вперед!



Саня   (2001-12-10 16:00) [2]

Возможно коряво, но у меня работает. Надоть только чтоб по указанному пути находился заранее созданый файл екселя, с отформатированными столбиками и т.д.
Код из работающей проги... Если не понятно то ? на ctd_2000@hotmail.ru


procedure TfmGlav.Button4Click(Sender: TObject);
var vExcel: OLEVariant;
i, n: integer;
begin
i:=5; (записи будут всавляться с пятой строки в екселе)
n:=1;
DataSourse1.DataSet.DisableControls; (и для TTable и для TQuery)
DataSourse1.DataSet.First;
vExcel:=CreateOleObject("Excel.Application");

(здесь надо чтобы книга екселя находилась по указанному пути)
vExcel.Workbooks.Open("\\Sasha\c\Rabota\Table\Для отбора.xls", False);
while not DataSourse1.DataSet.eof do
begin
vExcel.Cells[1,1].Value:="Заголовок отчета"; (в первую строку пишем заголовок для переданных данных)
vExcel.Cells[i,1].Value:=""+inttostr(n)+""; (нумерация по первой колонке)

vExcel.Cells[i,2].Value:=DataSourse1.DataSet.fieldbyname("Name").asstring;
vExcel.Cells[i,3].Value:=DataSourse1.DataSet.fieldbyname("RegN").asstring;
vExcel.Cells[i,4].Value:=DataSourse1.DataSet.fieldbyname("City").asstring;
(и т.д. для всех нужных полей БД)
dsZak.DataSet.next;
inc(i);
inc(n);
end;
DataSourse1.DataSet.EnableControls;

vExcel.Visible := True;

end;



БАА   (2001-12-10 16:10) [3]

2Desdechado:А таблицу являющуюся результатом выполнения скюэля таким же образом можно?



Саня   (2001-12-10 16:13) [4]

Да..., для этого и поставлено
vExcel.Cells[i,2].Value:=DataSourse1.DataSet.fieldbyname("Name").asstring

а не
vExcel.Cells[i,2].Value:=Table1.fieldbyname("Name").asstring
или
vExcel.Cells[i,2].Value:=TQueri1.fieldbyname("Name").asstring



Delirium   (2001-12-10 16:15) [5]

>Саня
Всё это хорошо, но работать будет крайне медленно, проще накопить таблицу в RichEdit, разделяя значения #9. А в Excel перенести через Clipboard, скорость возрастёт на два порядка.



Саня   (2001-12-10 16:24) [6]

Попробую обязательно... :)
Да...Может не понял я чегойто...., а в автомате то это можно сделать (через буфер в смысле) - по нажатию одной кнопки юзером...
Они у меня не очень то шарят (на уровне вкл и выкл)
А так, действительно - если база большая да еще и по сетке, то подтормаживает. Но я им на это время формочку высвечиваю с картинками...



Delirium   (2001-12-10 16:37) [7]

Я кинул пример, см. в других вопросах



Desdechado   (2001-12-10 19:56) [8]

2 БАА
если из своей программы, то можно что угодно (сохранить в дбф, а потом открыть в экселе, или прямо перегнать туда, как предлагается выше)



Yuri Btr   (2001-12-11 09:33) [9]

Вообще то можно сделать енто в обход Дельфей,
В Excele(Menu) --> Data --> Import external data --> New database Query
Составляешь запрос в Microsoft Query на SQL и рефрешишь его каждый раз после изменения данных в базе. (пункты меню взяты из англ. Office - аналогично для русского)




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.02 c
14-42559          fliz                  2001-11-19 10:43  2002.01.14  
Монитор полетел.


1-42427           Катерина              2001-12-24 08:15  2002.01.14  
помогите с отчетом


14-42546          T2                    2001-11-17 02:43  2002.01.14  
Delphi, версия номер 13


1-42421           @andrew               2001-12-26 16:42  2002.01.14  
Привет Всем. Есть вопросик по TStringGrid.


6-42527           Alex Dobrushin        2001-10-19 16:12  2002.01.14  
Deployment Corba Applications