form1点击按钮A,打开form2,并调用下面的代码,查询出数据绑定给cmbDoorName;
当我把form2关闭后,再点击按钮A,在ADOQuery1.Open处就完全卡死了。
请教下这个是什么原因??    // 初始化cmbDoor
    cmbDoorName.Clear;
    cmbDoorName.Items.Add('');    sSql := 'select * from table order by doorName';    if trim(sSql) <> '' then
    begin
        ADOQuery1.Close;
        ADOQuery1.SQL.Clear;
        ADOQuery1.SQL.Text:=sSql;
        ADOQuery1.Open;
        while not ADOQuery1.Eof do
        begin
            cmbDoorName.Items.Add(ADOQuery1.FieldByName('doorName').AsString);
            ADOQuery1.Next;
        end;
    end;delphiADOQuery死机

解决方案 »

  1.   

    就你说的这些真判断不出,ADOQuery连接数据库了么?
      

  2.   

    连接了,并且第一次打开的时候是能够正常显示的,cmb中也是有数据,但是我关闭掉这个,对form也进行了释放。
    第二次进来后,代码运行到ADOQuery1.Open处就卡住了。
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    这里已经是把ADOQuery1的清空了吧。
      

  3.   

    form2如果是动态创建的,那每次create form2的时候都需要初始化连接参数;clear是清除了sql语句。
      

  4.   


    我现在点击多次,过很长时间,报出一个"在TDS流中的协议错误"
      

  5.   

    把创建FORM代码也列出来吧。 这段代码 看不出来啥问题
      

  6.   

    在循环的前面加一句试试 ADOQuery1.First;
      

  7.   

    不好意思,最近加班了,一直忘记来结帖子,问题很奇怪,在我台式机上的虚拟机里运行会报TDS流中的协议错误,但是在我笔记本的虚拟机里又不报,我将代码全部移出虚拟机,直接放笔记本和台式机上运行也不报这个错误。
    重装了台机上的虚拟机,还是会有错误,不知道是哪里配置错了,所有测试连接的都是台机上的同一个数据库。
    谢谢各位,代码没有问题。在其他地方运行起来都是正常的。
    现在结贴。