ClientDataSet最大字段长度不能超过31位,ADO不会有此问题,请问哪位高手能帮忙解决?

解决方案 »

  1.   

    不会的,看是不是用了dbgrid之类的东西,产生了限制
      

  2.   

    不是啊,确实是Clientdataset的限制
    随便试下就知道,郁闷中
      

  3.   

    在DSIntf单元中,有如下定义:  MIDASNAME            = packed array [0..31] of Char; { holds a name }
      MIDASPATH            = packed array [0..260] of Char; { holds a DOS path }
    在DBClient中使用了此常量  procedure GetFieldDefCount(FieldDefs: TFieldDefs; var Count: Integer);
      var
        I: Integer;
      begin
        Inc(Count, FieldDefs.Count);
        for I := 0 to FieldDefs.Count - 1 do
        with FieldDefs[I] do
        begin
          if Length(Name) >= SizeOf(MIDASNAME) then
            raise EDSWriter.CreateFmt(SFieldNameTooLarge,[Name, SizeOf(MIDASNAME) - 1]);
          if HasChildDefs then
            GetFieldDefCount(ChildDefs, Count);
        end;
      end;
      

  4.   

    有必要有那么长的字段名嘛, 控制显示可以用 DisplayLabel, 这个爱多长有多长
      

  5.   

    是这样的,在做一个自定义报表,当生成交叉报表时,例如对仓库转化为列,对商品进行分组,对数量进行统计这样一个交叉报表时,产生的列名我用这样的表达方式,“仓库_XX商品_数量统计”这样就有可能超过三十一个字符knife_s(人生长恨水长东)兄:改了源码没用啊!