各位高手都进来看看,因为这个问题元旦都没过好啊?惨!!!

BlueDreaming 2005-01-04 03:00:27
现在要一个多行数据录入界面,最后将所有数据一次性提交到数据库!而Delphi的DBGrid只能完成一行增加后,再点击按钮增加!这样的数据输入不太方便!()
偶的办法是做一个数据不敏感DBGrid控件(delphi的DBGrid是Data-ware控件)。可是工作量太大,现在又要的急!所以只有投机取巧:
偶的办法是:adoquery1通过datsource1和dbgrid1相连.现在为了实现多行输入,根据adoquery1.Fielddefs另建一个adoQuery2的数据结构,去掉primary key等约束条件,这样才能增加多行空数据,并将adoquery1的数据倒入到adoQuery2中,同时插入N(如10行)行空数据,将adoQuery2连接到DBGrid1上,这样就可以完成多行输入的功能。
问题是:adoquery1数据到adoQuery2的数据复制,偶的办法是adoquery1.savetofile(...),adoquery2.LoadFromFile(...),如果数据库巨大,肯定会影响到数据库的效率。如果用adoquery2.recordset := adoquery1.recordset 则带上adoquery1的primary key等约束条件,不能滞要求.....
请问:能否用程序修改adoquery2的primary key等约束条件信息, adoconnection有一个openschema方法,可是偶没有找到Setschema等方法。。。
哪位大侠能帮忙,不胜感激@!

...全文
158 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
anway 2005-01-05
  • 打赏
  • 举报
回复
批提交啊,然后捕捉异常,可以解决
BlueDreaming 2005-01-05
  • 打赏
  • 举报
回复
谢谢各位!来者有份,来者有分,散分喽!!!
BlueDreaming 2005-01-05
  • 打赏
  • 举报
回复
To: gamaster(a明-非sql相关不回):
哈哈!高!偶就是用这个办法解决问题了. adoquery用ltBatchOptimistic。真踏破铁鞋无觅处,得来全不费功夫!
Kshape 2005-01-05
  • 打赏
  • 举报
回复
学习
gamaster 2005-01-05
  • 打赏
  • 举报
回复
设置一个不许用户输入的主键字段:
进入界面后先增加n个行,用户输入后再post
afei78223 2005-01-05
  • 打赏
  • 举报
回复
那就用Stringgrid来,自己控制,方便
BlueDreaming 2005-01-05
  • 打赏
  • 举报
回复
To: jim138, Sail365(东少爷), jinjazz(近身剪(N-P攻略))

老板要求的效果的是:要一进入界面,DbGrid 即有N个空行,可以进行编辑(不是点增加按钮,一行一行的增加),最后将所有数据提交到数据库。

jianghd 2005-01-04
  • 打赏
  • 举报
回复
建立临时表,把一批数据放入临时表,最后一次性提交
web100 2005-01-04
  • 打赏
  • 举报
回复
jim138() 楼上的方法不错.
wyf99 2005-01-04
  • 打赏
  • 举报
回复
用批量处理就不要这么麻烦了,再不行用STRINGGRID也行啊!用循环。呵呵!
jinjazz 2005-01-04
  • 打赏
  • 举报
回复
AdoConnection1.BeginTrans;
try
//do something
AdoConnection1.CommitTrans;
except
AdoConnection1.RollbackTrans;
end;
jim138 2005-01-04
  • 打赏
  • 举报
回复
这样数据先保存在内存中,最后再UPDATEBATCH方法把数据写入数据库
Sail365 2005-01-04
  • 打赏
  • 举报
回复
我一般用 ltBatchOptimistic
jim138 2005-01-04
  • 打赏
  • 举报
回复
将ADOQUERY的游标锁定设为批量更新: ltBatchUpdate

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧