功夫終於沒有白費

2021-06-15 21:03:18 字數 1626 閱讀 3641

其實這幾天一直想把vba程式裡的那段**優化一下,因為那段**是寫在程式裡面執行的,效率很低,改進的話就寫成乙個儲存過程算了。不過,由於是多條件查詢,所以,想來想去,今天最終還是在儲存過程中執行動態sql語句,這樣做的好處就是可以傳遞一段條件語句,也就是傳乙個引數就行了,不用乙個乙個引數的傳,還得加好多判斷。第一次寫這樣的儲存過程,還真的有點不習慣,還花了不少時間去除錯。不過,還好,總算除錯通過了。下面我把儲存過程的**和呼叫例項放上來,如果大家覺得還有什麼好的建議的話,我們可以一起討論一下。

/* 

先建立有兩個輸入引數,乙個輸出引數的儲存過程

*/create procedure 總部送貨單數量求和

@條件  nvarchar(1000),

@銷售方式  nvarchar(100),

@總數  int output

as declare @sql nvarchar(4000)

if (isnull(@條件,'s')) <>'s'

begin

set @sql="select  sum(isnull(總部送貨單明細.數量,0)) from 總部送貨單明細  inner join 總店送貨單 on 總店送貨單.送貨單號 = 總部送貨單明細.送貨單號  inner join 產品資料表 on 產品資料表.產品編號 = 總部送貨單明細.產品名稱  inner join hjg銷售方式 on hjg銷售方式.銷售方式編號 = 總部送貨單明細.銷售方式  left outer join 回桶明細表 on 總部送貨單明細.送貨單號 = 回桶明細表.送貨單號 and  總部送貨單明細.產品名稱 = 回桶明細表.產品名稱  left outer join 回庫明細表 on 回庫明細表.送貨單號 = 總部送貨單明細.送貨單號 and 回庫明細表.產品名稱 = 總部送貨單明細.產品名稱  where 總店送貨單.落單日期 > (select max(盤點日期) from dbo.盤點主表) "+ @條件 +" and  hjg銷售方式.銷售方式 ='"+@銷售方式 +"'" 

exec @總數=sp_executesql   @sql  output  --執行,獲得返回值 

end

/*先寫乙個函式,方便多次呼叫。

*/function 查詢總數(sql_wh as string, fs as string) as string

dim comm as new adodb.command

set comm = new adodb.command

dim rs as new adodb.recordset

set rs = new adodb.recordset

dim prmbyroyalty, prmbyroyalty2, prmbyroyalty3 as adodb.parameter

comm.commandtext = "總部送貨單數量求和"

comm.commandtype = adcmdstoredproc

comm.activeconnection = currentproject.connection

/*在程式中呼叫函式

sql_wh=....  /*略*/

me.調出 = 查詢總數(sql_wh, "調出")

ps:記錄一下今天的日子,2023年2月9號,想不到這麼快就有30天了,幸福的時光總是過得那麼快!

學了3,4年,終於明白了高斯白雜訊的那些東西。

提到高斯白雜訊,首先想到的就是功率譜,功率譜密度,sigma方,高斯分布,二階中心距,方差,均值,功率,awgn,eb n0,等等。這些名詞到底如果整合,下面來整理一下。所謂高斯白雜訊,從數學上來講,就是服從於一定分布的隨機變數。這個隨機變數可以隨著時間產生無限多的值。這就是訊號。這個訊號顯然就是乙...

LINUX 新增使用者並解決沒有補全和只有白色的問題

文章主要介紹一下ubuntu系統增加使用者,並且針對新新增使用者終端沒有補全和字型只有白色做乙個設定。目前網路上有針對兩個問題都有介紹,但是沒有兩個放在一起介紹的,費了不少時間找相關教程,所以寫成乙個節省後來者時間。1 新增使用者 useradd user1 passwd user12 建立使用者目...

一直沒有搞懂的C語言引數傳遞,今天終於明白了

本講我們和大家一起來聊一聊c語言中有關引數傳遞的一些知識。1.問題引入 請寫出以下程式的列印結果。include 將某整數加10 void add by 10 int a a a 10 int main int argc,char ar int a 2 add by 10 a printf a d ...