2009-08-27 39 views
-3
public enum FrameStatus 
{ 
    NotReport = 0, 
    NormalStatus = 1, 
    NotNormalstatus = 2 
} 

但一直都是FrameStatus.NormalStatus怎麼樣?Enum Ploblem常值如何?

public FrameStatus FrameReportStatus(int Framid, string Timebet) 
{ 
    foreach (FrameCam fc in al) 
    { 
     if (fc.Timebet == Timebet && fc.IdFrame == Framid) 
     { 
      if ((int)fc.status == 1) fc.status = FrameStatus.NormalStatus; 
      else if ((int)fc.status == 2) fc.status = FrameStatus.NotNormalstatus; 
      else fc.status = FrameStatus.NotReport; 
      return fc.status; 
     } 
    } 
    return FrameStatus.NotReport; 
} 

我的完整班組長

class FrameCam 
{ 
    private ArrayList al = new ArrayList(); 
    public string strConnect; 

    public FrameStatus status = FrameStatus.NormalStatus; 
    public string Timebet; 
    public int IdFrame; 

    public FrameCam() 
    { 

    } 
    public FrameCam(string st, string bt) 
    { 
     strConnect = st; 
     Timebet = bt; 
     LoadtoList(); 
    } 

    public FrameStatus GetFramStatus(int Framid, string timebet) 
    { 
     foreach (FrameCam fc in al) 
     { 
      if (Framid == fc.IdFrame && timebet == fc.Timebet) 
      { 
       return fc.status; 
      } 
     } 
     return FrameStatus.NotReport; 
    } 
    private void LoadtoList() 
    { 
     SqlConnection conn = null; 
     SqlDataReader sr = null; 
     try 
     { 
      string query = 
       "SELECT * FROM FrameReport WHERE convert(varchar, GETDATE(), 101) = convert(varchar, DateTimeSign, 101) AND TimeSignBeetWeen='" +this.Timebet+"'"; 

      conn = new SqlConnection(this.strConnect); 
      conn.Open(); 
      SqlCommand sc = new SqlCommand(); 
      sc.CommandText = query; 
      sc.Connection = conn; 
      sr = sc.ExecuteReader(); 
      while (sr.Read()) 
      { 
       FrameCam fc = new FrameCam(); 
       fc.Timebet = sr["TimeSignBeetWeen"].ToString(); 
       fc.IdFrame = (int)sr["IdFrame"]; 
       if ((int)sr["Status"] == (int)FrameStatus.NormalStatus) 
       { 
        status = FrameStatus.NormalStatus; 
       } 
       if ((int)sr["Status"] == (int)FrameStatus.NotNormalstatus) 
       { 
        status = FrameStatus.NotNormalstatus; 
       } 
       else status = FrameStatus.NotReport; 

       al.Add(fc); 
      } 
     } 
     catch (Exception) 
     { 
     } 
     finally 
     { 
      if (sr != null) sr.Close(); 
      if (conn != null) conn.Close(); 
     } 
    } 

    public FrameStatus FrameReportStatus(int Framid, string Timebet) 
    { 
     foreach (FrameCam fc in al) 
     { 
      if (fc.Timebet == Timebet && fc.IdFrame == Framid) 
      { 
       if ((int)fc.status == 1) fc.status = FrameStatus.NormalStatus; 
       else if ((int)fc.status == 2) fc.status = FrameStatus.NotNormalstatus; 
       else fc.status = FrameStatus.NotReport; 
       return fc.status; 
      } 
     } 
     return FrameStatus.NotReport; 
    } 
} 
+1

這是什麼問題? – rahul 2009-08-27 07:48:05

+4

「一直以來,FrameStatus.NormalStatus如何」的含義並不十分明顯。如果你能提供一個完整的程序,說出你預期會發生什麼,以及發生了什麼,這將會有所幫助。 – 2009-08-27 07:48:57

+0

它也看起來像代碼將永遠返回FrameStatus.NotReport目前的寫法 – RobV 2009-08-27 07:49:51

回答

1

你不是FrameCam的 '狀態' 字段分配中LoadToList什麼fc.Status和初始化是 「FrameStatus.NormalStatus」。如果更新LoadToList中的代碼以將其分配給fc.status(而不是this.status,如此處所示),那麼它應該按照您的預期工作。

作爲一個方面說明,LoadToList應該是一個靜態方法,它可以緩解這個問題。

-1

使用調試器。瀏覽代碼。

該代碼沒有采取您認爲正在採取的路徑。

如果您不知道如何在調試器中單步執行代碼,那麼您需要學習。

這不是計算機程序員的可選技能。