2010-07-26 17 views
2

有人可以告訴我如何將SqlCeResultSet.Seek方法與組合索引一起使用嗎?在SQL Server CE中使用SqlCEResultSet.Seek和組合鍵

我正在努力尋找orderno+product code

我的SQL Server CE表具有以下指標:

CREATE INDEX orderline_idx ON OrderLines (orderno, item) 

我尋求代碼

public bool SeekDeliveryLine(string delnote,string item) 
{ 
     bool isFound = false; 

     cmd = new SqlCeCommand(); 
     cmd.Connection = conn; 
     cmd.CommandType = CommandType.TableDirect; 
     cmd.CommandText = "OrderLines"; 
     cmd.IndexName = "orderline_idx "; 

     try 
     { 
      //cmd.SetRange(DbRangeOptions.Match, new object[] { delnote }, null); 
      deliveryRS = cmd.ExecuteResultSet(ResultSetOptions.Scrollable | ResultSetOptions.Updatable); 
      isFound = deliveryRS.Seek(DbSeekOptions.FirstEqual, new object[] { delnote, item }); 

      if (isFound) 
      { 
       deliveryRS.Read(); 
       currentRowData = this.RetrieveRecord(); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
     return isFound; 
    } 

的代碼總是返回第一個匹配的訂單。

預先感謝

保羅

回答

0

尋道輸入數據數組必須是等同於索引字段的對象。您不能在不在索引中的字段上查看。它看起來像你有一個訂單號和項目的索引,我認爲這是一個int和一個字符串,但你傳遞「delnote」和項目,這兩個都是字符串。

0

感謝您的回答,這兩個字段都是字符串。我正在導入一個將訂單號存儲爲字符串的後端。 delnote字段的命名很差(我原本在處理交貨單號碼,並沒有重構變量名稱)。我現在已經得到了這段代碼,我重寫了下面的代碼,但我不確定爲什麼將字符串存儲到對象中應該會有所作爲,但現在它正在工作。

OT警告:SDF2.3是否與vs2010兼容?我們即將升級。

public bool SeekOrderLine(object orderNum,object item) 
    { 
     bool isFound = false; 

     cmd = new SqlCeCommand(); 
     cmd.Connection = conn; 
     cmd.CommandType = CommandType.TableDirect; 
     cmd.CommandText = "orderLines"; 
     cmd.IndexName = "orderline_idx"; 
     try 
     { 
      orderRS = cmd.ExecuteResultSet(ResultSetOptions.Scrollable | ResultSetOptions.Updatable); 
      isFound = orderRS.Seek(DbSeekOptions.FirstEqual, new object[] {orderNum, item}); 
      if (isFound) 
      { 
       orderRS.Read(); 
       currentRowData = this.RetrieveRecord(); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
     return isFound; 
    } 
+0

*所有*設備開發(手機除外)與Studio 2010不兼容,因此更新SDF將無濟於事。 – ctacke 2010-07-27 14:22:50

+0

謝謝你的擡頭。 – 2010-07-27 16:27:22