![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подключаюсь к БД 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;