2013-03-22 159 views
2

我對c#有點新,而且我試圖圍繞這個if-then語句試圖實現我的想法。if-then語句邏輯遇到問題

這是我的目標:當用戶在系統中輸入訂單時,會爲每個訂單創建一個唯一的訂單ID。但是,一些附加功能是用戶可以選擇項目數量,然後使用相同的orderID爲每個項目創建一個新行。每個項目都有一個唯一的密鑰。這給你這個:

ORDERID  KEY  ItemCode 

ORD123  758  2 
ORD123  584  2 
ORD123  582  2 

我遇到的問題是訂單ID必須是唯一除非有順序(創建每張訂單多行如上圖所示)多個項目。

什麼我目前的代碼工作: 單項訂單ID,與其他單項訂單ID

Existing Order : ORD111 
Attempt to Enter new order of : ORD111 
**Sorry OrderID already exists** 

單項訂單ID檢查,是針對多個項目訂單ID檢查,

Existing Order : ORD222 
        ORD222 
        ORD222 
Attempt to enter new order of : ORD222 
**Sorry OrderID already exists** 

但是,當我輸入多個項目訂單ID時,

Existing Order : ORD333 
        ORD333 
        ORD333 
Attempt to enter new order of ORD333 
           ORD333 
           ORD333 
**Order Successfully Entered** 

這裏是我的代碼,檢查訂單ID

 private bool isOrderIDUnique() 
{ 
    string OrderID = txtOrderID.Text; 
    string ItemAmount = txtItemAmount.Text; 
    int items = Convert.ToInt32(ItemAmount); 
    string select = getSelectString("COUNT(*)", strings.settings.AccessTable, "ORDERID = '" + OrderID + "'"); 
    int count = CountOrderID(select); 
    if (count == 0) 
    { 
     return true; 
    } 
    if (count >= 1 && items > 1) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 

如果有人可以幫助我這個我將不勝感激!我從IF聲明中錯過了哪些部分?我如何檢查團體與團體?謝謝!!

+0

你可以減少你的程序到這個: return(count == 0 || items> 1); 所以,如果項目> 1,則返回true。那是你要的嗎? – kainaw 2013-03-22 19:02:52

+0

從頂部開始,您應該使用多個表格,而不是將多個行放入相同的orderid中... – Ryan 2013-03-22 19:03:37

+0

我使用此方法在輸入訂單前檢查訂單ID。 – TexanVixen 2013-03-22 19:04:45

回答

3

我會建議一個表的重新設計:

OrdersTable 
OrderID User 
1  Joe 

OrderID是代理主鍵

OrderDetailsTable 
OrderID Key ItemCode 
1  XXX 1 
1  XXX 2 

然後,你只需要檢查訂單的存在,不計匹配。看起來你正在爲自己和你的用戶製作比它更復雜的內容。

+1

+1。規範化數據庫是一個不錯的第一步。讓數據庫執行唯一約束。 – JosephHirn 2013-03-22 19:21:04