Decision CUBE的顯示中文 |
尚未結案
|
goodjimmy
一般會員 發表:20 回覆:26 積分:9 註冊:2004-02-19 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
引言: 請問各位高手: 當使用Decision Cube時,資料欄位是英文,如何用程式碼去控制,我們要顯示的中文名稱呢? 就如同在Decision Cube的Dimension Settings的功能一樣 因為我的程式分析是動態的,所以出來的欄位不一定相同,所以要用程式碼去判斷出來的欄位後,再顯示中文名稱goodjimmy 你好 我記得沒錯的話,應該在Decision Cube 所連結的DataSet元件的AfterOpen事件中,完成Field.DisplayLabel='中文欄位名稱' 即可 procedure TForm1.Query1AfterOpen(DataSet: TDataSet); Var i : Integer ; begin For i:=0 To DataSet.FieldCount-1 Do Begin With DataSet.Fields[i] Do Begin If FieldName='abc' Then DisplayLabel := 'abc’ Else If FieldName='def' Then DisplayLabel := 'def’ ........ Else If FieldName='ID' Then DisplayLabel := '代碼’; End; End; End;_______________________________________ 深藍的魚,祝您好運..........連.連 |
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
Run time 借由 TDssCubeEditor 來設定 DecisionCube, 參考看看:
procedure TFmDWViwer.SetDSSCubeEditor(aCube: TDecisionCube); var aWindow: TDssCubeEditor; i,idx:integer; Fnm,Dnm,Fmt:string; begin if not assigned(aCube) then Exit; aCube.DimensionMap.Clear; aWindow := TDssCubeEditor.Create(application); try if aWindow.SInitialize(aCube) then begin for i:=0 to aWindow.FieldList.Count-1 do begin aWindow.FieldList.itemindex:=i; aWindow.FieldListClick(aWindow.FieldList); if copy(aWindow.FieldList.Items[i],length(aWindow.FieldList.Items[i]),1)='*' then Fnm:=copy(aWindow.FieldList.Items[i],1,length(aWindow.FieldList.Items[i])-1) else Fnm:=aWindow.FieldList.Items[i]; Dnm:=SqlValue('select ATT_NAME from SCHEMA_COLS where TBL_NAME=' aa(RPID) ' and IK_COL=' aa(Fnm)); // 取欄位中文名稱 if Dnm='' then Dnm:=Fnm; idx:=CKLSum.Items.IndexOfName(Fnm); if idx<>-1 then begin if Dnm=Fnm then Dnm:=CKLSum.Items.Values[Fnm]; aWindow.CaptionEdit.Text:=Dnm; awindow.HandleFieldEdit(awindow.CaptionEdit); if pos('加總',Dnm)=1 then aWindow.TypeEdit.ItemIndex:=1 else if pos('平均',Dnm)=1 then aWindow.TypeEdit.ItemIndex:=3 else if pos('最大',Dnm)=1 then aWindow.TypeEdit.ItemIndex:=5 else if pos('最小',Dnm)=1 then aWindow.TypeEdit.ItemIndex:=4 else if pos('總筆數',Dnm)=1 then aWindow.TypeEdit.ItemIndex:=2 else aWindow.TypeEdit.ItemIndex:=7; awindow.HandleFieldEdit(awindow.TypeEdit); awindow.ActiveEdit.ItemIndex:=1; awindow.HandleFieldEdit(awindow.ActiveEdit); Fmt:=SqlValue('select DB_CTRL from SCHEMA_COLS where TBL_NAME=' aa(RPID) ' and IK_COL=' aa(Fnm));//取數字格式 if Fmt='' then awindow.FormatEdit.Text:='###,###,###,###.##' else awindow.FormatEdit.Text:=Fmt; awindow.HandleFieldEdit(awindow.FormatEdit); end; idx:=CKLDimX.Items.IndexOfName(Fnm); if idx<>-1 then begin aWindow.CaptionEdit.Text:=Dnm; awindow.HandleFieldEdit(awindow.CaptionEdit); aWindow.TypeEdit.ItemIndex:=0; awindow.HandleFieldEdit(awindow.TypeEdit); awindow.ActiveEdit.ItemIndex:=1; awindow.HandleFieldEdit(awindow.ActiveEdit); if Dnm='日期' then begin awindow.BinEdit.ItemIndex:=0; awindow.HandleFieldEdit(awindow.BinEdit); awindow.FormatEdit.Text:='YYYY/MM/DD'; awindow.HandleFieldEdit(awindow.FormatEdit); end else begin awindow.FormatEdit.Text:='####'; awindow.HandleFieldEdit(awindow.FormatEdit); end; end; idx:=CKLDimY.Items.IndexOfName(Fnm); if idx<>-1 then begin Dnm:=CKLDimY.Items.Values[Fnm]; aWindow.CaptionEdit.Text:=Dnm; awindow.HandleFieldEdit(awindow.CaptionEdit); aWindow.TypeEdit.ItemIndex:=0; awindow.HandleFieldEdit(awindow.TypeEdit); awindow.ActiveEdit.ItemIndex:=1; awindow.HandleFieldEdit(awindow.ActiveEdit); Fmt:=SqlValue('select DB_CTRL from SCHEMA_COLS where TBL_NAME=' aa(RPID) ' and IK_COL=' aa(Fnm)); awindow.FormatEdit.Text:=Fmt; awindow.HandleFieldEdit(awindow.FormatEdit); end; end; awindow.OKButtonClick(awindow.OKButton); //awindow.ShowModal; end; finally aWindow.free; end; end; |
goodjimmy
一般會員 發表:20 回覆:26 積分:9 註冊:2004-02-19 發送簡訊給我 |
|
goodjimmy
一般會員 發表:20 回覆:26 積分:9 註冊:2004-02-19 發送簡訊給我 |
我的程式構想 procedure TDataModule1.DecisionCube1AfterOpen(DataCube: TCustomDataStore);
var
i : Integer ;
begin
For i:=0 To DataCube.DimensionMapCount-1 Do Begin
With DataCube.DimensionMap.Items[i] Do Begin
If DataCube.DimensionMap.Items[i]Fieldname='TDATE' Then
DataCube.DimensionMap.Items[i].DisplayName:='日期'
Else If DataCube.DimensionMap.Items[i].FieldName='INH_YYYMM' Then
DataCube.DimensionMap.Items[i].DisplayName:='日期'
Else if DataCube.DimensionMap.Items[i].FieldName='SUM(INH_PTCT)' then
DataCube.DimensionMap.Items[i].DisplayName:='總住院人數'
Else If DataCube.DimensionMap.Items[i].FieldName='INH_SEX' Then
DataCube.DimensionMap.Items[i].DisplayName:='性別';
End;
end;
程式可以正常的編譯,但在DecisionPivot,DecisionGrid,仍然無法顯示中文
希望各位高手,能幫我看看程式那裡出錯,而無法顯示
謝謝大家
|
goodjimmy
一般會員 發表:20 回覆:26 積分:9 註冊:2004-02-19 發送簡訊給我 |
對不起,忘了縮排,重post一下程式碼
procedure TDataModule1.DecisionCube1AfterOpen(DataCube: TCustomDataStore); var i : Integer ; begin For i:=0 To DataCube.DimensionMapCount-1 Do Begin With DataCube.DimensionMap.Items[i] Do Begin If DataCube.DimensionMap.Items[i]Fieldname='TDATE' Then DataCube.DimensionMap.Items[i].DisplayName:='¤é´Á' Else If DataCube.DimensionMap.Items[i].FieldName='INH_YYYMM' Then DataCube.DimensionMap.Items[i].DisplayName:='¤é´Á' Else if DataCube.DimensionMap.Items[i].FieldName='SUM(INH_PTCT)' then DataCube.DimensionMap.Items[i].DisplayName:='Á`¦í°|¤H¼Æ' Else If DataCube.DimensionMap.Items[i].FieldName='INH_SEX' Then DataCube.DimensionMap.Items[i].DisplayName:='©Ê§O'; End; end; end; |
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
goodjimmy
一般會員 發表:20 回覆:26 積分:9 註冊:2004-02-19 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |