不經過優(yōu)化最簡單的就是記錄每一步的操作,然后反向操作回去就好了··,比方說你可以加兩個visible為FALSE的list(list1和list2)
十多年的宜州網站建設經驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都全網營銷的優(yōu)勢是能夠根據用戶設備顯示端的尺寸不同,自動調整宜州建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯從事“宜州網站設計”,“宜州網站推廣”以來,每個客戶項目都認真落實執(zhí)行。
其中l(wèi)ist1用來存儲現在當前的操作,list2用來存儲歷史操作。
你每操作一步,比方說點擊了label2,那list1中就additem "label2"
其中l(wèi)ist1增加項目時候,list2復制為list1
要撤銷的時候,就是將list1的最后一項刪除掉,這個時候list2保持不變。要還原的話,先判斷l(xiāng)ist1.listcount 是否和 list2.listcount相同。若相同則不進行還原(可以提示說已經是最新的操作了),若不相同,則list1.additem list2.list(list1.listcount)
上面說的只是記錄還原和撤銷的記錄,其關聯的是還原和撤銷的功能,比方說你簡單點的可以將所有的line的顏色以及text全部初始化,然后只要你激發(fā)了撤銷恢復功能,不論你是還原還是撤銷,都是重新執(zhí)行一遍list1中的存在的信息記錄。比方說你list1中的記錄是 label1 label3 label4,那就相當于順序執(zhí)行 label1_click label3_click label4_click 那就可以了··
如果你要效率高一點的話,那就你在編程的時候對每一個執(zhí)行任務編寫一個反向編程 比方說你有l(wèi)abel1_click 那你就變寫一個還原label1_click的函數比方說是anti_label1,那你撤銷時候就調用這個函數好了··,還原的時候當然還是調用原來的那個函數。不過基本上不是特別多的話,用第一種方法就夠用了··省事···呵呵···不知不覺地說了這么多··呵呵·· 當然也可以用數組來存儲當前操作和歷史操作的···
undo功能是將操作保存在一個數組中,固定長度的數組。后退或者取消的時候,去這個數組里找后退的操作,執(zhí)行就可以。
SQL的備份語句
備份整個數據庫:
BACKUP DATABASE { database_name | @database_name_var }
TO backup_device [ ,...n ]
[ WITH
[ BLOCKSIZE = { blocksize | @blocksize_variable } ]
[ [ , ] DESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] DIFFERENTIAL ]
[ [ , ] EXPIREDATE = { date | @date_var }
| RETAINDAYS = { days | @days_var } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] FORMAT | NOFORMAT ]
[ [ , ] { INIT | NOINIT } ]
[ [ , ] MEDIADESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]
[ [ , ] { NOSKIP | SKIP } ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
]
備份特定的文件或文件組:
BACKUP DATABASE { database_name | @database_name_var }
file_or_filegroup [ ,...n ]
TO backup_device [ ,...n ]
[ WITH
[ BLOCKSIZE = { blocksize | @blocksize_variable } ]
[ [ , ] DESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] DIFFERENTIAL ]
[ [ , ] EXPIREDATE = { date | @date_var }
| RETAINDAYS = { days | @days_var } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] FORMAT | NOFORMAT ]
[ [ , ] { INIT | NOINIT } ]
[ [ , ] MEDIADESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]
[ [ , ] { NOSKIP | SKIP } ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
]
備份一個事務日志:
BACKUP LOG { database_name | @database_name_var }
{
TO backup_device [ ,...n ]
[ WITH
[ BLOCKSIZE = { blocksize | @blocksize_variable } ]
[ [ , ] DESCRIPTION = { 'text' | @text_variable } ]
[ [ ,] EXPIREDATE = { date | @date_var }
| RETAINDAYS = { days | @days_var } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] FORMAT | NOFORMAT ]
[ [ , ] { INIT | NOINIT } ]
[ [ , ] MEDIADESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]
[ [ , ] NO_TRUNCATE ]
[ [ , ] { NORECOVERY | STANDBY = undo_file_name } ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOSKIP | SKIP } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
]
}
backup_device ::=
{
{ logical_backup_device_name | @logical_backup_device_name_var }
|
{ DISK | TAPE } =
{ 'physical_backup_device_name' | @physical_backup_device_name_var }
}
file_or_filegroup ::=
{
FILE = { logical_file_name | @logical_file_name_var }
|
FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var }
}
截斷事務日志:
BACKUP LOG { database_name | @database_name_var }
{
[ WITH
{ NO_LOG | TRUNCATE_ONLY } ]
}
參數
DATABASE
指定一個完整的數據庫備份。假如指定了一個文件和文件組的列表,那么僅有這些被指定的文件和文件組被備份。
說明 在進行完整數據庫備份或差異數據庫備份時,Microsoft? SQL Server? 備份足夠的事務日志,以生成一個將在還原數據庫時使用的一致的數據庫。在 master 數據庫上只能采用完整數據庫備份。
{ database_name | @database_name_var }
指定了一個數據庫,從該數據庫中對事務日志、部分數據庫或完整的數據庫進行備份。如果作為變量 (@database_name_var) 提供,則可將該名稱指定為字符串常量 (@database_name_var = database name) 或字符串數據類型(ntext 或 text 數據類型除外)的變量。
backup_device
指定備份操作時要使用的邏輯或物理備份設備??梢允窍铝幸环N或多種形式:
{ logical_backup_device_name } | { @logical_backup_device_name_var }
是由 sp_addumpdevice 創(chuàng)建的備份設備的邏輯名稱,數據庫將備份到該設備中,其名稱必須遵守標識符規(guī)則。如果將其作為變量 (@logical_backup_device_name_var) 提供,則可將該備份設備名稱指定為字符串常量 (@logical_backup_device_name_var = logical backup device name) 或字符串數據類型(ntext 或 text 數據類型除外)的變量。
{ DISK | TAPE } =
'physical_backup_device_name' | @physical_backup_device_name_var
允許在指定的磁盤或磁帶設備上創(chuàng)建備份。在執(zhí)行 BACKUP 語句之前不必存在指定的物理設備。如果存在物理設備且 BACKUP 語句中沒有指定 INIT 選項,則備份將追加到該設備。
當指定 TO DISK 或 TO TAPE 時,請輸入完整路徑和文件名。例如,DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\Mybackup.dat' 或 TAPE = '\\.\TAPE0'。
說明 對于備份到磁盤的情況,如果輸入一個相對路徑名,備份文件將存儲到默認的備份目錄中。該目錄在安裝時被設置并且存儲在 KEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer 目錄下的 BackupDirectory 注冊表鍵值中。
如果使用的是具有統一命名規(guī)則 (UNC) 名稱的網絡服務器或已重新定向的驅動器號,則請指定磁盤的設備類型。
當指定多個文件時,可以混合邏輯文件名(或變量)和物理文件名(或變量)。但是,所有的設備都必須為同一類型(磁盤、磁帶或管道)。
Windows 98 不支持備份到磁盤。
n
是表示可以指定多個備份設備的占位符。備份設備數目的上限為 64。
BLOCKSIZE = { blocksize | @blocksize_variable }
用字節(jié)數來指定物理塊的大小。在 Windows NT 系統上,默認設置是設備的默認塊大小。一般情況下,當 SQL Server 選擇適合于設備的塊大小時不需要此參數。在基于 Windows 2000 的計算機上,默認設置是 65,536(64 KB,是 SQL Server 支持的最大大?。?。
對于磁盤,BACKUP 自動決定磁盤設備合適的塊大小。
說明 如果要將結果備份集存儲到 CD-ROM 中然后從 CD-ROM 中恢復,請將 BLOCKSIZE 設為 2048。
磁帶的默認 BLOCKSIZE 為 65,536 (64 KB)。顯式聲明塊大小將替代 SQL Server 選擇的塊大小。
DESCRIPTION = { 'text' | @text_variable }
指定描述備份集的自由格式文本。該字符串最長可以有 255 個字符。
DIFFERENTIAL
指定數據庫備份或文件備份應該與上一次完整備份后改變的數據庫或文件部分保持一致。差異備份一般會比完整備份占用更少的空間。對于上一次完整備份時備份的全部單個日志,使用該選項可以不必再進行備份。有關更多信息,請參見差異數據庫備份和文件差異備份。
說明 在進行完整數據庫備份或差異備份時,SQL Server 備份足夠的事務日志,從而在恢復數據庫時生成一個一致的數據庫。
EXPIREDATE = { date | @date_var }
指定備份集到期和允許被重寫的日期。如果將該日期作為變量 (@date_var) 提供,則可以將該日期指定為字符串常量 (@date_var = date)、字符串數據類型變量(ntext 或 text 數據類型除外)、smalldatetime 或者 datetime 變量,并且該日期必須符合已配置的系統 datetime 格式。
RETAINDAYS = { days | @days_var }
指定必須經過多少天才可以重寫該備份媒體集。假如用變量 (@days_var) 指定,該變量必須為整型。
重要 假如 EXPIREDATE 或 RETAINDAYS 沒有指定,有效期將取決于 sp_configure 的 media retention 配置設置。這些選項僅僅阻止 SQL Server 重寫文件。用其它方法可擦除磁帶,而通過操作系統可以刪除磁盤文件。有關過期驗證的更多信息,請參見本主題的 SKIP 和 FORMAT。
PASSWORD = { password | @password_variable }
為備份集設置密碼。 PASSWORD 是一個字符串。如果為備份集定義了密碼,必須提供這個密碼才能對該備份集執(zhí)行任何還原操作。
分享標題:vb點虐
undo的簡單介紹
網頁鏈接:http://www.yijiale78.com/article30/ddjghso.html
成都網站建設公司_創(chuàng)新互聯,為您提供外貿建站、手機網站建設、企業(yè)網站制作、自適應網站、虛擬主機、網站改版
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯