1.先分析下刪除的過程。
假設現在已經新增了記錄,3個記錄.當前顯示第乙個記錄時,刪除.指標向下移動顯示第二個記錄。第二個同理。但當前顯示第三個記錄時,刪除第三個,指標指向eof,這不是是我們想要的,我們要的是刪除第三個記錄後,顯示第乙個記錄。
圖1解:
**如下:
**(1)
private sub deletecommand_click()
mybookmark = mrc.bookmark '對當前顯示的記錄作為標籤
str2$ = msgbox("是否刪除當前記錄?", vbokcancel, "刪除當前記錄")
'單擊刪除按鈕時彈出對話方塊提示是否刪除當前記錄
if str2$ = vbok then '如果刪除當前記錄
mrc.movenext '記錄指標指向下乙個記錄
if mrc.eof then '如果eof為真則說明剛開始顯示的記錄是記錄集中最後乙個記錄
mrc.movefirst '記錄指標指向第乙個記錄
mybookmark = mrc.bookmark '給第乙個記錄做個標籤
mrc.movelast '記錄指標指向最後乙個記錄(也是是當前顯示的記錄)
mrc.delete '刪除最後乙個記錄
mrc.bookmark = mybookmark '顯示剛才座標籤的記錄(第一條記錄)
call viewdata '呼叫函式顯示刪除後的記錄
else '如果剛開始顯示的不是最後乙個記錄,
mybookmark = mrc.bookmark '給當前記錄作標籤(即mrc.movenext)
mrc.moveprevious '記錄指標指向上乙個記錄(剛開始顯示的記錄)
mrc.delete '刪除上乙個記錄
mrc.bookmark = mybookmark ' 顯示剛才做的標籤,顯示記錄
call viewdata '呼叫函式顯示刪除後的記錄
end if
else '如果不刪除記錄
mrc.bookmark = mybookmark '顯示最開始做的標記記錄
call viewdata '呼叫函式顯示。
end if
end sub
2.刪除記錄時出現的錯誤。
2.1單擊修改班級資訊時,因為資料庫中沒有記錄而出現的錯誤
圖2:
解決辦法:
在修改班級資訊窗體的載入過程中新增如下語句:
**(2)
txtsql = "select * from class_info "
set mrc = executesql(txtsql, msgtext)
if mrc.eof = false then
mrc.movefirst
call viewdata
mybookmark = mrc.bookmark
else
msgbox "沒有紀錄!", vbokonly + vbexclamation, "警告"
exit sub
end if
當資料庫中沒有記錄時,會彈出提示框顯示「沒有記錄」
但修改班級資訊的窗體還是會載入,已經顯示沒有記錄了載入了窗體也沒有用,我想單擊提示框中的「確定」按鈕後直接退出該窗體所以在
msgbox "沒有紀錄!", vbokonly + vbexclamation, "警告"下新增了
unload me 但是有出現了新的錯誤
圖3:
因為在主選單中單擊修改班級資訊按鈕時載入窗體,必須的先載入完之後在進行對窗體的操作,後來想在主窗體中進行設定使查詢到資料庫中沒有記錄後不載入窗體,但沒有成功,待解決。
2.2當開啟窗體進行刪除操作時,當刪除最後乙個記錄時也會出現圖1顯示的錯誤。
對原有的**進行了修改 對已經注釋的**不在重複注釋,
**如下:
**(3):
private sub deletecommand_click()
mybookmark = mrc.bookmark
str2$ = msgbox("是否刪除當前記錄?", vbokcancel, "刪除當前記錄")
if str2$ = vbok then
mrc.movenext
if mrc.eof then
mrc.movefirst
if mrc.recordcount = 1 then '如果記錄集中只有乙個記錄(即當前要被刪除的記錄)
mrc.delete '刪除記錄
msgbox "沒有記錄", vbokonly + vbexclamation, "警告" '彈出顯示框顯示沒有記錄
unload me '解除安裝該窗體
exit sub
else '如果不是最後乙個記錄 其他**的功能跟已經注釋的相同
mybookmark = mrc.bookmark
mrc.movelast
mrc.delete
mrc.bookmark = mybookmark
call viewdata
end if
else
mybookmark = mrc.bookmark
mrc.moveprevious
mrc.delete
mrc.bookmark = mybookmark
call viewdata
end if
else
mrc.bookmark = mybookmark
call viewdata
end if
end sub
3.在刪除記錄中不適用標籤。
**如下:
**(4)
private sub deletecommand_click()
str2$ = msgbox("是否刪除當前記錄?", vbokcancel, "刪除當前記錄")
if str2$ = vbok then
mrc.delete
mrc.movenext
if mrc.recordcount = 0 then
msgbox "沒有記錄", vbokonly + vbexclamation, "警告"
unload me
exit sub
else
if mrc.eof then
mrc.movefirst
call viewdata
else
call viewdata
end if
end if
end if
end sub
相比較**(4)更簡潔,刪除記錄說刪就刪。先刪除當前的記錄然後在找下個記錄,有就顯示,沒有就顯示沒有記錄
**(3)先找下乙個記錄做個標籤,然後在回來把當前的記錄刪掉,在顯示作標籤的記錄。
4.個人感受
在敲刪除記錄的**時 我是仿照**(1)來進行的。我們平常的思維是先新增記錄然後在對記錄進行修改,當沒有新增記錄時,就不會去開啟修改記錄的窗體,但無意時開啟了,問題就出來了。這就是平時我們考慮問題的不周到造成的,不過問題出現了那我們就解決問題。
學生資訊管理系統
學生資訊管理系統,顧名思義就是為了管理學生的相關資訊做的一款軟體。雖然這次有原始碼供我們參考,但是從中我學習到了如何從開始到完工去做一款軟體,下邊我從做一項軟體專案的前後順序來總結我的學生資訊管理系統。一,分析需求 首先在做這款軟體是,我們先想象乙個成品,他的功能有哪些,每個功能完成哪項任務,這就是...
學生資訊管理系統
1.背景描述 學校招生辦在錄取當年新生時為新生建立了乙個新生基礎資訊類studentbase,其中包含每位新生的基本資料 學號 long mnum 姓名 char mname 20 性別 int m 其中0表示男,1表示女 年齡 int mage 住址 char maddr 30 新生主修專業所在系...
學生資訊管理系統
學生資訊管理系統由13個窗體1乙個mdi窗體乙個模組組成,窗體主要實現了登陸 新增 修改 檢視等功能,模組主要是存放全域性變數和各種函式。在敲這個系統之前,我覺得有個問題需要考慮一下,要是想一邊敲一邊除錯的話,那前面就得把資料庫等配置好了,如果想敲完再除錯的話,那就什麼時候配置好資料庫都可以。我當時...