存储过程如下
Create Procedure GetBOM
 @QAB001 Varchar(20)=''
As
 Declare @Lvl SmallInt,@Rec Int
 Set @Lvl=1
 Create Table #BOM (QAB001 Char(20) Collate Chinese_PRC_BIN,QAB003 Char(20) Collate Chinese_PRC_BIN,QAB005 Numeric(12,2),Lvl SmallInt)
 Insert #BOM
   Select QAB001,QAB003,QAB005,0 as Lvl
     From SGMQAB Where QAB001=@QAB001
 Set @Rec=@@RowCount
 set nocount   on
 While @Rec>0
 Begin
   Insert #BOM
     Select T.QAB003,B.QAB003,T.QAB005*B.QAB005 as QAB005,@Lvl as Lvl
       From #BOM T  Join SGMQAB B On T.QAB003=B.QAB001
       Where T.Lvl=@Lvl-1
   Set @Rec=@@RowCount
   Set @Lvl=@Lvl+1
 End
 Select @QAB001 as QAB001,B.QAB003,B.QAB005,T.DGB005
  From #BOM B left Join TPADGB T On B.QAB003=T.DGB002
   Where B.QAB003 Not In (Select Distinct QAB001 From #BOM)
VB 调用代码 
Private Sub Command1_Click()Dim rsCmd As New ADODB.Command
Dim rsStr As New ADODB.Recordset
Dim param As New ADODB.Parameter
Dim Strsql As String
With rsCmd
          .CommandText = "GetBOM"
          .CommandType = adCmdStoredProc
End WithSet param = rsCmd.CreateParameter("QAB001", adChar, adParamInput, 20, Trim(Text1.Text))Strsql = "GetBOM '" & param & "'"
rsStr.Open Strsql, Conn, , , adCmdTextMsgBox rsStr.RecordCountEnd Sub错误  实时错误“3704” 对象关闭时,不允许操作!