2009-08-27 29 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

使用调试器。浏览代码。

该代码没有采取您认为正在采取的路径。

如果您不知道如何在调试器中单步执行代码,那么您需要学习。

这不是计算机程序员的可选技能。