下面的程序在执行时会提示:coinitialize未调用。请大师帮忙找出问题所在?另ADO+SQL SERVER能否响应多线程?多谢多谢!
procedure TForm1.Button5Click(Sender: TObject);
var  test1: tdataput;
  test2: tdataput;
  test3: tdataput;
  i: integer;
  node1, subnode1, subnode2, subnode3: ttreenode;
begin
  {node1 := form1.treeview1.Items.Add(nil, '所有检查表');
  node1.ImageIndex := 6;
  node1.SelectedIndex := 5; }
  
  test1 := tdataput.create(1);
  
  test2 := tdataput.create(2);  end;
procedure TDATAPUT.Execute; //多线程类的执行函数。
var
  node1, subnode1, subnode2, subnode3: ttreenode;
  subnode4, subnode5, subnode6: ttreenode;
  subnode7, subnode8, subnode9: ttreenode;
begin
  
  case fdata_no of    1:
      begin
       //showmessage(inttostr(fdata_no));
        form1.adoquery1.sql.clear;
        form1.adoquery1.sql.add('select top 5  * from qt_project_unit where upro_id  not in (select top 0 upro_id from qt_project_unit)');
        form1.adoquery1.close;
        form1.adoquery1.Open;
        while not form1.adoquery1.eof do
        begin
          subnode1 := form1.treeview1.Items.AddChildobject(node1, form1.adoquery1.FieldValues['upro_name'], nil);
          form1.adoquery2.sql.clear;
          form1.adoquery2.SQL.add('select spro_name,spro_id from qt_project_subsect,qt_project_unit');
          form1.adoquery2.SQL.Add('where qt_project_unit.upro_id=qt_project_subsect.upro_id');
          form1.adoquery2.sql.Add('and qt_project_subsect.upro_id=' + '''' + form1.adoquery1.Fieldbyname('upro_id').asstring + '''');
          subnode1.ImageIndex := 2;
          subnode1.SelectedIndex := 3;
          form1.adoquery2.Open;
          while not form1.adoquery2.Eof do
          begin
            subnode2 := form1.treeview1.Items.AddChildobject(subnode1, form1.adoquery2.FieldValues['spro_name'], nil);
            subnode2.SelectedIndex := 1;
            subnode2.ImageIndex := 0;
            form1.adoquery3.sql.clear;
            form1.adoquery3.SQL.add('select qt_project_item.ipro_name from qt_project_item,qt_project_subsect');
            form1.adoquery3.SQL.Add('where qt_project_subsect.spro_id=qt_project_item.spro_id');
            form1.adoquery3.sql.Add('and qt_project_item.spro_id=' + '''' + form1.adoquery2.Fieldbyname('spro_id').asstring + '''');
            form1.adoquery3.Open;            while not form1.adoquery3.Eof do
            begin
              subnode3 := form1.treeview1.Items.AddChildobject(subnode2, form1.adoquery3.FieldValues['ipro_name'], nil);
              subnode3.ImageIndex := 4;
              subnode3.SelectedIndex := 7;
              form1.adoquery3.Next;
            end;
            form1.adoquery2.Next;
          end;
          form1.adoquery1.Next;
        end;
      end;    2:
      begin
        //showmessage(inttostr(fdata_no));
        form1.adoquery6.sql.clear;
        form1.adoquery6.sql.add('select top 5  * from qt_project_unit where upro_id  not in (select top 5 upro_id from qt_project_unit)');
        form1.adoquery6.close;
        form1.adoquery6.Open;
        while not form1.adoquery6.eof do
        begin
          subnode4 := form1.treeview1.Items.AddChildobject(node1, form1.adoquery1.FieldValues['upro_name'], nil);
          form1.adoquery7.sql.clear;
          form1.adoquery7.SQL.add('select spro_name,spro_id from qt_project_subsect,qt_project_unit');
          form1.adoquery7.SQL.Add('where qt_project_unit.upro_id=qt_project_subsect.upro_id');
          form1.adoquery7.sql.Add('and qt_project_subsect.upro_id=' + '''' + form1.adoquery1.Fieldbyname('upro_id').asstring + '''');
          subnode4.ImageIndex := 2;
          subnode4.SelectedIndex := 3;
          form1.adoquery7.Open;
          while not form1.adoquery7.Eof do
          begin
            subnode5 := form1.treeview1.Items.AddChildobject(subnode4, form1.adoquery2.FieldValues['spro_name'], nil);
            subnode5.SelectedIndex := 1;
            subnode5.ImageIndex := 0;
            form1.adoquery8.sql.clear;
            form1.adoquery8.SQL.add('select qt_project_item.ipro_name from qt_project_item,qt_project_subsect');
            form1.adoquery8.SQL.Add('where qt_project_subsect.spro_id=qt_project_item.spro_id');
            form1.adoquery8.sql.Add('and qt_project_item.spro_id=' + '''' + form1.adoquery2.Fieldbyname('spro_id').asstring + '''');
            form1.adoquery8.Open;
            while not form1.adoquery8.Eof do
            begin
              subnode6 := form1.treeview1.Items.AddChildobject(subnode5, form1.adoquery3.FieldValues['ipro_name'], nil);
              subnode6.ImageIndex := 4;
              subnode6.SelectedIndex := 7;
              form1.adoquery8.Next;
            end;
            form1.adoquery7.Next;
          end;
          form1.adoquery6.Next;
        end;
      end;
  end;
end;