DBGrid数据源:TADOQuery,怎样让DBGrid的数据,随TADOQuery的改变而改变?

解决方案 »

  1.   

    ADOQuery.Close;
    ADOquery.Open;
      

  2.   

    DBGrid1.DataSource.DataSet.Close;
    DBGrid1.DataSource.DataSet.open;
      

  3.   

    procedure TForm1.ServerClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    Var
      strIp,strHost,sq:string;
      Count:Integer;
    begin
      strIp:=Socket.RemoteAddress;
      strHost:=Socket.RemoteHost;
      Memo1.Lines.Add('当前登录用户');
      Memo1.Lines.add(#9'SocketID:'+Inttostr(Socket.SocketHandle));
      Combox1.Items.Add(Inttostr(Socket.SocketHandle));
      Memo1.lines.add(#9'IP地址:'+strIp);
      Memo1.Lines.Add(#9'主机名:'+strHost);
      ADOQ.SQL.Clear;
      ADOQ.SQL.Add('INSERT into CurUser values('+''''+'gf'+''''+',000001,'+''''+strIp+''''+','+'"0",'+'"0",'+'False,'+'False,'+'"'+Inttostr(Socket.SocketHandle)+'")');
      ADOQ.ExecSQL;
     // dBGrid.refresh;
      Count:=Server.Socket.ActiveConnections;
      Statusbar1.Panels.Items[1].Text:='在线用户: '+IntToStr(Count);
    end;
    procedure TForm1.ServerClientDisconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    Var
        Count:Integer;
        IDIndex:Integer;
    begin
        Memo1.Lines.add('用户离线');
        Memo1.Lines.add('      SocketID:'+Inttostr(Socket.SocketHandle));
        IDIndex:=Combox1.Items.IndexOf( Inttostr(Socket.SocketHandle));
        Combox1.Items.Delete(IDIndex);
     //  Memo1.Lines.add('delete from CurUser where SktID='+Inttostr(Socket.SocketHandle)+' )');
       Adoq.Close;
        adoq.SQL.Clear;
        adoq.SQL.Add('delete from CurUser where SktID='+Inttostr(Socket.SocketHandle));
        Adoq.ExecSQL;
          //该事件在用户离开前发生
       Count:=Server.Socket.ActiveConnections-1;
        Statusbar1.Panels.Items[1].Text:='在线用户:'+Inttostr(Count);
    end;
    以上方法都试过,不幸...