var
  Fs:TField;
begin
   fs := TField.Create(nil);
   fs.FieldName := 'Field1';
   fs.DisplayLabel := 'NEWField';
   fs.SetFieldType(ftString);
   Query1.Fields.Add(fs);
   ShowMessage(Query1.FindField('Field1').DisplayLabel);
其中fs.SetFieldType(ftString)好像不起作用,query.open时,抱错:unknown fieldtype
我用的是TOraQuery,连接Oracle数据库,请高人指点

解决方案 »

  1.   

    上面那段东东好像是在下写的吧?很眼熟的说~
    我这边没用ODAC这套控件。
    你查查它的帮助,看看它对数据字段的定义吧
      

  2.   

    Kevin_Lmx(繁华阅尽) :    好像和ODAC关系不大,
    var
      Fs:TField;
      V_DataType:TFieldType;
    begin
       fs := TField.Create(nil);
       fs.FieldName := 'Field1';
       fs.DisplayLabel := 'NEWField';
       fs.SetFieldType(ftString);   V_DataType:=fs.DataType;--------跟踪显示为unknow,说明SetFieldType不成功   Query1.Fields.Add(fs);
       ShowMessage(Query1.FindField('Field1').DisplayLabel);
      

  3.   

    Kevin_Lmx(繁华阅尽) :  不用TOraQuery,用TQuery也一样,请指点
      

  4.   

    我刚刚看了TField.SetFieldType这个方法,发现它只是一个虚方法。也就是说它其实是什么都不做的。在帮助中也提到:SetFieldType does nothing
    ----------------------------------------------------------------------------------------procedure SetFieldType(Value: TFieldType);DescriptionAs implemented in TField, SetFieldType does nothing. Descendant classes override SetFieldType to set the DataType for the field component. SetFieldType is useful for derived classes that can support more than one underlying data type. For example, a TBlobField may support ftBlob, ftFmtMemo, ftParadoxOle, ftDBaseOle, or ftTypedBinary.
      

  5.   

    试试这样子加:
    Query1.FieldDefs.Add('Field1',ftString,200);
      

  6.   

    Kevin_Lmx(繁华阅尽) :
      没办法加FieldType吗?
      

  7.   

    很遗憾,应该没有什么办法了。除非你自己实现SetFieldType。