保存时灵异了,大伙帮我看看 本帖最后由 jonathanbear 于 2012-02-07 10:53:34 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这里我补充一下:我看了一下内存表的recordcount,虽然只输入了一行数据,另一行为空,即使在BeforePost中调用Cancel后,仍然为2,我的保存机制有几种,如果改为dmall,就是整表更新的话,这时数据库中就保存2条同样的记录了。但是明明我只输入一条,另一条是空的,我就不明白另一条记录的内容是怎么来的。这个也太奇怪了 BeforePost是保存至服务器,你看到的是内存表,虽然你没有保存到服务器,但你也未删除内存表的记录,也未将内存表与服务器的requery一下。所以你的内存表中仍是2条记录。内存表中的数据和服务器中的数据是相对独立的,除非你执行了更改命令,它会将改动保存至服务器,虽然你上面的处理,不让它保存到服务器,但这并不影响内存表中的数据。 我的这个BeforePost是DateSet中写的,这个是服务器的保存吗?一般Dbgrid换行的时候就会有一个Post的过程吧?这时dbgrid中输入的数据就会Post到内存表的。我跟踪了一下代码,在换行的时候也会有BeforePost的呀,我的后台是另外一个提交保存的过程,现在的内存表只是做为一个保存输入数据的控件。如果说控制的话,不知道有好的方法没? Self.MemTableEh1.ApplyUpdates()不是dbgrid换行会产生post动作,是表的记录移动会产生post动作也就是afterstroll。如果是只是显示用内存表,如果是编辑不要用内存表,还会产生很多问题如:新增记录主键的问题等等。 对的,内存表的主键我会从服务器里做回写的动作MemTableEh1.ApplyUpdates(0);WriteBackID(MemTableEh1);//回写ID就是上面出的问题有点想不通,看来只能保存后,重新从数据库重读一遍。我就是像如果是其他的数据元件,保存时,当你换行后,保存时,会退回到上一行,这步操作是怎么实现的,有什么好的方法吗?感谢你的回复 我就是像如果是其他的数据元件,保存时,当你换行后,保存时,会退回到上一行,这步操作是怎么实现的,有什么好的方法吗?这个还是不要改的好,你可以增两个按扭(保存、取消,这两个按扭的enabled:=(MemTableEh1.State in [dsEdit, dsInsert]),初始为false,这样只要数据被改动,它俩就会显示),如果只是单一的需要保存时,按下这两个即可,如果是想保存并移动至下一行,就会自动保存。 stringgrid有關問題??? 能不能大家帮我看看我的程序哪儿错了阿!!(sql数据库表数据的增加操作) 请教,如何/能否删除自已发的帖 自建的类应该如何避免内存泄漏 不知是用delphi还是用jsp 那位朋友能帮帮我? 快捷键Del键与Edit编辑中删除冲突问题 一个用java写的加密方法想转成成delphi的加密方法。菜鸟期望能得到帮助! 请帮忙看一看这条SQL语句(Delphi+Access+ADO) 菜鸟送分:请问如何把Stringgrid1中的数据以.csv格式导出 delphi中点击按钮弹出窗口,在弹出窗口的操作 关于delphixe2 调试dll的问题
内存表中的数据和服务器中的数据是相对独立的,除非你执行了更改命令,它会将改动保存至服务器,虽然你上面的处理,不让它保存到服务器,但这并不影响内存表中的数据。
如果是只是显示用内存表,如果是编辑不要用内存表,还会产生很多问题如:新增记录主键的问题等等。
MemTableEh1.ApplyUpdates(0);
WriteBackID(MemTableEh1);//回写ID
就是上面出的问题有点想不通,看来只能保存后,重新从数据库重读一遍。我就是像如果是其他的数据元件,保存时,当你换行后,保存时,会退回到上一行,这步操作是怎么实现的,有什么好的方法吗?感谢你的回复
这个还是不要改的好,你可以增两个按扭(保存、取消,这两个按扭的enabled:=(MemTableEh1.State in [dsEdit, dsInsert]),初始为false,这样只要数据被改动,它俩就会显示),如果只是单一的需要保存时,按下这两个即可,如果是想保存并移动至下一行,就会自动保存。