2016-04-04 19 views
0

Proses birimlerinin durum kodunu değiştirmek için kullanılacak bir uygulama var. Mevcut sorunum, geçerli olarak seçilen kaydın durum koduna bağlı olarak durum kodu açıklamasını gösteriyor. İşi yapacağımı düşündüğüm bir yönteme sahibim, ama istenen eylemleri gerçekleştirmek için nereye koyacağımı bilmiyorum. İstenilen tüm bilgileri içeren ve uygun şekilde oluşturulmuş arka uçta bir 2NF Microsoft Access (.mdb) veritabanı var, ancak C# ile çalışma konusunda sorun yaşıyorum.Geçerli durum koduna göre durum kodu açıklamasını göster

public void DescLabel() 
{ 
    if (statusCodeLabel.Text == "-5") 
    { 
     statusCodeDescLabel.Text = "Problem with Unit."; 
    } 

    if (statusCodeLabel.Text == "10") 
    { 
     statusCodeDescLabel.Text = "Manufacturing Order Created."; 
    } 

    if (statusCodeLabel.Text == "15") 
    { 
     statusCodeDescLabel.Text = "Stock Room in Process."; 
    } 

    if (statusCodeLabel.Text == "20") 
    { 
     statusCodeDescLabel.Text = "Picked by Stock Room."; 
    } 
} 
+1

İlgili bir olaya bir olay işleyicisi eklemeniz gerekir. Muhtemelen 'statusCodeLabel.TextChanged' veya' statusCodeLabel.Leave' –

+0

Kodları ikili olarak depolamak daha iyidir, örneğin ilk bit (MSB) birim kütle _problemi olan 0110, ikinci bit _Manufacturing Order Created._ ile ilgilidir, vb. . Böyle bit kullanmak zorunda değilsiniz, ondalık düşünebilirsiniz. Demek istediğim 8 (1000) birim ile _Problem ve 12 (1100) her ikisi de _problem ile birlikte unit._ ve _Manufacturing Order Created._. –

+0

Bu uygulama nedir? WPF veya Win formu veya Web? WPF ise, bir değer dönüştürücü yazar, değeri başka bir kontrolün etiketine, yani Etikete bağlar. Ayrıca, temiz kod perspektifinden, kod/açıklamayı bir dış dosyadan okunan bir hashtable'a koyun. – sowen

cevap

0

Sadece DurumuAçıklama adında Üretim Ünitesi modeli sınıfına bir ürün eklemek ve onun iç durum koduna göre yukarıdaki dizeleri dönmek olabilir. Ardından, istediğiniz metni almak için yalnızca UI'nizden bu mülkü arayın.

public StatusDescription { 
    get { 
     if (statusCode == 15) { 
      return "Stock Room in Process."; 
     } 

     // etc, etc. 

     return string.Empty; 
    } 
} 

Sonra sadece ...

statusCodeLabel.Text = productionUnit.StatusDescription; 

Ve güncellenmesi gerektiğinde sizin UI güncelleyin. Ya devlet değişikliği üzerinde. Veya bir zamanlayıcıda, başvurunuz ne olursa olsun.

Bu, zaten veritabanında olması gerektiği ve model sınıfınıza söz konusu durum koduyla eşlenmiş gibi görünen bir şey olduğunu söyledi.