我想通过双击DBGrid1实现table1.post但是Delphi显示:“Dataset not in edit or insert mode”请问在哪里 没有设置正确呢?

解决方案 »

  1.   

    你要先把dataset设为edit状态才能修改和post,当你insert或append一条记录时dataset会自动变成edit状态。但处于browse状态的要通过dataset.edit来使dataset进入edit状态。
    但一般datasource的autoedit属性为true,会使关联的dataset自动进入edit状态,你可以看看这个dbgrid的datasource.autoedit是否为true。
      

  2.   


    with datasource1 do
    if(dataset.state in[dsinsert,dsedit])  then
    post;================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★  浏览帖子速度极快![建议系统使用ie5.5以上]。 ★  多种帖子实现界面。 
    ★  保存帖子到本地[html格式]★  监视您关注帖子的回复更新。
    ★  可以直接发贴、回复帖子★  采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录! 
    ★  支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名  ●  
         可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
    Http://www.ChinaOK.net/csdn/csdn.rar
    Http://www.ChinaOK.net/csdn/csdn.exe    [自解压]
      

  3.   

    table1.edit;或者table1.append;
    试验一下
      

  4.   

    这是我的源代码:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Grids, DBGrids, ExtCtrls, DBCtrls, DB, DBTables;type
      TForm1 = class(TForm)
        DataSource1: TDataSource;
        Table1: TTable;
        DBNavigator1: TDBNavigator;
        DBGrid1: TDBGrid;
        procedure DBGrid1DblClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      a:ttime;
    implementation{$R *.dfm}procedure TForm1.DBGrid1DblClick(Sender: TObject);
    begin
    //showmessage(form1.DBGrid1.Columns.Grid.Fields[0].Text);
    a:=time;
    showmessage(timetostr(a));///////////////////////////////////////
    Table1.FieldValues['上机时间'] := timetostr(a);
    Table1.Post;
    ///////////////////////////////////////就是这里有问题~不能自动加时间~end;end.
      

  5.   

    Table1.edit;
    Table1.FieldValues['上机时间'] := timetostr(a);
    Table1.Post;
      

  6.   

    Table1.post;运行是这样的。
    TABLE1.EDIT; //将库变为编辑状态,必不可少
    //赋值
    Table1.FieldValues['上机时间'] := timetostr(a);
    //写到数据库中。
    Table1.Post;
      

  7.   

    if table1.state in [dsinsrert,dsedit] then table1.post
      

  8.   

    if table1.state in [dsinsert ,dsedit] then table1.post