| 发表于:2007-05-11 00:18:58 楼主 |
今天看着教程用vb做了一个windows form程序,运行一切正常,还可以进行添加、修改,但无法把修改写入数据库,原来用c#写程序时也遇见过同样的问题,不知有那位兄弟在类似经历。 程序读的是sql server自带的pubs数据库,读取stores和sales两个表,用了两个dataadapter:storestableadapter和salestableadapter1,dataadapter用fill方法填充数据集:pubsdataset,填充的代码如下: me.storestableadapter.fill(me.pubsdataset.stores) me.salestableadapter1.fill(me.pubsdataset.sales) 然后用bindingsource对数据进行管理,更改与添加的过程一切正常,下面是我updateall的代码部分: private sub updateall() 'bmstores.endcurrentedit() bmstores.endedit() if (me.pubsdataset.haschanges()) then try '首先保存子数据的删除内容 '再保存父数据的更新内容 '最后再保存子数据的其它更改 '第一步 if not pubsdataset.sales.getchanges(datarowstate.deleted) is nothing then dim dtsalesdeletes as datatable dtsalesdeletes = me.pubsdataset.sales.getchanges(datarowstate.deleted) me.salestableadapter1.update(dtsalesdeletes) end if '第二步 if not pubsdataset.stores.getchanges(datarowstate.deleted) is nothing then me.storestableadapter.update(me.pubsdataset.stores) end if '第三步 '更新添加 if not pubsdataset.sales.getchanges(datarowstate.added) is nothing then dim dtsalesadds as datatable dtsalesadds = me.pubsdataset.sales.getchanges(datarowstate.added) me.salestableadapter1.update(dtsalesadds) end if '更新修改 if not pubsdataset.sales.getchanges(datarowstate.modified) is nothing then dim dtsaleschanges as datatable dtsaleschanges = me.pubsdataset.sales.getchanges(datarowstate.modified) me.salestableadapter1.update(dtsaleschanges) end if me.pubsdataset.acceptchanges() me.btnsave.enabled = false catch ex as exception messagebox.show(ex.message) end try end if end sub 在程序里点击按钮“btnsave”调用该函数,如果pubsdataset的haschanges()不为空,btnsave.enable=true,在上面的代码中可以看到在 me.pubsdataset.acceptchanges() 之后有: me.btnsave.enabled = false 每次运行后,点击保存后,btnsave按钮也都不可用,当前显示修改成功,但打开数据库却发现并没有修改,再次运行程序,依旧是修改前的内容,偶现在正在纳闷之中,在网上也没查到类似问题,偶原来用c#时,也遇见过这样的问题,从那时到现在,已经重装过多次系统了,现在正在怀疑是不是偶用的软件问题…… |
|
|
|
|