G goldstone Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-20 #1 在三层中,我通过clientdataset.applyupdate(0)向服务器提交插入操作,由于其中的id是种子型,我在客户端无法取得,既clientdataset新插入的记录中id字段是空,实际是有值的,如何取回来
在三层中,我通过clientdataset.applyupdate(0)向服务器提交插入操作,由于其中的id是种子型,我在客户端无法取得,既clientdataset新插入的记录中id字段是空,实际是有值的,如何取回来
Q qiya Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-20 #2 在提交之前先取得当前最大的ID值,那么你插入的记录的ID就是"取得的最大的ID"+1
G goldstone Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-20 #3 id是种子型,id+1是不对的,而且我在提交完之后才可以取得id,可是clientdataset里id是空的,难到要自己在clientdataset上自己给他加上去吗 有没有别的办法
F free_knight Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-20 #4 用 ClientDataSet1.FieldByName('ID').NewValue; 试试,它是取记录的新值
G goldstone Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-20 #6 ClientDataSet1.FieldByName('ID').NewValue; 用过,也是空值
F free_knight Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-20 #8 对了,种子型不需要你对它赋值,它会自动生成,你若要知道是多少 只要在clientdataset.applyupdate(0)后去数据库里取一下就行了 (Oracle 里的种子用SQL语句赋值如:SQ_ORDER_FORM是种子型,用 SQ_ORDER_FORM.NEXTVAL赋新值;SQ_ORDER_FORM.CURRVAL取当前值) 个人观点。
对了,种子型不需要你对它赋值,它会自动生成,你若要知道是多少 只要在clientdataset.applyupdate(0)后去数据库里取一下就行了 (Oracle 里的种子用SQL语句赋值如:SQ_ORDER_FORM是种子型,用 SQ_ORDER_FORM.NEXTVAL赋新值;SQ_ORDER_FORM.CURRVAL取当前值) 个人观点。
G goldstone Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-20 #9 现在问题是clientdataset。applyupdate(0)后,其实数据已经提交给数据库而且成功,但是 clientdataset里没有id的值
F forest gun Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-20 #10 关注 这问题也曾让我很头大,我采用了马上刷新的方法,clientdataset.refresh, 但效果不好,所以我现在基本上不用多层结构了
M Motar Liu Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-20 #11 请在DataSetProvider1中的OnGetData中撰写程序代码即可,可用在Detail文件参考资料文件中的UpdateDate
F free_knight Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-20 #12 clientdataset.refresh的效果是不好,也可能根本没用。 我用的方法是: clientdataset.close; clientdataset.open; 就行了
G goldstone Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-20 #13 clientdataset.close; clientdataset.open; 太夸张了吧,一切白努力了,重新去数据
Q qiya Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-20 #14 不好意思,没看清题意!我上面说的是如果你想知道要添加记录的ID可以这样做,至于显示 在ClientDataset中,应该在提交后刷新(先Close再Open),这样才能从服务器获取提交后生 成的ID!
G goldstone Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-20 #15 先Close再Open这是很恐惧的事情,如果记录有100000条怎么办,要半天才能取回来,不行的
F free_knight Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-20 #17 先说清楚你用什么数据库, 再把你的添加数据的那段代码贴出来看看,不然谁搞的清呀
S szhhp Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-20 #18 三层结构的客户端和数据服务器端在多数情况下是不保持联系的 当客户端取得了数据后,就存放在一个本地的文件里 这时如果客户修改或增加数据,本地的CLIENTDATASET会有另一个文件 对变化的内容(增、减、修改)有个记录。根据这些记录CLIENTDATASET 会组织SQL语句发给数据服务器执行。 这时问题出现了: 如果数据服务器的数据被其他用户作了改动,该如何立即体现在客户端 (你的问题类似于此,只不过ID是由计算机修改的) 李维的 《DELPHI5。X分布式多层应用系统篇》里对此有一般详细的介绍 我考虑用的方法是:在服务器里把刚刚更新的内容查询出来(一般情况下数据不会很大) 而不是CLOSE 再OPEN重新下载所有的数据,根据这些数据来更新本地的那个文件。 例如:你的情况,只需在服务器把更新后的ID值取出在改写本地的。
三层结构的客户端和数据服务器端在多数情况下是不保持联系的 当客户端取得了数据后,就存放在一个本地的文件里 这时如果客户修改或增加数据,本地的CLIENTDATASET会有另一个文件 对变化的内容(增、减、修改)有个记录。根据这些记录CLIENTDATASET 会组织SQL语句发给数据服务器执行。 这时问题出现了: 如果数据服务器的数据被其他用户作了改动,该如何立即体现在客户端 (你的问题类似于此,只不过ID是由计算机修改的) 李维的 《DELPHI5。X分布式多层应用系统篇》里对此有一般详细的介绍 我考虑用的方法是:在服务器里把刚刚更新的内容查询出来(一般情况下数据不会很大) 而不是CLOSE 再OPEN重新下载所有的数据,根据这些数据来更新本地的那个文件。 例如:你的情况,只需在服务器把更新后的ID值取出在改写本地的。
G goldstone Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-20 #19 szhhp 这种方法我做了,总是感觉不太好,有没有更好的。
K kmyan Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-21 #20 用不着显示id值,读是可以读出来的,我做的系统就是这样用的,没出过问题