Re: [SQL ] VBA利用SQL讀BOM,SP多參數

看板Database (資料庫)作者 (Keep The Faith)時間5年前 (2019/09/15 19:43), 編輯推噓0(002)
留言2則, 1人參與, 5年前最新討論串1/1
再請教一個問題,如果要帶入的參數是不固定的n個 有時1個,有時20個 可以類似C的 sub function 多引數嗎? int func(int arg_count, ...) CREATE PROCEDURE DB_GetEntireLevelBOM -- Add the parameters for the stored procedure here @MN1_PartNumber VARCHAR(30), @MN2_PartNumber VARCHAR(30), @MN3_PartNumber VARCHAR(30), ..... ※ 引述《licheer (Keep The Faith)》之銘言: : 資料庫名稱: MSSQL : 下面這段code在MSSQL Studio中是可以執行,也可以查到結果 : 但是搬到VBA裡面(將下面的SQL語句,全部放在同一個string中) : 就會出現 "當物件關閉時,不允許操作" 的錯誤 : 請問這是哪裡錯了呢? : ====== : declare @maincode char(60) : set @maincode='12345-77889965'-- : declare @i int : set @i=0 : --定義主件品號臨時表 : declare @tmp_main table (品號 CHAR(60)) : --將待查品號存入主件品號臨時表 : INSERT INTO @tmp_main SELECT MD003 FROM BOMMD WHERE MD001=@maincode : --定義BOM明細臨時表 : declare @tmp_bom table (主件品號 char(60),元件品號 char(60),組成用量 float, : 階數 int) : --將待查品號下一級元件品號數據存入BOM明細臨時表 : insert into @tmp_bom select MD001,MD003,MD006,@i from BOMMD : where MD001 =@maincode : --如果BOMM表MD001(主件品號)存在於BOM明細臨時表中的元件品號且階數為當前最低 : 層,進入迴圈 : while exists(select * from BOMMD where MD001 in (select 元件品號 from : @tmp_bom where 階數=@i)) : begin : --向BOM明細臨時表插入BOMMD中MD001與主件品號臨時表品號一致的資料(以主件品號 : 臨時表左關聯BOMMD,存在多對一關係) : insert into @tmp_bom select MD001,MD003,MD006,@i+1 from : (select MD001,MD003,MD006 from @tmp_main LEFT join BOMMD on 品號 : =MD001)A where MD001 is not null : --清空主件品號臨時表 : delete from @tmp_main : --向主件品號臨時表插入BOMMD中的主品號存在於BOM明細臨時表元件品號的MD003(子 : 品號) : INSERT INTO @tmp_main SELECT MD003 FROM BOMMD WHERE MD001 : in (select 元件品號 from @tmp_bom where 階數=@i) : set @i=@i+1 : end : select * from @tmp_bom ORDER BY 階數,元件品號 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.234.143.56 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1568547793.A.475.html

09/16 17:37, 5年前 , 1F
直接放進TABLE,SP去讀TABLE
09/16 17:37, 1F

09/16 17:42, 5年前 , 2F
或傳參數1,2,3...字串進去拆
09/16 17:42, 2F
文章代碼(AID): #1TVYFHHr (Database)
文章代碼(AID): #1TVYFHHr (Database)