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

mais toujours FrameStatus.NormalStatus comment?Enum Ploblem alway valeur comment?

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

ma complète 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

Quelle est la question? – rahul

+4

Ce n'est vraiment pas du tout évident ce que vous entendez par "alway FrameStatus.NormalStatus comment". Cela aiderait si vous pouviez donner un programme complet, dire ce que vous attendiez et ce qui s'est réellement passé. –

+0

il semble aussi que le code retournera toujours FrameStatus.NotReport comme il est actuellement écrit – RobV

Répondre

1

Vous n'êtes pas attribuer quoi que ce soit à l'intérieur fc.Status LoadToList et l'initialisation pour le champ 'statut' de FrameCam est "FrameStatus.NormalStatus". Si vous mettez à jour le code dans LoadToList pour l'affecter à fc.status (au lieu de this.status, comme indiqué ici), cela devrait fonctionner comme prévu.

En note, LoadToList devrait être une méthode statique, ce qui aurait atténué ce problème.

-1

Utilisez un débogueur. Parcourez le code.

Le code ne prend pas le chemin que vous pensez prendre.

Si vous ne savez pas comment parcourir le code dans un débogueur, vous DOIT apprendre.

Ce n'est pas une compétence facultative pour un programmeur informatique.