DBGRID中数据是否编辑过判断!

ychxter 2014-04-18 01:11:19
情况:DBGRID,datasource,adoquery关联了,adoquery的locktype为ltBatchOptimistic
需求:dbgrid在增加数据、编辑数据、删除数据后,点击提交按钮进行提交,其他情况点击提交按钮无效,换一句话说就是如何根据dbgrid的数据是否变化来判定是否需要提交!!
...全文
132 点赞 收藏 5
写回复
5 条回复
ychxter 2014年04月21日
顶一下。。。
回复 点赞
ychxter 2014年04月19日
引用 3 楼 PPower 的回复:
TDataSet *ds = DBGrid1->DataSource->DataSet ; if(ds->State == dsInsert)//这是新记录 {} else if(ds->Modified) //旧记录,数据已经被修改 {}
这个我试一下,我还以为state属性是是否出于插入、编辑状态等,所以就没用,modified=true是指旧记录被修改了吗??被修改是指什么?包括insert吗?还是只包括原有数据编辑过?
回复 点赞
PPower 2014年04月18日
TDataSet *ds = DBGrid1->DataSource->DataSet ; if(ds->State == dsInsert)//这是新记录 {} else if(ds->Modified) //旧记录,数据已经被修改 {}
回复 点赞
我不懂电脑 2014年04月18日
DBGRID组件没有列双击事件,只有列单击事件.它的双击事件是针整个DBGRID的,这就是说双击DBGRID的边框也会触发双击事件.这样就不准确了,而列单击事件,是相当准确的,当单击某行的某列时,与数据表连接的ADO数据集组件的指针就会指向这一行记录.通过这种机制,我们可以把数据集组件的各个字段的值写到数据编辑界面上的各个控件中如EDIT组件TEXT属性中.只要不再单击DBGRID搜索的单元格,就可以对显示在编辑界面上的数据进行修改,修改后,就可以保存了. procedure TForm1.DBGrid1CellClick(Column: TColumn); begin 将与DBGRID连接着的那个ADO数据集组件的各个字段值相对应的赋值给编辑界面上的控件就行了.DM_sjmk/数据模块.TB_ckb:ADO数据集组件 比如: combobox9.Text:=DM_sjmk.TB_ckb.FieldValues['科室']; combobox10.Text:=DM_sjmk.TB_ckb.FieldValues['领用人']; combobox5.Text:=DM_sjmk.TB_ckb.FieldValues['物品名称']; combobox6.Text:=DM_sjmk.TB_ckb.FieldValues['计量单位']; combobox7.Text:=DM_sjmk.TB_ckb.FieldValues['单价']; edit4.Text:=DM_sjmk.TB_ckb.FieldValues['数量']; edit5.Text:=DM_sjmk.TB_ckb.FieldValues['领用日期']; end;
回复 点赞
ychxter 2014年04月18日
自己顶啊,大神们!
回复 点赞
发动态
发帖子
数据库及相关技术
创建于2007-08-02

707

社区成员

1.8w+

社区内容

C++ Builder 数据库及相关技术
社区公告
暂无公告