不需要加query1.edit;在Grid里就可以修改呀?
检查DBGrid的Option属性下的goAllwaysShowEdit

解决方案 »

  1.   

    麻烦大了又是多表更新的问题强烈建议不要用dbgrid,而使用其它的东东,手动对数据库进行更改
      

  2.   

    可以在DBGEID中修改,不过如果是从多表查询查询出来的数据的话除了QUERY外还必须使用UPDATESQL控件,将QUERY的UpdateObject属性设置为UPDATESQL控件,然后再使用UPDATESQL控件进行更新。大致如以下语句:(注意RequesLive,和CancelUpdate属性设置为TRUE)
    With Query1 do begin
       Close; Open; Edit;
       UpdateSql1.SetParams(ukModify);
       UpdateSql1.ExecSQL(ukModify);
       Post;
    end;
     
      

  3.   

    如果只是单表查询的话,只要将RequesLive属性设置为True就行了,不用使用UPDATESQL控件.
      

  4.   

    我把requeslive设成了true但是在用post的时候
    还是报不是insert 或是 edit 模式,还是不能插入啊
    不过这回dbgrid可以输入了
      

  5.   

    To:duststar
      你修改的时候还没有把Query.Edit,或Query.Insert吧,否则不会出现错误提示。
      你最好还是使用UPDATESQL来更新。
      
      

  6.   

    对于QUERY来说,每修改一条记录就要EDIT一次。
      

  7.   

    谢谢雪茹了
    呵呵,好像你也很关系嘛
    我用ttable实现了,
    不过还是想用tquery实现,我再试试
      

  8.   

    用TABEL本来就可以,因为他是可修改的数据集,但TABLE只能用于单表查询而且对于数据记录多的话效率很低。而用QUERY查询出来的数据是只读的,所以要转换。
    你留个信箱吧,我发个例子给你。
    就是按我上面所说的方法,我已经用过很多次了(使用QUERY)。
      

  9.   

    我每次都是使用QUERY先查出来,在有TABLE修改,太麻烦,请 cslegend(cs) 指教.
      

  10.   

     cslegend(cs) 
    请将例子发在[email protected]
      

  11.   

    程序已经发送了。
    我觉得TTable在DELPHI 5中用处不大,现在我一般不使用TTable,都用QUERY代替。
    这是我测试UpdateSql控件时写的例子,是从单表里面查询的数据,换成多表也一样。
    你注意QUERY的属性设置,RequesLive,和CancelUpdate属性设置为TRUE。
    有什么问题就发到我的信箱把。
      

  12.   

    呵呵
    怎么我这个提问的人反倒没份呢?
    给我一个把
    [email protected]
    谢谢cs
    你能留下e-mail吗?我还想向你问些问题
      

  13.   

    cslegend(cs):
    你的方法有效,提问者可以给分了。
      

  14.   

    To:duststar(bug) 我的信箱是[email protected]。以后交流交流吧,我水平也不高。
    程序已经发到你的信箱去了。