2016-10-05 45 views
0

我已存儲Procerdure名Attendancesheet必須聲明標量變量@trainid

ALTER proc [dbo].[Attendancesheet] (@trainid nvarchar (max)) 

as 
begin 

declare @DyPQ as nvarchar (max) 
declare @CN as nvarchar(max) 
select @CN =ISNULL(@CN+',','') 
+ QUOTENAME(lecturename) 
FROM (SELECT DISTINCT lecturename FROM ATT where [email protected]) as Lectures 
--Print @CN 

SET @DyPQ= N' 
select * from 
(
select (select trinsname from trains where trinsid=e.trinsid) as [TrainerNmae], 
     lecturename, 
     att_status 
from att e where ([email protected]))as p 
    pivot 
(
max(Att_status) for lecturename in(' + @CN + '))as f' 

execute (@DyPQ); 
end 

我想通過@trainid從vb.net 2010組合框的值參數 的vb.net代碼:

Dim connect As New Connection 
      connect.getconnection() 

      Dim cmd As New SqlCommand("AttendanceSheet", connect.conn) 

      cmd.CommandType = CommandType.StoredProcedure 
      cmd.CommandText = "AttendanceSheet" 
      ' ---------------------- define parameter to stored procedure 
      Dim trainid As SqlParameter = cmd.Parameters.Add("@trainid", SqlDbType.NVarChar) 
      trainid.Direction = ParameterDirection.Input 
      trainid.Value = Me.cbotrainings.SelectedValue.ToString 
         Dim dt As New DataTable 
      dt.Load(cmd.ExecuteReader()) 
      connect.conn.Close() 
      Me.dg1.DataSource = dt 
+0

你有沒有嘗試過這種「暗淡trainid作爲的SqlParameter = cmd.Parameters.Add(「@ TR ainid「,SqlDbType.NVarChar)'參數名中沒有'@'? –

回答

0

你可以試試這個代碼:

Dim trainid As SqlParameter = cmd.Parameters.AddWithValue("@trainid", Me.cbotrainings.SelectedValue.ToString().Trim)