关于在Delphi DBgrid 控件中编辑数据,保存到数据库相关操作
一般在Delphi中利用DBgrid控件中与数据库数据交互,在添加数据时,通常是用户在Edit控件中输入数据,然后将Edit的text传递给DBgrid的query控件的...
一般在Delphi中利用 DBgrid 控件中与数据库数据交互,在添加数据时,通常是用户在Edit控件中输入数据,然后将Edit的text传递给DBgrid的query控件的数据集,完成添加操作,现在,我想添加数据,不采用上述方法,想直接在打开的空DBgrid中,编辑数据,然后用Post保存,添加数据库,但我尝试了多次,运行程序,当DBgrid创建时,在DBgrid中不能编辑,请问是不是要改相关属性,还是此方法就行不通,谢谢了~
展开
2个回答
展开全部
DBGride的界面是与数据库关联的,对它的任何输入操作都要与实际数据库的数据关联,你不可能随意编辑它(特别是当数据库相关的若干表的增删改被定义了约束关系时更是如此),不是改点属性就解决问题的,不关联Datasource也不能使用它,这是没办法改变的。不过,你可以用另外的方式实现你的想法,只不过麻烦些,比如用TStringGrid或TListview(详细资料方式下),只是你自己需要做很多工作,数据的调入、字段、记录与表格的关联,数据同步,增删改操作等。
只是,程序员一般不这么做,而是用其他简单些的方式实现,比如,添加、修改记录,弹出单独窗口把数据用非数据库控件表现出来,让用户随意编辑,然后提交时再自己做检查(用户输入逻辑错误的话可以要求重输入)和转换,这样做能完全掌控用户的输入行为,保证数据录入的正确性。这两样如果直接在DBGrid上编辑,你将会有很多麻烦,单是纠正用户错误(避免引发异常和数据内部逻辑错误)就不好找机会,因为你想完全掌控的话要涉及很多事件处理,其间的逻辑时序关系很难找清,甚至未必能做好。而对删除和查询操作,DBGrid一般没什么问题。因此,有经验的程序员可能会把DBGrid的ReadOnly设置为true。
只是,程序员一般不这么做,而是用其他简单些的方式实现,比如,添加、修改记录,弹出单独窗口把数据用非数据库控件表现出来,让用户随意编辑,然后提交时再自己做检查(用户输入逻辑错误的话可以要求重输入)和转换,这样做能完全掌控用户的输入行为,保证数据录入的正确性。这两样如果直接在DBGrid上编辑,你将会有很多麻烦,单是纠正用户错误(避免引发异常和数据内部逻辑错误)就不好找机会,因为你想完全掌控的话要涉及很多事件处理,其间的逻辑时序关系很难找清,甚至未必能做好。而对删除和查询操作,DBGrid一般没什么问题。因此,有经验的程序员可能会把DBGrid的ReadOnly设置为true。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询