Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.04;
Скачать: CL | DM;

Вниз

База *.xls через ADO в Delphi   Найти похожие ветки 

 
Yurisimus   (2005-07-26 14:17) [0]

Уважаемые эксперты, проблема с базой Excel. Мне нужно программно создать Excel файл (с этим проблем нет) и потом программно же указать соответствующие форматы ячеек для столбцов (типа float, string, date, integer)... Если хотите предложить записать макрос в Excel, то лучше не отвечайте... Мне бы сам код посмотреть...


 
Nikolay M. ©   (2005-07-26 14:30) [1]

А почему обязательно через АДО?
Зачем суп есть вилкой, если есть ложка?


 
Yurisimus   (2005-07-26 14:41) [2]

О ложке поподробнее напиши плиз, а через адо потому как нужно делать не маленькие запросы к базе, поэтому подцепляюсь через ADOQuery...


 
Alex_Bredin ©   (2005-07-26 14:49) [3]

http://delphibase.spb.ru/?action=viewtopic&topic=winoffice


 
Nikolay M. ©   (2005-07-26 14:57) [4]

Ты уж раздели мух от котлет.
Сначала ты говоришь

> программно же указать соответствующие форматы ячеек для
> столбцов (типа float, string, date, integer)...

а потом вдруг

> нужно делать не маленькие запросы к базе

Или для тебя это одно и то же?

http://www.delphikingdom.com/asp/section.asp?id=16
Цикл статей "По волнам интеграции" ну и все, что рядом.


 
msguns ©   (2005-07-26 15:01) [5]

> программно же указать соответствующие форматы ячеек для
> столбцов (типа float, string, date, integer)...

Таких форматов у екселя нетути


 
Yurisimus   (2005-07-26 15:07) [6]

Николай, для тебя объясню поконкретнее...
Программа при включении проверяет создана ли база на диске, и если нет, то создает Excel файл программно, вот тут и нужно указать при создании формат ячеек, чтобы данные, которые будут забиваться отображались потом нормально. А твоё сравнение абсолютно двух разных вещей, таких как запрос и формат данных выглядит туповато...


 
Yurisimus   (2005-07-26 15:08) [7]

Николай, для тебя объясню поконкретнее...
Программа при включении проверяет создана ли база на диске, и если нет, то создает Excel файл программно, вот тут и нужно указать при создании формат ячеек, чтобы данные, которые будут забиваться отображались потом нормально. А твоё сравнение абсолютно двух разных вещей, таких как запрос и формат данных выглядит туповато...


 
Lexer ©   (2005-07-26 15:12) [8]

>Yurisimus, вот я как делаю:
function FieldToVariant(Field: TField): OLEVariant;
begin
 Result := EmptyStr;
 case Field.DataType of
   ftString, ftFixedChar, ftWideString, ftMemo, ftFmtMemo:
     Result := """" + Field.AsString;
   ftSmallint, ftInteger, ftWord, ftLargeint, ftAutoInc:
     Result := Field.AsInteger;
   ftFloat, ftCurrency, ftBCD:
     if (Field is TFloatField) and TFloatField(Field).Currency then
       Result := DoubleRound(Field.AsFloat, 2)
     else Result := Field.AsFloat;
   ftBoolean: Result :=
     Field.AsBoolean;
   ftDate, ftTime, ftDateTime:
     Result := Field.AsDateTime;
 end;
end;
********************************************

Ячейка := FieldToVariant(DataSet.Fields[I]);


 
msguns ©   (2005-07-26 15:45) [9]

Грузим ексель. Выбираем Сервис>Макрос>Начать запись>Ok
Щелкаем по ячейкам и назначаем им нужные форматы.
Сервис>Макрос>Остановить запись.
Сервис>Макрос>Макрос1>Войти

Смотрим на что-то вроде

   Selection.NumberFormat = "#,##0.00$"
   Columns("B:B").ColumnWidth = 17.29
   Range("B1").Select
   Selection.NumberFormat = "dd/mm/yy;@"
   Range("C1").Select
   Selection.NumberFormat = "@"
   Range("D1").Select
   Selection.NumberFormat = "0"
   Range("E1").Select
   Selection.NumberFormat = "#,##0.00$"


Потом все это по-обезьяньи копируем в код, в котором фиксируем Range.
Жмякаем F9, прога отрабатывает, открываем ексель и, о чудо! в чейках нужный формат ;)


 
Nikolay M. ©   (2005-07-26 15:47) [10]


> Yurisimus

Туповато выглядит твои неумение задавать вопросы и путаница с терминологией.
Ответа, зачем нужно форматировать ячейки екселя именно через АДО, от тебя не поступило. Как это сделать нормальными способами, сказано в [3] и [4].


 
Yurisimus   (2005-07-27 07:34) [11]

Lexer и msguns(удивлен твоему нормальному ответу) спасибо, попробую сейчас...

Николаю:
1. Моё неумение задавать вопросы объясняется тем, что я обошел систему форума и задал вопрос по OLE в базах, потому что в подразделе форума по OLE очень редко отвечают и вообще заглядывают туда...
2. С терминологией я не путаюсь...
3. Почему именно через ADO я уже ответил в пункте [3]...

З.Ы. Еще Никола вопросы будут?


 
Nikolay M. ©   (2005-07-27 09:49) [12]


> [11]

Помогать хаму желания не имею.



Страницы: 1 вся ветка

Текущий архив: 2005.09.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.029 c
14-1123568748
Ega23
2005-08-09 10:25
2005.09.04
С днем рождения! 9 августа


3-1121926481
Ирина
2005-07-21 10:14
2005.09.04
курсор


6-1116582908
Alex870
2005-05-20 13:55
2005.09.04
Удаленный логин


14-1123009670
Михаил(Киров)
2005-08-02 23:07
2005.09.04
Логи WinRoute


8-1114267883
COOLer
2005-04-23 18:51
2005.09.04
Ох уж этот TImage 2