Текущий архив: 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.061 c