使用rs怎样撤消删除后的数据

broown 2004-04-17 07:54:58
使用Set DataGrid1.DataSource = rs后
rs.Delete后
怎样撤消删除的操作,恢复删除数据
...全文
97 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
broown 2004-05-10
  • 打赏
  • 举报
回复
哦,系统终于承认我的揭贴操作了!
broown 2004-05-09
  • 打赏
  • 举报
回复
谢谢楼上的。
flc 2004-05-09
  • 打赏
  • 举报
回复
在ACCESS里,如果.Delete后不移动和.update。就可以恢复删除数据,否则就无法恢复了
broown 2004-05-09
  • 打赏
  • 举报
回复
楼上所云????
chenyu001 2004-05-09
  • 打赏
  • 举报
回复
q全部是牛人呢

broown 2004-05-09
  • 打赏
  • 举报
回复
???
broown 2004-05-09
  • 打赏
  • 举报
回复
我的代码可能是使用了
rs.Delete
rs.MoveNext
所以就直接删除了数据。
是不是在删除后,你有其它关于数据库的操作,它都会真正执行它上一步的操作啊?
daisy8675 2004-05-08
  • 打赏
  • 举报
回复
樓上的,你強人,莫依不和你比的。。。 偶閃。。。
liuqingcn 2004-05-08
  • 打赏
  • 举报
回复
向莫依:
你鸟!向你学习!在如今这个竞争狂激烈的社会里,要的就是你的那种学习精神,而我现在缺少的就是这个!
向你学习,我要超过你!!!!
i promise ,my hand upons my heart!
daisy8675 2004-05-08
  • 打赏
  • 举报
回复
樓主終於不說我兇人了?終於承認我的代碼沒有問題了?

呵呵~~

on error resume next是偶常喜歡加的啊,你不加也行呀。

我想你必須查看一下msdn關於ado的部分

你知道rs.addnew或者rs.Delete使用update以後才能真正把數據增加或者添進數據庫中間
//////////////////////////////
adEditNone 0 指示沒有進行中的編輯作業。
adEditInProgress 1 指示目前記錄中的資料已經修改,但尚未儲存。
adEditAdd 2 指示已經呼叫 AddNew 方法,而且目前在備份緩衝區中的記錄是新的,而且尚未儲存到資料庫。
adEditDelete 4 指示目前的記錄已經取消。
//////////////////////////////
所以實際上一切還是在緩存中進行的,因為我的打開方式用了adOpenStatic, adLockBatchOptimistic

也就是批次更新模式,所以最後是用UpdateBatch完成最後的數據。

broown 2004-05-08
  • 打赏
  • 举报
回复
to daisy8675(莫依)
那为什么
Private Sub cmdDel_Click()
On Error Resume Next
rs.Delete//这里应该是删除了?

End Sub
我觉得虽然确定删除是
rs.UpdateBatch
但,在删除时应该要有与UpdateBatch配对的响应才对啊?
当然,虽然我试了你的代码确实实现了我的要求,但小弟就是不明白rs.Delete到底是不是在执行后就是真正删除数据,还是要加个On Error Resume Next异常处理?
能不能解决我的这个疑问?
马上揭贴
broown 2004-04-19
  • 打赏
  • 举报
回复
不行啊!
我的意思是要删除一个数据,使用command1实现,但,使用command2实现对command1执行的删除操作有一个撤消。
思路:在command1中删除时只是一个删除表面现象(通过DataGrid1显示),而事实上并没有删除数据,需要用户点击确认,才会真正删除数据库中的操作
daisy8675 2004-04-19
  • 打赏
  • 举报
回复
另外,不妨和你說說我的入門。

我進公司,我的電腦上面除了word,vb然後沒有任何東西。
老大奉行主義是安全至上,因為我的等級不高,所以我不被允許用任何軟體。

我每天也就2個小時能上網查資料。老大丟我一句話:msdn裡面有所有一切。

我現在仍然不能下載,所以隻能直接看網絡上源代碼。沒有辦法下載對我有用的程序或者控件。

沒有任何人教過我api或者稍微進階的問題。我是不斷從別人的問題與答案中去看自己以後會遇見的問題。

你問的問題,我以前也很苦惱,但是我起碼想出3種可行的解決方案。
我在vb版中隻發過二張問題貼。因為與其求人不如求自己。

我不管你認為什麼,但是我可以告訴你,兩件事情我不能容忍,如果有人在自尊上傷害我,我會拒絕和他一張桌子吃飯。
daisy8675 2004-04-19
  • 打赏
  • 举报
回复
請問:我的態度有無問題。或者我的語氣有問題。

另外:我入門的時候,就是看msdn,然後就是和寶寶一起找bug.
我承認我是菜鳥,但是我會自己看,自己做。

我給你程序,請你測試以後說話,隨便否定別人一樣是不禮貌的。

broown 2004-04-19
  • 打赏
  • 举报
回复
to daisy8675(莫依)
进入VB前,就有所耳闻了!果然闻名不如见面!你刚入门时,别人对你的态度也是如此?
不过还是要感谢你对我的如此帮助!
daisy8675 2004-04-19
  • 打赏
  • 举报
回复
對不起,請你看清楚我的程序,我的程序隻有點cmdok 以後才會真正刪除和增加,完全就就是你要的意思。

難道非要我寫
Private Sub command1_Click()
On Error Resume Next
rs.Delete

End Sub
Private Sub Command2_Click()
rs.CancelBatch

End Sub
你才會明白????

如果你沒有調試程序,請先別說不可以,如果有任何問題,我直接把程序mail給你,看是否同一個意思
zdl90 2004-04-18
  • 打赏
  • 举报
回复
up
broown 2004-04-18
  • 打赏
  • 举报
回复
谢谢
还有吗?
daisy8675 2004-04-17
  • 打赏
  • 举报
回复
不用事務,vb我起碼都套出3種方法解決,這是最簡單的批次更新的。
Option Explicit

Public rs As New ADODB.Recordset
Public conn As New ADODB.Connection

Private Sub cmdAddNew_Click()
On Error Resume Next
rs.AddNew

End Sub

Private Sub cmdCancel_Click()
rs.CancelBatch
Unload Me
End Sub

Private Sub cmdDel_Click()
On Error Resume Next
rs.Delete

End Sub

Private Sub cmdOK_Click()
rs.UpdateBatch
Unload Me
End Sub

Private Sub Command1_Click()
rs.CancelBatch

End Sub

Private Sub DataGrid1_SplitChange()
DataGrid1.Splits(0).AllowSizing = False
End Sub

Private Sub Form_Load()
Dim strconn As String
strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\test.mdb;Persist Security Info=False"
conn.CursorLocation = adUseClient
conn.Open strconn

If rs.State <> adStateClosed Then rs.Close
rs.Open "Select * from People", conn, adOpenStatic, adLockBatchOptimistic ' 3,1 狀態

Set DataGrid1.DataSource = rs


End Sub

Private Sub Form_Unload(Cancel As Integer)
rs.MoveFirst

If rs.State <> adStateClosed Then rs.Close
Set rs = Nothing
Set Form1 = Nothing
End Sub
QQ1368065 2004-04-17
  • 打赏
  • 举报
回复
用ADO,它有事务回滚,执行一出错后可将前面已执行的操作取消!
dim Con as New ADODB.Connection
Con.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog="+数据库名+";Data Source="+服务器名+";password="+登录密码+";"
MDI.Con.BeginTrans
Con.Execute "delete table1"
If Err.Number = 0 Then
Con.CommitTrans
MsgBox "保存成功!"
Else
Con.RollbackTrans
MsgBox "保存失败!"
End If

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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