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

しかし、いつもFrameStatus.NormalStatusはどうですか?列挙型の問題はどうしてですか?

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; 
} 

私の完全なclasss

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

+4

"本当にFrameStatus.NormalStatus how"が意味することは全く明らかではありません。完全なプログラムを提供できれば、あなたは何が起こると予想されているのか、そして何が実際に起こったのかを教えてください。 –

+0

コードは常にFrameStatus.NotReportを返します。 – RobV

答えて

1

あなたはLoadToList内fc.Statusには何も割り当てていないとFrameCamの '状態' 欄のための初期化は、 "FrameStatus.NormalStatus" です。 LoadToListのコードをfc.status(ここに示すthis.statusの代わりに)に割り当てるように更新すると、期待通りに機能するはずです。

注意点として、LoadToListは静的メソッドである必要があり、この問題を軽減できました。

-1

デバッガを使用してください。コードをステップ実行します。

コードは、あなたが行っていると思われる経路をとっていません。

デバッガでコードをステップ実行する方法がわからない場合は、にMUSTが必要です。

これはコンピュータプログラマにとってはオプションのスキルではありません。