我用ADO+Access写了一个小程序,窗口生成时调用数据库里面的数据,然后在窗口中对数据库执行添加或删除操作,执行后窗体自动消失,请问是何原因,该如何解决?

解决方案 »

  1.   

    怎么可能,,看看有没Close触发!
      

  2.   

    procedure Tdel_hotel_Form.FormShow(Sender: TObject);
    var
      i:integer;
    begin
      DBComboBox1.Items.Clear ;
      With del_hotel_form.ADOQuery1.SQL  do
        begin
          close;
          ADOQuery1.SQL.Clear ;
          ADOQuery1.SQL.Text:='select lm from lm';
          ADOQuery1.Open;
        end;  if ADOQuery1.RecordCount>0 then
        begin 
          for i:=0 to ADOQuery1.RecordCount-1 do
            begin
              DBComboBox1.Items.Add(Trim(ADOQuery1.FieldByName('lm').AsString));
              ADOQuery1.Next;
            end;
          //DBComboBox1.Items.Delete(0);
        end;
        DbComboBox1.ItemIndex :=0;
    end;procedure Tdel_hotel_Form.Button1Click(Sender: TObject);begin
      With del_hotel_form.ADOQuery1.SQL  do
        begin
          close;
          ADOQuery1.SQL.Clear ;
          ADOQuery1.SQL.Text:='delete * from lm where lm='+''''+DbComboBox1.Text+'''';
          ADOQuery1.ExecSQL ;
          
          ShowMessage('删除成功');
        end;
      
    end;procedure Tdel_hotel_Form.Button2Click(Sender: TObject);
    begin
      del_hotel_form.Close ;
    end;这是代码,
      

  3.   

     With del_hotel_form.ADOQuery1.SQL do
      begin
      close;
      ADOQuery1.SQL.Clear ;
      ADOQuery1.SQL.Text:='delete * from lm where lm='+''''+DbComboBox1.Text+'''';
      ADOQuery1.ExecSQL ;
        
      ShowMessage('删除成功');
      end;
    这里错了,,
    应该是
    del_hotel_form.ADOQuery1.Close(); 此种情况定位到with del_hotel_form.ADOQuery1 do即可。Close不在del_hotel_form.ADOQuery1.SQL 下面。此处等于Self.Close了
      

  4.   


    With del_hotel_form.ADOQuery1 do
    begin
      close;
      SQL.Clear ;
      SQL.Text:='delete * from lm where lm='+''''+DbComboBox1.Text+'''';
      ExecSQL ;
      ShowMessage('删除成功');
     end;//这样才是规范的,你前面的代码肯定是有问题的,只是可能你没有执行到%……