全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1167
推到 Plurk!
推到 Facebook!

Decision CUBE的顯示中文

尚未結案
goodjimmy
一般會員


發表:20
回覆:26
積分:9
註冊:2004-02-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-23 18:44:04 IP:218.162.xxx.xxx 未訂閱
請問各位高手: 當使用Decision Cube時,資料欄位是英文,如何用程式碼去控制,我們要顯示的中文名稱呢? 就如同在Decision Cube的Dimension Settings的功能一樣 因為我的程式分析是動態的,所以出來的欄位不一定相同,所以要用程式碼去判斷出來的欄位後,再顯示中文名稱
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-23 21:50:18 IP:211.20.xxx.xxx 未訂閱
引言: 請問各位高手: 當使用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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-23 22:03:43 IP:218.32.xxx.xxx 未訂閱
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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-07-24 08:08:40 IP:218.162.xxx.xxx 未訂閱
感恩,兩位大大的回答 c大的回答,我試過了,還是無法顯示在DecisionPivot,DecisionGrid上 m大的寫法,很有功力,可是小弟我還在解讀中,謝謝兩位的回答,讓我可以參考
goodjimmy
一般會員


發表:20
回覆:26
積分:9
註冊:2004-02-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-07-24 18:16:00 IP:61.227.xxx.xxx 未訂閱
我的程式構想 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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-07-24 18:20:34 IP:61.227.xxx.xxx 未訂閱
對不起,忘了縮排,重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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-07-24 22:26:22 IP:218.32.xxx.xxx 未訂閱
DataCube.DimensionMap.Items[i].DisplayName:='日期' 改成 DataCube.DimensionMap.Items[i].Name:='日期' 試試看
goodjimmy
一般會員


發表:20
回覆:26
積分:9
註冊:2004-02-19

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-07-24 22:38:04 IP:61.227.xxx.xxx 未訂閱
感謝 Mickey大大的解答,問題已經解決了 感恩喔!!
系統時間:2024-05-24 1:42:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!