用query,和datasource,dbgride连了一个数据库,当焦点在dbgride中某一行时,
我点击一个按钮,此行中某个字段的植自动加一,要写入数据库!数据库用sql server200。

解决方案 »

  1.   

    Query.Edit;
    Query.FieldByName('字段名').AsFloat:=Query.FieldByName('字段名').AsFloat+1;
    Query.Post;
      

  2.   

    with dbgrid1.datasource.dataset do
    begin
      Edit;
      FieldByName('Field1').AsFloat:=FieldByName('Field1').AsFloat+1;
      Post;
    end;
      

  3.   

    编译可以通过,可一运行就报query1:cannot modif a read-only dataset
    我不知道该怎么设置数据库,教教我啊!~~~~~~~~~
      

  4.   

    Query1.RequestLive := True;ok?
      

  5.   

    Query1.RequestLive := True;
    Query.Edit;
    Query.FieldByName('FieldName').AsFloat:=Query.FieldByName('FieldName').AsFloat+1;
    Query.Post;
      

  6.   

    query1:cannot modif a read-only dataset  就是这个啊!~~
      

  7.   

    导航功能要用Table,Query最好用SQL命令
      

  8.   

    你的Query1.SQL中不能有Order By子句
      

  9.   

    把控件都删了重做,或用AdoQuery 试一下
      

  10.   

    我没有用Order By啊!~~
    大家还有什么别的方法啊????????谢谢!~~~~
      

  11.   

    把你的SQL语句贴出来,否则我无法知道什么原因
      

  12.   

    Query1.RequestLive := True;
    并不能保证你的SQL返回的数据是可写的。
    报的错说明返回的结果是只读的。
    有几个可能:
    1、返回的结果只有一条记录,这时是只读的
    2、SELECT用了FROM之外的其他子句
    3、SELECT了多个表的字段
      

  13.   

    select FieldName1,FieldName2,FieldName3,FieldName4 from T_表
    where FieldName5=0
    要点击以后FieldName5自动加1
      

  14.   

    你的FieldName5怎么没有select?
      

  15.   

    procedure TDataSet.Edit;
    begin
     if not (State in [dsEdit, dsInsert]) then
        if FRecordCount = 0 then Insert else
        begin
          CheckBrowseMode;
          CheckCanModify;
          DoBeforeEdit;
          CheckParentState;
          CheckOperation(InternalEdit, FOnEditError);
          GetCalcFields(ActiveBuffer);
          SetState(dsEdit);
          DataEvent(deRecordChange, 0);
          DoAfterEdit;
        end;
    end;procedure TDataSet.CheckCanModify;
    begin
      if not CanModify then DatabaseError(SDataSetReadOnly, Self);
    end;canmodify属性没有write,只有read 而且
    query和table 的canmodify属性不同,前者false
    所以query不能用edit方法但我没看到为什么query和table的canmodify不同,高人指点
      

  16.   

    看过了vcl代码可以确定query肯定不能用edit方法,用的话肯定报错除非能让query.canmodify:=true;但这个不能直接付值,应为vcl不支持
      

  17.   

    to:mike1031(mike1031) 
    select只返回一条记录时query是readonly的
      

  18.   

    楼上说得绝对是错的,以前用D5的时候流行用BDE,用TQuery写过好几个程序都没听说过像楼上这样的说法。
      

  19.   

    我说得是 jinjazz(我是jin) 的说法是错误的
      

  20.   

    我说得是 jinjazz(我是jin) 的说法是错误的谢谢有人注意我的发言,补充一下我的代码是delphi7的vcl源码,你帮我解释一下为什么
    showmessage(booltostr(query1.canmodify))
    showmessage(booltostr(table1.canmodify))为什么不同
    我没有深入研究过vcl源码
      

  21.   


    to jinjazz(我是jin)
      那你有没有看我这个贴子上所有的发言呢?你按照我前面说的,自己先试试,如何?
      

  22.   

    Query1.RequestLive := True;仍然是false
      

  23.   

    query1设置databasename为dbdemos(bde里自带的)
    query1  select * from events
    active 设true  Query1.RequestLive := True;  showmessage(booltostr(query1.CanModify));  query1.Edit;
    先弹出0然后抛出异常信息... delphi7测试,table控件没有问题
      

  24.   

    谁帮我解释通那段vcl源码我给200分
      

  25.   

    query1设置databasename为dbdemos(bde里自带的)
    query1  select * from events
    active 设true  Query1.RequestLive := True;  showmessage(booltostr(query1.CanModify));  query1.Edit;有错?????????????就6步,那里错了
      

  26.   

    [email protected]公司不能上qq,我下班晚
      

  27.   

    to jinjazz(我是jin) 
      看你的短消息