Форум: "Базы";
Поиск по всему сайту: 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.019 c
3-42353           Ser GIK               2001-12-07 23:22  2002.01.14  
Подскажите чудаку!


1-42426           Alex44                2001-12-24 10:38  2002.01.14  
Fonts v TTreeView


3-42383           Serega__2             2001-12-13 12:09  2002.01.14  
Подскажите плз каким образом перенести структуру и данные базы под MSSQL7 с одной машины на другую?


3-42333           Марина                2001-12-10 11:07  2002.01.14  
Скроллинг мыши


3-42357           Cossys                2001-12-11 18:02  2002.01.14  
Хитрый фильтр - никак не работает