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

Вниз

как отобразить юникодовские символы из базы в отчете FastReports   Найти похожие ветки 

 
kivadim   (2006-12-04 14:01) [0]

на основе данных из таблиц, в которых есть поля типа nvarchar провожу выборку для отчета, который делаю при помощи компонентов FastReports 2.54. Запрос возвращает данные как надо, т.е. все юникодовсеи символы (а именно румынские) на месте, но в самом отчете они не выводятся, т.е заменяются на стандартные латинские, хотя для каждого поля мемо в отчете поставил шрифт поддерживающий рум. символы.

Вопрос: как заставить FastReports 2.54 отображать корректно данные символы?

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


procedure TfDM.frDBdsReport_1Next(Sender: TObject);
var M_ : TfrMemoView;
begin
M_ := frReport_1.FindObject("M_nume_diviz_rom") as TfrMemoView;
M_.Memo.Text := qWork.FieldByName("nume_diviz_rom").AsVariant;// Value;
end;


 
kivadim   (2006-12-04 16:02) [1]

короче почитал я инфу и оказывается версия FastReports 2.54 не поддерживает юникод... тогда прийдется ручками клепать отчетик.

кто-нибудь может поделиться кодом сохранения данных (юникод) в файл html например


 
Anatoly Podgoretsky ©   (2006-12-04 16:53) [2]

> kivadim  (04.12.2006 16:02:01)  [1]

Юникод в в файл html - смеешься?


 
kivadim   (2006-12-04 17:04) [3]

ну почему же смеюсь.. вот вроде получилось

procedure TfMain.Select_HTML_Report_1;
var
 shtml     : widestring;
 htmlfile  : TextFile;
 i         : integer;
 AvailableFields: set of  TFieldType;
begin
AvailableFields:=[ftWideString, {ftDate,  ftFloat,} ftInteger];
_DM.qWork.Close;
_DM.qWork.SQL.Text := "здесть текс запроса";
_DM.qWork.Open;

 shtml:= "<html> <head> <title>";

 shtml:= shtml + "</title></head>" + #13#10;
 shtml:= shtml + "<body>" + #13#10;

 shtml:= shtml + "<table border="1" width="100%">" + #13#10;
 shtml:= shtml + "<tr>" + #13#10;
 for i:=0 to _DM.qWork.FieldCount-1 do
 begin
   if _DM.qWork.Fields[i].DataType
      in AvailableFields  then
   begin
     shtml:= shtml + "<td>";
     shtml:= shtml + "" + _DM.qWork.Fields[i].DisplayName + "";
     shtml:= shtml + "</td>" + #13#10;
   end;
 end;{for}
 shtml:= shtml + "</tr>" + #13#10;

 while not _DM.qWork.Eof do
 begin
   shtml:= shtml + "<tr>" + #13#10;
   for i:=0 to _DM.qWork.FieldCount-1 do
   begin
     if _DM.qWork.Fields[i].DataType
        in AvailableFields then
     begin
       shtml:= shtml + "<td>";
       if _DM.qWork.Fields[i].DataType = ftWideString then
        shtml:= shtml + _DM.qWork.Fields[i].AsVariant// AsString;
       else if _DM.qWork.Fields[i].DataType = ftInteger then
        shtml:= shtml + _DM.qWork.Fields[i].AsString;
       shtml:= shtml + "</td>" + #13#10;
     end;
   end;{for}
   shtml:= shtml + "</tr>" + #13#10;
   _DM.qWork.Next;
 end;{while}
 shtml:= shtml + "</table>" + #13#10;

 shtml:= shtml + "</body></html>";

AssignFile(htmlfile, ChangeFileExt(Application.ExeName,".htm"));
Rewrite(htmlfile);
shtml := UTF8Encode(shtml);
WriteLn(htmlfile, shtml);
CloseFile(htmlfile);
end;


 
kivadim   (2006-12-04 17:10) [4]

но все в fastreporte прикольнее было бы...
никто не подскажет где можно скачать (без денег) версию поддерживающую юникод, вроде версии 3 и выше умеют это делать


 
Stanislav ©   (2006-12-04 17:24) [5]

А в базе поле какого типа?


 
kivadim   (2006-12-04 17:33) [6]

> Stanislav (04.12.06 17:24) [5]

поле имеет тип nvarchar


 
Stanislav ©   (2006-12-04 17:38) [7]

С русским нормально работает.


 
kivadim   (2006-12-04 17:44) [8]

>> Stanislav ©   (04.12.06 17:38) [7]

это утверждение или вопрос?
и что именно с русским работает нормально?

в fastreporte c русским все лады и хтмл-е все в порядке


 
alexandr ©   (2006-12-04 17:44) [9]

у тебя там реально нужен уникод?
что, несколько языков одновременно в одном отчете?
Если нет, то просто преобразуй.


 
kivadim   (2006-12-04 17:46) [10]

>> alexandr ©   (04.12.06 17:44) [9]

нет нужен только один язык...

поясни как именно преобразуй.. что во что если не сложно, а то недогоняю
примерчик там не помешает ;)


 
alexandr ©   (2006-12-04 17:50) [11]

да типа UTF8ToAnsi и т.п.
поищи.
потом эту функцию вставишь к фиелду у датасета.
а если вручную и дальше будешь делать, то и еще проще.


 
Anatoly Podgoretsky ©   (2006-12-04 20:39) [12]

> kivadim  (04.12.2006 17:04:03)  [3]

> ну почему же смеюсь.. вот вроде получилось

А это что UTF8Encode по твоему, это уже не Юникод, а UTF8


 
Anatoly Podgoretsky ©   (2006-12-04 20:39) [13]

> kivadim  (04.12.2006 17:46:10)  [10]

> поясни как именно преобразуй

S := WS;



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

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

Наверх




Память: 0.48 MB
Время: 0.044 c
15-1170349580
SergMsk
2007-02-01 20:06
2007.02.25
Куда залить файл?


2-1170771953
FIL-23
2007-02-06 17:25
2007.02.25
как узнать нажат ли рисунок?


15-1170648076
Slider007
2007-02-05 07:01
2007.02.25
С днем рождения ! 3 февраля


15-1170374311
hmmm
2007-02-02 02:58
2007.02.25
PHPMyAdmin


15-1170251680
Ученик чародея
2007-01-31 16:54
2007.02.25
PHP vs Delphi.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский