Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подключаюсь к БД Access+Excel с помощью Microsoft.Jet.OLEDB.4.0 [D7, Excel+mdb]


dimm22 ©   (2004-05-27 16:06:00) 

Задача вытащить некоторые данные из mdb в лист Excel. Данные в файл Excel вношу с помощью AdoQuery с параметрами. Всё работает, но получаю в Excel текстовые данные, хотя хочу получить float (допустим '14.3 а не 14,3). Параметры присваиваю так adoqueryUpdate.Parameters.ParamByName('volume').Value:=adoquery1.FieldByName('volume').AsFloat; Сам параметр volume имеет тип ftFloat; Те     adoqueryUpdate.Parameters.ParamByName('volume').DataType:=ftFloat; А в файле внесённые данные получаются текстовыми :-( Может чего недопонимаю, это мой первый опыт в связке Microsoft.Jet.OLEDB.4.0+Excel.


dimm22   (2004-05-27 18:55:00) [1]


> DCoder   (27.05.04 18:31) [3]

Да уж больно медленно получается :-( Через OLEDB.4.0 шустрее будет. Но всё равно спасибо.


DCoder   (2004-05-27 18:31:00) [2]

не стоит работать с экселем как с СУБД
он для этого не предназначен изначально.
Надежней всего и правильней работать с ним через OLE Server

uses OleServer,COMObj,OleCtnrs,ActiveX, variants;
.....
var ExcelApp, Workbook, WorkSheet: OLEVariant;
begin
 ExcelApp := CreateOleObject('Excel.Application');
 ExcelApp.SheetsInNewWorkbook := 1;
 Workbook := ExcelApp.WorkBooks.Add;
 WorkSheet := Workbook.Worksheets[1];
 WorkSheet.Activate;
 WorkSheet.PageSetup.Orientation := xlLandscape;
 WorkSheet.PageSetup.PaperSize := xlPaperA4;
 WorkSheet.Name:='от '+SellerName;
 WorkSheet.Cells[1,3]:='СЧЕТ-ФАКТУРА';
 WorkSheet.Cells[1,3].Font.Size:=16;
 WorkSheet.Cells[1,3].Font.Bold:=True;
и погнал: писать в лист, читать также со всеми атрибутами художественного оформления


dimm22   (2004-05-27 18:13:00) [3]


> А каким образом ты вносишь данные в Ёксель?

При помощи AdoQuery, вот его текст:

Update [Лист1$] set weight=:weight,
volume=:volume,
DiscountCode=:DiscountCode,
netstock=:netstock
where partno=:partno


DCoder   (2004-05-27 18:00:00) [4]

А каким образом ты вносишь данные в Ёксель?
Если как положено, через OleServer то указывай формат ячейки
я делаю так

case DataSet.Fields[i].DataType of
 ftString: ExcelApp.Selection.NumberFormat := '@';
 ftInteger,ftSmallInt: ExcelApp.Selection.NumberFormat := '0';
 ftFloat,ftBCD,ftCurrency: ExcelApp.Selection.NumberFormat := '0.00';
 ftDate: ExcelApp.Selection.NumberFormat := 'dd-mm-yyyy;@';
else ExcelApp.Selection.NumberFormat := '@';
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо