2014-04-02 37 views
0

目的:改變字段更新基於來自.aspx.vb代碼傳入值存儲過程字段變量

問題:我認爲,上述目標的工作,但是我對物業ID得到一個錯誤(這是字母數字),因爲它說無效的列名稱'S7753'在這種情況下我正在更新PropertyID S7753。

.aspx.vb代碼:

command.CommandText = "spActionUpdateOldestDate" 
     command.CommandType = CommandType.StoredProcedure 

     Dim vCheck As String = Session.Item("PropertyID").ToString & "-" & Session.Item("SafeGuardingDate").ToString & "-" & Session.Item("ActionsFieldName").ToString 

     command.Parameters.AddWithValue("@PropertyID", Session.Item("PropertyID").ToString) 
     command.Parameters.AddWithValue("@SafeGuardingDate", Session.Item("SafeGuardingDate").ToString) 
     command.Parameters.AddWithValue("@ActionsFieldName", Session.Item("ActionsFieldName").ToString) 

     command.ExecuteNonQuery() 

     command.Parameters.Clear() 

存儲過程

USE [DB] 

GO 
/****** Object: StoredProcedure [dbo].[spActionUpdateOldestDate] Script Date: 04/02/2014 14:24:09 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER PROCEDURE [dbo].[spActionUpdateOldestDate] 

-- spActionUpdateOldestDate '1234','date','field' 
    -- Add the parameters for the stored procedure here 
      @PropertyID nvarchar(50)    
      ,@SafeGuardingDate nvarchar(MAX) 
      ,@ActionsFieldName varchar(MAX) 

AS 
BEGIN 

-- add selection for courseID etc.. here 

-- print 'UPDATE [TblActionsOldest] SET ' + @ActionsFieldName + ' = ''' + @SafeGuardingDate + ''' WHERE PropertyID = ''' + @PropertyID+ '''' 
Execute ('UPDATE [TblActionsOldest] SET ' + @ActionsFieldName + ' = ''' + @SafeGuardingDate + ''' WHERE PropertyID = ''' + @PropertyID+ '''') 
+2

嘗試將執行更改爲打印並手動運行存儲過程傳遞給會話中的值。你會看到它將要執行的聲明。 – Fred

+0

找到並編輯代碼以反映。 – indofraiser

回答

1

加入這一行,你在上面添加參數

SqlCommandBuilder.DeriveParameters(command) 
+0

如果我添加SqlCommandBuilder.DeriveParameters(命令),我得到「過程或函數spActionUpdateOldestDate指定的參數太多。」 – indofraiser

0

答案之前,它是語法PropertyID字符串。