2012-01-18 68 views
3

我正在爲已經存在的報告寫'預覽'。由於現在已編程,生成報告會更改數據庫(它會生成訂單的發票,然後生成報告)。 現在我需要一種方法來生成報告而不更改數據庫。 生成發票是不是刪除它更容易,所以我這樣的思考:我可以使用TRAN&ROLLBACK進行打印預覽嗎?

  1. 開始交易
  2. 化妝發票
  3. 數據讀入的對象(數據集)
  4. ROLLBACK TRANSACTION
  5. 飼料要報告的數據集

這是一個好方法嗎?我問,因爲它似乎不像使用交易的正確方式。

謝謝大家!

回答

6

這不是一個可取的解決方案。您將在表上創建鎖並不必要地抨擊日誌。整個想法看起來非常難以捉摸。

您可以重新編碼以將GenerateInvoiceGenerateReport代碼分隔爲單獨的存儲過程嗎?然後分別打電話給他們或添加另一個DoBoth存儲過程?

+0

同意。討厭想想如果有人真的想在發生這種情況時生成發票,會發生什麼。 – ChrisBD 2012-01-18 09:57:58

+1

謝謝!我會採取另一種方法。嘗試拆分代碼看起來是一種好方法,但在打印之前我需要生成發票。我會需要一種方法來刪除它後面的每一個痕跡! – Ward 2012-01-18 10:10:05

2

正如Dems所述,建議不要使用事務。

我將用於解決這類問題的方法通常是向我的StoredProc添加一個Param以知道它是否是預覽。我會做相同的操作,但是如果它是一個插入或更新新行的存儲過程,我會將相關數據放入一個#TemporaryTable中,並將編輯該數據,而不是直接編輯實際表。

在我的過程結束時,我只是檢查是否預覽,如果我們不預測,我會從#TemporaryTable插入/更新新行。

+0

+1我以前用過這個方法,而且更可取 – 2012-01-18 19:28:55

+0

這就是我做到的!感謝大家! – Ward 2012-01-30 08:16:44