Query1.RequestLive:=true;
Query1.Delete;

解决方案 »

  1.   

    在点击事件中可以重新建立一个Query,SQL语句
    Delete * From Table1
    Where 条件
    完成一个删除工作
      

  2.   

    请问lastlove,程序出错告诉我是'Table is Read Only'请问ePing,我在Dbgrid选中某一条记录这个条件怎样写?
      

  3.   

    当是一条记录的情况:query1.delete;
    当是多条记录的情况:
      query1.close;
      query1.sql.clear;
      query1.sql.add(delete * from TableName where 你点的字段名=:yourfield);
      query1.ParamByName('yourfield').asvalue:=dbgird1.selected;
      query1.execsql;
      

  4.   

    请问小小,我用你的方法,出错说是‘Error Creating Cursor Handle’  
        InQuery.Close;
        InQuery.SQL.Clear;
        InQuery.SQL.Add('delete    from  InTable ');
        InQuery.SQL.Add(' where ID=:ID ');    InQuery.ParamByName('ID').AsInteger:=dbgrid1.SelectedField.AsInteger;
        
          InQuery.Prepare;
          InQuery.Open;
      

  5.   

    Query1.RequestLive:=true; 
    其实你用dbnavigator就可以了!
    ------------------------------------------------
    InQuery.Close; 
    InQuery.SQL.Clear; 
    InQuery.SQL.Add('delete from InTable '); 
    InQuery.SQL.Add(' where ID=:ID '); InQuery.ParamByName('ID').AsInteger:=dbgrid1.SelectedField.AsInteger; InQuery.ExecSql;
      

  6.   

    为什么老是告诉我‘Table Read Only’
      

  7.   

    设置DBGrid的Option->dgMutiselected为True就可以选择一条或者多条记录
    然后在过程中写下:DBGrid.selectedrows.delete  就可以删除你所选择的记录了
      

  8.   

    哪位能告诉我为何‘Table is Read Only’
      

  9.   

    出现‘Table is Read Only’
    将Query1的RequestLive:=true就行了,但前提是Query1是一个简单查询,
    即From后面只能跟一个表,检索列表不能有函数(不是很确定,请自己试一下)和计算列.
    推荐用SQL语句进行删除.
      

  10.   

    默认情况下,查询结果是只读的。应用程序可以用数据控件去显示查询结果,
    但用户不能编辑数据。怎样才能使用户能够编辑数据呢?要使用户能够编辑数据
    ,必须把TQuery构件的RequestLive属性设为True。不过,把RequestLive属性
    设为True并不能保证查询结果一定是可以修改的,因为这还取决于查询使用的是
    Local SQL还是与服务器相关的SQL。像查询Paradox或dBASE以及异构查询都是
    使用Local SQL,而查询远程服务器则使用与服务器相关的SQL。即使RequestLive
    属性设为True,而且查询的是本地数据库,但由于SELECT语句的文法不合适,
    BDE也将返回只读的查询结果。因此,在编辑数据之前,先要访问CanModify属性。
    只有当这个属性返回True时,才表示查询结果是可编辑的。
      

  11.   

    各位高手的讨论我学到不少知识
    我使用的是delphi+access,通过ODBC相连数据库,使用本地数据库
        InQuery.RequestLive:=true;
        InQuery.Close;
        InQuery.SQL.Clear;
        InQuery.SQL.Add('delete    from  InTable ');
        InQuery.SQL.Add(' where ID=:ID ');    InQuery.ParamByName('ID').AsInteger:=dbgrid1.Fields[7].AsInteger;
        
          InQuery.Prepare;
          InQuery.Open;为何不行呢?
      

  12.   

    你加updatesql没有?
    加了,就不会出现上面的情况了
    在QUERY1的UPDATEOBJECT的属性设置为UPDATE1就可以了
    不会出现表只读的情况了
    但是,这样的删除,只是在缓存中
    你还要用语句真正删除
    删除语句见lastlove()lastlove() 的
      

  13.   

    SELECT ...语句才能用QUERY.OPEN方法;
    INSERT/UPDATE/DELETE用QUERY.EXECSQL,用OPEN是不行的!
    还有如果是你仅仅想实现DELETE的话,REQUESTLIVE是不要设置的!
    只有你想修改QUERY返回的数据集时才需要设置成TRUE;
    如果时查询结果来自多个表才需要TUPDATESQL组件,单表查询时不必要的!
      

  14.   

    lastlove,我相信你说的是对的,只是最后还是'Table is read only'
    还有什么我们没有想到的呢?
      

  15.   

    lastlove我相信你是对的,只是最后还是‘Table is Read only’
    还有什么我们没有想到的呢?
      

  16.   

    我刚用了一句
    InQuery.Delete;就实现了功能,不可思议!
    我怎样知道库里有多少条记录呢?
      

  17.   

    可是我什么属性也没有修改除了requestlive,就能直接用edit,delete了!
      

  18.   

    REQUESTLIVE:=true
    这个属性并不是对所有的数据库都有效,它仅对本地数据库如PARDOX,FOXPRO等类型数据库有效。详件帮助说明的NOTE
      

  19.   

    query.requestlive:=true;
    while not query.eof do
    begin
     query.delete;
     query.next;
    end;
      

  20.   

    如你想用QUERY实现INSERT,EDIT,DELETE,方便的方法用:QUERY+UPDATESQL
    这样不用理会QUERY是否是READONLY
      

  21.   

    我用adoquery.delete删除dbgrid中的记录, 
    当删除的是第一条记录时,一切正常 
    当删除其他的记录时出现“A given HRow referred to a hard-or-soft 
    deleted-row”的错误 
    但当我察看数据库的时候,这条记录已经删除 
    我用的是delphi+SQL 7.0