addchild的时候老是出现invalid variant type conversion的错误。
add的时候没有问题。
代码如下:
    DataSet.First();
    while not DataSet.Eof do
    begin
      if DataSet['GROUP_ID'] = '0' then
      begin
        TaskTreeView.Items.Add(nil,'aaa');
      end
      else begin
        for i:= 0 to TaskTreeView.Items.Count-1 do
        begin
          if DataSet['GROUP_ID'] = TaskTreeView.Items[i].Text then
          begin
            TaskTreeView.Items.AddChild(TaskTreeView.Items[i],'bbb');
            break;
          end;
        end;
      end;
      DataSet.Next();
    end;

解决方案 »

  1.   

    检查TaskTreeView.Items[i]是否空值<Null>/
      

  2.   

    TaskTreeView.Items.AddChild(TaskTreeView.Items[i],'bbb');
    改成
    TaskTreeView.Items.AddChild(TaskTreeView.Items.Item[i],'bbb');
      

  3.   

    TaskTreeView.Items[i]是从已存在的item取得的,应该不是空值 吧。
    如果我把add 和addchild中的参数同时换成DataSet['ID'],就没有问题。
    DataSet['ID']返回数据库中一个number字段,
    但是如果换成DataSet['NAME'],就不行了,这是个varchar字段。
    不知道为什么?
      

  4.   

    哈哈,解决了,谢谢zzzl大侠。送分
      

  5.   

    再问一句,
    Items.Item[i]和Items[i]有什么区别呀?
    还有DataSet[]和DataSet.values[].