怎样改变datagrid中的内容但不改变它连接的数据库的内容,包括删除,修改,添加
如果可以做到只改变datagrid中的内容,而不修改它连接的数据库的内容.等整个修改完成可以通过update或者什么按钮再来修改数据库的内容.
高手帮帮我..
问题点数:50、回复次数:16Top
1 楼scalewing1982()回复于 2005-06-02 14:39:24 得分 0
自己顶一下..急切求助,分不够再加..有什么good idea也好..Top
2 楼Stony1980(学无止境)回复于 2005-06-02 14:40:16 得分 0
在两次的update之间,你可以用cancelupdate来取消所有 的自动更新Top
3 楼AwaitLiu()回复于 2005-06-02 15:08:01 得分 0
DataGrid不要直接绑定到数据库上,自己写语句:
Dim con As new ADODB.Connection
Dim rs As new ADODB.Recordset
Private Sub Form_Load()
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Student.mdb;Persist Security Info=False"
rs.Open "select * from Tabel1", cn, adOpenStatic, adLockBatchOptimistic
Set DataGrid1.DataSource = rs
End Sub
Private Sub cmdUpdate_Click() '修改之后,点此按钮更新记录到数据库中
rs.UpdateBatch
End Sub
Top
4 楼AwaitLiu()回复于 2005-06-02 15:09:46 得分 0
rs.Open "select * from Tabel1", cn, adOpenStatic, adLockBatchOptimistic
漏了个字母 cn 应该是 con:
rs.Open "select * from Tabel1", con, adOpenStatic, adLockBatchOptimisticTop
5 楼lightwu()回复于 2005-06-02 15:14:30 得分 0
绑定,adodc1 locktype=4(批处理),cursorlocation=3(本地)
实际上,你对本地集合数据操作,即可。如果发生过修改,则使用CancelBatch
Top
6 楼scalewing1982()回复于 2005-06-02 16:29:33 得分 0
to:Awaitliu()
我是那样让datagrid.datasource=一个recordest的..可是只要datagrid里内容修改了..只要鼠标点到别的行它就自动更新到数据库里了...
那怎么删除datagrid中的一行,但recordest里相应的记录不删除呢?
麻烦你们了,我不太会用datagridTop
7 楼scalewing1982()回复于 2005-06-02 16:31:55 得分 0
to: stony1980()
它什么时候会自动更新呢?datagrid的添加,删除不是都是通过连着它的recordest来实现的么?还是datagrid可以自己添加一行记录啊?麻烦告诉一下..谢谢Top
8 楼lightwu()回复于 2005-06-02 17:24:41 得分 0
Adodc1.CursorLocation = adUseClient
Adodc1.LockType=adLockBatchOptimistic
本地,批处理锁,同时,才可以
用语句实现一样的道理Top
9 楼scalewing1982()回复于 2005-06-02 17:42:42 得分 0
to:lightwu()
麻烦告知一下用语句实现的代码好吗?我实在是不太会用那个adodc控件..谢谢了..
原理是什么呢..?不太懂诶..
麻烦了..多谢Top
10 楼cxbkkk(本命年,旺啊!)回复于 2005-06-02 23:17:13 得分 0
你先不在属性里设置DataSource就是了,后面再在代码中设置,利用记录集来完成操作,最后updateTop
11 楼scalewing1982()回复于 2005-06-02 23:29:32 得分 0
to cxbkkk
我没有在属性里设置,是在代码中连接的..可是不用你update,它自己就update了..比如你修改一个表项,只要你鼠标点别的表项,它自己就把数据库里相应的记录修改了..尤其是删除,删除了datagrid里的记录,数据库里的也就被删掉了..好烦..我想问怎么可以..datagrid里的记录能变成像本地数据那样的东西..需要时候再update到数据库..谢谢
希望能得到满意的答复..各位大虾帮帮忙Top
12 楼wfront(努力学习HTML)回复于 2005-06-03 08:13:28 得分 0
不要进行数据绑定,在每次查询时手动填充datagrid就可以了,虽然是麻烦了点,但推荐这样做.Top
13 楼scalewing1982()回复于 2005-06-03 13:57:58 得分 0
我自己觉得建一个视图还比较不错..程序结束的时候把它drop掉..这样就不会修改到数据库的数据了..
可是如果想要从视图更新到数据库里的表..应该怎么办呢?谁有好建议?谢谢Top
14 楼qgqchile(qgq)回复于 2005-06-03 22:54:58 得分 0
换个思路
做一个隐藏的MSFLEXGRID 然后每次输入数据的是后同步输入,最后如果用户确定将隐藏的那个的内容做INSERT O UPDATE O DELETE 就可以拉,事后记得 .CLEAR 如果拥护取消直接.CLEAR
Top
15 楼scalewing1982()回复于 2005-06-04 00:55:16 得分 0
to qgqchile
非常赞同你的思路...可以说的详细点吗?不太会实现..看来很快可以结帖了..3xTop
16 楼qgqchile(qgq)回复于 2005-06-04 01:30:03 得分 50
你是用自动填充还是手动啊,我从来都是用手动的
以下代码你可以参考一下,现在公司我没有VB代码,如果想要我可以给你发个以前我做的销售程序
不过是西文的
当用户按舔加 调用以下FUNCTION
public function(ms1 as msflexgrid, ms2 as msflexgrid)
with ms1
ms1.textmatrix(.row+1,0)=" 名称"
.
.
.
end with
ms2.textmatrix(.row+1,0)=" 名称"
.
.
.
end with
end function
假设MS2 是那个隐藏的当用户确定的时候你就可以进行数据库操作根据MS2 如过用户取消的话你直接用MS1刷新一下数据库就好拉
不知道对你有没用处,很久没写VB代码了,但基本思路是这样的
Top




