2017-04-20 23 views
-1

我有兩種形式之一是客戶端字段客戶端名稱和客戶端代碼,另一種是項目字段客戶端名稱下拉列表和項目名稱。在c#中創建獨特的項目代碼#

我想創建一個特定的模式,即clientname =體育和clientcode = spr獨特的項目代碼。

我試着創建一個名爲ProjectID的函數,我在一個變量prID中存儲了day,month,year,並使用連接查詢獲取客戶端代碼並存儲在另一個變量cltcode中,然後將這兩個變量連接到第三個projectcode並返回projectcode。

我得到這個錯誤「並非所有的代碼路徑返回一個值」

,當我取消返回projectcode;最後經過語句塊它說:「使用未分配的局部變量projectcode的」

這裏是我的代碼,請幫助

public string ProjectID() 
    { 
     string prID = DateTime.Now.Day.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Year.ToString(); 
     long ID = Convert.ToInt64(prID); 
     string projectcode; 
     string cltcode; 
     try 
     { 
      con.Open(); 
      SqlCommand cmd = con.CreateCommand(); 
      cmd.CommandType = CommandType.Text; 
      cltcode = cmd.CommandText = "SELECT com.compcode from company_code AS com JOIN client_code AS cl ON com.compname = cl.clientname"; 
      string clientcode = cltcode.ToString(); 
      cmd.ExecuteNonQuery(); 
      projectcode = clientcode + ID; 
      return projectcode; 

     } 
     catch (Exception e) 
     { 
      string message = "create id error"; 
      message += e.Message; 
     } 
     //return projectcode; 
     finally 
     { 
      con.Close(); 
     } 

     return projectcode; 

    } 
+0

使用未分配的局部變量projectcode的只是意味着你還沒有分配一個值projectcode,這是真的,因爲你已經宣佈它沒有初始值。你也應該知道,通過在try塊內返回projectcode,連接永遠不會被關閉。考慮只在方法結束時返回項目代碼,並選擇默認值,或者在關閉連接後重新提升異常 – Ben

+0

這段代碼很難看,你知道。這麼多變量使用的原因是什麼?你有沒有聽說過String.Format? – anatol

+0

@anatol謝謝你的反饋我會盡力讓它好 – Nirmala

回答

-1

「並非所有的代碼路徑返回一個值」?

你需要有一回這樣的:

catch (Exception e) 
{ 
    string message = "create id error"; 
    message += e.Message; 
    return message; 
} 
-1

嘗試這些事情:

首先初始化變量string projectcode = null; 其次從試範圍中刪除此行return projectcode;

+0

謝謝@ yonan2236錯誤已解決,但我沒有從此查詢中獲得值「SELECT com.compcode from company_code AS com JOIN client_code AS cl ON com.compname = cl.clientname」;整個查詢被分配給變量 – Nirmala

-1

問題是如果您的try{}塊失敗,則projectcode不會被分配。

在你的聲明中使用:

string projectcode = "";