回 帖 发 新 帖 刷新版面

主题:为什么老是出现这样的报错!!!!

各位大虾:
    我在练习delphi的数据库小测试时按一下按钮就会跳出一条信息:dataset is not in edit or insert 。不知道我是哪里做错了咯,本人的理解是,没有处于编辑或插入状态,但是跟dataset有什么关系咯应该是dbgrid要处于编辑或插入状态才对吧!!!


回复列表 (共7个回复)

沙发

TDBGrid是“数据感知控件”,它的数据来自于TDataSet,它的更改也影响TDataSet。

DBGrid1.DataSource.DataSet.Edithttp;
//...
DBGrid1.DataSource.DataSet.Post;

板凳

长尾兔仁兄:

      不知你的这个语句应放在哪个位置,具体设置呵呵!!!!!

3 楼

哈哈不好意思写错了,把“http”这四个字符删掉。没在意,不好意思。

如果想继续回答下去,不知楼主的DataSet和DBGrid是如何设置的?

4 楼

也没有怎么设置,只是dataset连接table1,而dbgrid1连接datasource1而已!!!!!!!!!!!!

5 楼

楼主:我在此地回答问题没人给我发薪水,全凭助人为乐、互相学习的信念。因此,不经常来论坛、即使来了有时也不爱回贴----请不要反感哦...况且即使我不回答,也自会有别人来帮你  (----关于!!!!!!!!!!!!)

关于本贴的问题,至少应该分成两个问题来解答:

1、“...跟dataset有什么关系咯应该是dbgrid要处于编辑或插入状态才对吧”
    ----错。1楼我第一句话既是对此的解释。

2、“按一下按钮就会跳出一条信息:dataset is not in edit or insert”
    ----解决办法还是一楼的两句代码。其中,修改字段值的语句,写在//...处。
    至于这两句代码写在哪里?写在按钮的单击事件的处理过程里啊。也就是说,在对DataSet进行“写”的操作前,要把DataSet置为Edit或Insert状态,“写”完后要Post。
    令我无法揣测您的问题的本来面目的是:这些又与DBGrid有何关系?无法亲眼看见您的程序,因此只能猜测您那里倒底发生了什么。一般情况下,既然你用的是Table+DBGrid的默认设置,如果你直接在DBGrid里修改数据并使DBGrid的当前行改变,那么与其关联的DataSet会自动执行Post操作的。而这与按钮又有什么关系?所以我猜测你的修改数据的代码是写在按钮里了,而不是在DBGrid里修改.....我说得自己也有点晕乎了,不好意思看不明白可以继续交流

6 楼

非常明白,谢谢

7 楼

非常感谢长尾兔仁兄的一番耐心教导,我懂了,呵呵!!!!!!!!!



           是看懂了,还没有练习,马上就去练习咯!!!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册