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

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

Изменение порядка значений при экспорте в Excel [D5, MSSQL]


petrovskyi ©   (2006-11-16 13:49:00) 

Фигня какая-то получается. Есть ADODataSet полученный из хранимой процедуры. В EhDbGrid (EhLib v.4.1, недавно установил) вся информация отображается правильно. А вот при выбросе информации в Excel в некоторых полях (на первый взгляд абсолютно без системы, потому что все числовые поля в Delphi имеют тип BCDField) значение учеличивается на 4 порядка. Причем это только во вновь разрабатываемом модуле. В старых модулях все нормально.  Есть, правда еще один ньюанс: на днях переустанавливал ПО на компьютере и вместо MS Office 2000  установил MS Office 2003, а в Delphi используется модуль Excel2000.
Кто что может объяснить?


Petrovskyi   (2006-11-16 16:51:00) [1]

> Vadim.Spb [6]
Попробовал - не помогло.
А помогло - вывод самих полей без преобразования в строку.
Почему так - не понимаю. Но вопрос закрыт.
Всем спасибо за помощь.


ANB   (2006-11-16 16:31:00) [2]


> Petrovskyi   (16.11.06 15:38) [5]

Убрать формат попробуй


Petrovskyi   (2006-11-16 15:38:00) [3]

>ANB [3]
Так преобразовываю и форматирую

> Vadim.Spb [4]
вот код

   ...
   ISheet.Range['B7:B12', EmptyParam].NumberFormat := '# ### ##0';
   ISheet.Range['C6:C12', EmptyParam].NumberFormat := '# ### ##0';
   ISheet.Range['D6:D12', EmptyParam].NumberFormat := '# ### ##0';
   ISheet.Range['E6:E12', EmptyParam].NumberFormat :=  '# ##0'+DecimalSeparator+'00';

   MngApprArray := VarArrayCreate([0,5,0,4], varVariant);
   with ADODataSet02 do begin
     first;
     i := 0;
     while not eof do begin
       MngApprArray[i,0] := FieldByName('Field1').asString;
       MngApprArray[i,1] := CurrToStr(FieldByName('Field2').AsCurrency);
       MngApprArray[i,2] := CurrToStr(FieldByName('Field3').AsCurrency);
       MngApprArray[i,3] := CurrToStr(FieldByName('Field4').AsCurrency);
       MngApprArray[i,4] := FloatToStr(FieldByName('Field5').Value);
       i := i + 1;
       next;
     end;
   end;
   IRange.Value := MngApprArray;


Vadim.Spb   (2006-11-16 15:25:00) [4]

Petrovskyi [2]
Так покажи код!


ANB   (2006-11-16 14:45:00) [5]


> Petrovskyi   (16.11.06 14:12) [2]

преобразуй в строку и не мучайся. а в экселе сделай формат ячейки числовой


Petrovskyi   (2006-11-16 14:12:00) [6]

В том то и дело, что работаю не через компоненты, а аналогичный код в других модулях, написанных ранее, рабатает нормально.


Vadim.Spb   (2006-11-16 13:58:00) [7]

Чтобы не попадать на такие и прочие ошибки - проще один раз освоить экспорт в Excel не через компоненты, а своим кодом.


Наверх

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