我正在爲已經存在的報告寫'預覽'。由於現在已編程,生成報告會更改數據庫(它會生成訂單的發票,然後生成報告)。 現在我需要一種方法來生成報告而不更改數據庫。 生成發票是不是刪除它更容易,所以我這樣的思考:我可以使用TRAN&ROLLBACK進行打印預覽嗎?
- 開始交易
- 化妝發票
- 數據讀入的對象(數據集)
- ROLLBACK TRANSACTION
- 飼料要報告的數據集
這是一個好方法嗎?我問,因爲它似乎不像使用交易的正確方式。
謝謝大家!
我正在爲已經存在的報告寫'預覽'。由於現在已編程,生成報告會更改數據庫(它會生成訂單的發票,然後生成報告)。 現在我需要一種方法來生成報告而不更改數據庫。 生成發票是不是刪除它更容易,所以我這樣的思考:我可以使用TRAN&ROLLBACK進行打印預覽嗎?
這是一個好方法嗎?我問,因爲它似乎不像使用交易的正確方式。
謝謝大家!
這不是一個可取的解決方案。您將在表上創建鎖並不必要地抨擊日誌。整個想法看起來非常難以捉摸。
您可以重新編碼以將GenerateInvoice
和GenerateReport
代碼分隔爲單獨的存儲過程嗎?然後分別打電話給他們或添加另一個DoBoth
存儲過程?
正如Dems所述,建議不要使用事務。
我將用於解決這類問題的方法通常是向我的StoredProc添加一個Param以知道它是否是預覽。我會做相同的操作,但是如果它是一個插入或更新新行的存儲過程,我會將相關數據放入一個#TemporaryTable中,並將編輯該數據,而不是直接編輯實際表。
在我的過程結束時,我只是檢查是否預覽,如果我們不預測,我會從#TemporaryTable插入/更新新行。
+1我以前用過這個方法,而且更可取 – 2012-01-18 19:28:55
這就是我做到的!感謝大家! – Ward 2012-01-30 08:16:44
同意。討厭想想如果有人真的想在發生這種情況時生成發票,會發生什麼。 – ChrisBD 2012-01-18 09:57:58
謝謝!我會採取另一種方法。嘗試拆分代碼看起來是一種好方法,但在打印之前我需要生成發票。我會需要一種方法來刪除它後面的每一個痕跡! – Ward 2012-01-18 10:10:05