Delphi 用dbnavigator和dbgrid链接以后,使用dbnavigator控件的删除时会使程序崩溃,该如何处理
3个回答
展开全部
delete不需要加Post。
删除前要判断表中是否有数据
if tb.RecordCount>0 then
tb.delete;
如果数据集使用的dbexpress中的TSimpleDataSet,或者是TClientDataSet, 要提交时需要添加
tb.applyUpdates(-1);
删除前要判断表中是否有数据
if tb.RecordCount>0 then
tb.delete;
如果数据集使用的dbexpress中的TSimpleDataSet,或者是TClientDataSet, 要提交时需要添加
tb.applyUpdates(-1);
追问
可是无论是删除 插入 还是更新 全都会崩溃,跳出来的都是上面的那个截图。DBNavigator上的+可以出现新插入的空的一行,但是把数据输入到DBGrid的窗口以后,按那个勾 程序也会崩溃,按-就直接崩溃了..
追答
1.首先要确认一下Delphi能否正常使用?
2.确认您的表在数据库中是否与其它表有级联删除和级联更新的关系?如果有,先把级联关系干掉再试试看。
3.看看数据表中是否有不允许为空的字段?编辑时要记得把值填上,否则提交报错
4.排查操作顺序:
建一个新的工程,什么控件不加,直接能够运行,证明delphi环境问题不大。
检查上述2、3项后,直接加入数据库连接组件,比如adotable,原地连接,确认一下有无问题。
如果上述所有项全部检查无误,把dbnavigater,扔到一边,加两个按钮,一个按钮增加记录,一个按钮保存记录,看看再报什么错?
dbnavigater应该直接连接DataSource罢?
展开全部
可能是你的表中有两条记录字段值全部重复的记录。表中设置一个主键,避免输入记录有全部字段重复就好了。
另外,你需要把你数据库中现有的的重复记录删除。
一般情况下,你删除一个,和这个记录重复的全部记录就都会被删除,但会报这样一个错误。
另外,你需要把你数据库中现有的的重复记录删除。
一般情况下,你删除一个,和这个记录重复的全部记录就都会被删除,但会报这样一个错误。
追问
确定没有重复的记录,不过无论是删除插入还是更新都会是程序崩溃
追答
想起来了,表里一定要设置一个主键才行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你用的是第三方的数据连接吗?有的第三方数据集控件是需要设置主键的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询