把表名也存入pubdm.DictTable 啊。

解决方案 »

  1.   

    你要是会sql语句,你就不会提这样的问题了我认为你应该学一下:你会发现这不是问题
      

  2.   

    问题写错了吧,好象Delphi中没有TDadaSet,只有TDataSet
      

  3.   

    我建议你写一个非可视化控件,用于来控制翻译,我提供以下大致思路:
    在控件中提供一个类似于Items这样的用于存放所有字段,再发布一个
    属性 ToChinese Boolean型的,用于控制是否做翻译;Items中填入的
    如下示例:
    No^编号
    Name^姓名
    Birth^出生年月^左边为字段名,右边为中文名
    这样做的原因是可以在控件中实现将这些字符串通过分解成英文字段和
    中文名,再将中文名这个字符串赋给Fields的displaylabel,就达到
    翻译的效果,这种速度绝对比从数据库里读出来快多了,也是一种很好
    的解决方案,在进行批量处理的时候,可以考虑这种非可视控件处理的
    模式,下面是我提供的比较核心的处理“翻译”的过程.procedure TFInterface.DoTranslate(toChinese : Boolean);
    var
      I : Integer;
      FName : String;
      function GetCDisplayLabel(FName : String) : String;
      var
        I : Integer;
        EString ,CString, theString : String;
        SPos : Integer;
      begin
        for I:=0 to FEtoCFieldsInfo.Count-1 do begin
          theString:=Trim(FEtoCFieldsInfo[I]);
          SPos:=Pos(ECListSep,theString);
          EString:=Copy(theString,1,SPos-1);
          CString:=Copy(theString,SPos+1,Length(theString)-SPos);
          if EString=FName then begin
            Result:=CString;
            Exit;
          end;
        end;
        Result:='';
      end;
    begin
      if FEtoCFieldsInfo.Count=0 then Exit;
      for I:=0 to Self.Owner.ComponentCount-1 do begin
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        if (Self.Owner.Components[I] is TField) then begin
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          FName:=TField(Self.Owner.Components[I]).FieldName;
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          if not toChinese then
            TField(Self.Owner.Components[I]).DisplayLabel:=FName
          else
            if GetCDisplayLabel(FName)<>'' then
              TField(Self.Owner.Components[I]).DisplayLabel:=GetCDisplayLabel(FName);
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        end;
      end;
    end;这个组件我们有但是我不想给你,毕竟如果你按照思路实现了
    你的需求,那是你会收获很大,总比直接使用好。你上面是一种想法,但是会很麻烦,而且从数据库里读出来不是
    明智之举,如果愿意,可以试一下我的这个办法。good luck
      

  4.   

    我认为是你的数据库设计有问题,一个表为两个字段(id号{主键})(表名)。另一个表为(id号{外键})(字段名)(注释)。然后用query你就可以任意查询了,数据库的设计很重要哦!!
    可以使程序变得很容易。