To ztchen(ZT) 是这样的: 一个rs与一个fpSpread grid控件绑定 F1时,rs打开一个记录集,用于修改或增加数据 F5时,rs打开另一个记录集,用于修改或增加另外一个主题的数据点击菜单时,两个方向都能保存,但按快捷键(F1、F5)时最后一个输入的数据就没能保存 (fpSpread控件应该与DataGrid的绑定情况一样,只不过fpSpread的功能强一些) To towhere(天涯) 不太明白您的意思!
to xdd1125(成长快乐): 我今天测试了快一下午,始终没有达到预期的效果.我是用Datagrid来做的,我没有找到你用的fpspread控件.不过,很明显一点就是recordset.fields("字段名").value是改变了,不象我所说的那种情况.至于到底是何原因我还在研究中,希望能和你多交流
To : ztchen(ZT) 多谢您的热情支持!(fpSpread是一个很棒的grid控件)我上面说的更正一下: "点击菜单时,两个方向都能保存,但按快捷键(F1、F5)时最后一个输入的数据就没能保存"其实按快捷键时整行数据都没能保存的,并不是最后一个保存不了up
怎么会有两个快捷键呢?
况且你的快捷键不标准。F1一般是帮助。
保存一般是 Ctrl + S.
先回答你问题b:出现如此不一致的情况主要原因是因为控件绑定时,必须在获得鼠标捕获权(由API函数setcapture设定)的释放的时候才能更新recordset.fields("字段名").value的值,即最后提交到数据库的值.这也许是文本控件与ADO协作上的漏洞吧.所以,当你用鼠标去点击菜单或按钮保存的话,窗口上的鼠标捕获权会归于菜单或按钮,这样就获得了文本控件捕获权的释放,在recordset中也会将文本的内容赋给value值,数据库内容就得到了更新.如果是直接以快捷键保存的话,虽然你看上去文本控件内容是经你修改过的内容,并且更新操作也会执行成功.但实际上文本控件实际提交的是recordset.fields("字段名").OriginalValue值(原先未经更改前的值),所以你会发现保存完后数据库内数据没有变.
好了,既然知道原因所在,就可以回答你的问题a了,不过仅供参考,我的方法是在每个绑定控件的change实践里加上一句代码:
recordset.fields("字段名").value=text1.text
这样就能在更改控件内容时直接提交value值到数据库,从而保证一致.但不幸的是这样写的话就意味着你有几个绑定数据的控件就需要写多少句这样的代码,对于代码维护不太好.希望你能想出比我更好的方法.
感谢您们的关注先说明一下:菜单项的功能是切换到别的界面,不是专们执行保存的,因为绑定的优势就在自动保存。F1和F5是对应不同菜单的,怎么定义(比如F1)是没有关系的。对ztchen所作的分析,我觉得是有道理的,可是我是用Grid绑定的,就不太好办了!
我根据您的思路是这样做的:
在菜单过程中最前面加入以下语句
releasecapture
setcapture getmenu(frmMain.hwnd)可是问题还是仍旧
你说用datagrid来绑定数据,我也考虑了用你的这个方法测试,但还请问你具体是怎样切换界面?我好象连自动保存都没有试出来,你能不能给个示例代码?
应用某些控件的 Validate 事件发生问题: * 要保证每个控件 都触发Validate 事件 * 解决方法:
1、 设置每个控件 CausesValidation = True
或
2、每个控件都置在frame中
是这样的:
一个rs与一个fpSpread grid控件绑定
F1时,rs打开一个记录集,用于修改或增加数据
F5时,rs打开另一个记录集,用于修改或增加另外一个主题的数据点击菜单时,两个方向都能保存,但按快捷键(F1、F5)时最后一个输入的数据就没能保存
(fpSpread控件应该与DataGrid的绑定情况一样,只不过fpSpread的功能强一些)
To towhere(天涯)
不太明白您的意思!
我今天测试了快一下午,始终没有达到预期的效果.我是用Datagrid来做的,我没有找到你用的fpspread控件.不过,很明显一点就是recordset.fields("字段名").value是改变了,不象我所说的那种情况.至于到底是何原因我还在研究中,希望能和你多交流
"点击菜单时,两个方向都能保存,但按快捷键(F1、F5)时最后一个输入的数据就没能保存"其实按快捷键时整行数据都没能保存的,并不是最后一个保存不了up
[email protected]
这个控件很大15M多,邮件没法发送。其实您可以直接到www.farpoint.com/trail上下载(或在vb版搜一下有6.0的注册码)up