2013-06-20 53 views
0

我有2 asp頁面。首先,我通過登錄頁面登錄,第二頁面是主頁,其中有幾個任務按鈕。隨着我得到由FULLNAME,ADDRESS,CELL NUMBER,BLOOD GROUP和EMAILID組成的用戶詳細信息,一旦用戶使用其用戶名和密碼登錄,它應該從DATABASE的特定標籤中動態顯示。參數值傳遞在C#asp.net

我在GetLoginDetails存儲過程中爲此寫了查詢。我必須顯示員工姓名,他的上次登錄日期,時間等,一旦他登錄並進入主頁的方式我應該得到用戶的詳細信息。

ALTER PROCEDURE [dbo].[GetLastLogin] 

@LoggedInUser nvarchar(50), 
@FullName nvarchar(50), 
@Address nvarchar(50), 
@MobileNumber bigint, 
@EmailID nvarchar(50), 
@BloodGroup nvarchar(50), 
@EmpName nvarchar(50) 

As 

Declare @LastLogin int 

Set @LastLogin = (Select MAX(AccessID)from dbo.ACCESS_INFO where Flag = 1) 

Select Access_Date, Access_Time from dbo.ACCESS_INFO where LoggedInUser = @LoggedInUser  and AccessID = @LastLogin 

Update dbo.EmployeeData 
Set Empname = @EmpName 
where FullName = @FullName and Address = @Address and MobileNumber = @MobileNumber and  EmailID = @EmailID and BloodGroup = @BloodGroup ; 

即時得到錯誤說謂( 「過程或函數 'GetLastLogin' 需要參數 '@FullName',但未提供。」)請幫我

後端代碼

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Session["Username"] != null) 
     { 
      try 
      { 
       MTMSDTO objc = new MTMSDTO(); 

       LblLogdInUser.Text = Session["EmpName"].ToString(); 
       LblUser.Text = Session["Username"].ToString(); 


       objc.LoggedInUser = LblUser.Text; 
       DataSet laslogin = obj.GetLastLogin(objc); 
       DataView LasLogin = new DataView(); 
       LasLogin.Table = laslogin.Tables[0]; 
       GrdLasLogin.DataSource = LasLogin; 
       GrdLasLogin.DataBind(); 

       if (!IsPostBack) 
       { 
        int lastlog = GrdLasLogin.Rows.Count; 
        if (lastlog == 0) 
        { 
         LblLastLoginD.Text = "This is your First Login"; 

         DateTime today = System.DateTime.Now.Date; 
         LblToday.Text = today.ToString(); 
         LblTime.Text = System.DateTime.Now.ToLongTimeString(); 

         objc.LoggedInUser = LblLogdInUser.Text; 
         objc.AccessDate = Convert.ToDateTime(LblToday.Text); 
         objc.AccessTime = Convert.ToDateTime(LblTime.Text); 
         objc.AccessStatus = "New Login"; 
         objc.AccessFlag = 1; 

         int accessinfo = obj.InsertAccessInfo(objc); 
        } 

        else 
        { 
         LblLastLoginD.Text = Convert.ToDateTime(GrdLasLogin.Rows[0].Cells[0].Text).ToString("dd/MMM/yyyy"); 
         LblLastLoginT.Text = GrdLasLogin.Rows[0].Cells[1].Text; 

         DateTime today = System.DateTime.Now.Date; 
         LblToday.Text = today.ToString(); 
         LblTime.Text = System.DateTime.Now.ToLongTimeString(); 

         objc.LoggedInUser = LblLogdInUser.Text; 
         objc.AccessDate = Convert.ToDateTime(LblToday.Text); 
         objc.AccessTime = Convert.ToDateTime(LblTime.Text); 
         objc.AccessStatus = "New Login"; 
         objc.AccessFlag = 1; 

         int accessinfo = obj.InsertAccessInfo(objc); 
        } 

        LblFname.Visible = true; 
        LblAdd.Visible = true; 
        LblMnum.Visible = true; 
        LblMailID.Visible = true; 
        LblBGroup.Visible = true; 
       } 
      } 

      catch (Exception ex) 
      { 
       Response.Redirect("ERROR.aspx"); 
       Session.Abandon(); 
      } 

     } 

     else 
     { 
      Response.Redirect("~/Login.aspx"); 
     } 

     Response.CacheControl = "no-cache"; 

    } 
+1

你是如何在ASP.NET代碼中調用它的?錯誤消息是正確的 - 您需要爲參數提供值;所以...你在做那個嗎? –

+0

需要查看調用此sp的代碼。 – Steve

+0

你可以包括你的電話代碼嗎?這個錯誤表明你沒有傳入所有的參數。 – BenR

回答

0

這個問題不在你的SQL中。它在asp中的調用函數中。您沒有正確地將完整名稱參數發送到SQL Server。查看這個問題,瞭解如何發送參數的示例。 Call a stored procedure with parameter in c#

2

錯誤消息表明您需要爲參數FullName提供值。所以,如果你還沒有這樣做,那就去做吧。這裏唯一的併發症是值爲null; string可以是null,但要指定在ADO.NET中您需要通過DBNull.Value;如果使用null,則不包括參數。這意味着你結束了類似的代碼:

cmd.Parameters.AddWithValue("FullName", (object)fullName ?? DBNull.Value); 

醜陋,但它的作品。

或者,許多助手實用程序將爲您做到這一點。所以用「小巧」:

var lastAccess = conn.Query<AccessInfo>("GetLastLogin", 
      new { LoggedInUser = cn, FullName = fullName, /* snipped */ }, 
      commandType: CommandType.StoredProcesdure).FirstOrDefault(); 
+1

我已編輯我的問題以及後端代碼請通過它。的事項 – Suraj

+1

@Suraj一切都是內部數據集'= laslogin obj.GetLastLogin(objc);' –

+1

它到後端編碼部不與所存儲的過程和相關的對不起球員我整理出來..有o使用網格視圖和然後顯示它..它接受空值... – Suraj