2014-01-21 19 views
-1

我在Visual Studio數據集中有一個表適配器。我將一個值與表適配器內的查詢對齊,這樣我就可以得到如果查詢返回1,如果有數據,則返回1或0返回null。例如:表適配器weired返回值

document.documentDataSetTableAdapters.Job_NoTableAdapter jnta = 
    new documentDataSetTableAdapters.Job_NoTableAdapter(); 

int result = jnta.FillBygetJob_No(documentDataSet1.Job_No); 

它永遠不會發生在我身上得到的結果以外的值大於0或1。在這裏我得到的結果= 2,所以當我做了IF語句

if(result == 1){....} 
else if(result == 0) 

所以我得到了錯誤。我做這個解決了這個問題:

if(result == 0){...} 
else{...} 

所以我需要的是結果是如何得到的值2

+0

我懷疑答案在'jnta.FillBygetJob_No'裏面,你沒有向我們展示過。 –

+0

您對FillByGetJob_No的查詢是什麼? FillByGetJob_No方法還有哪些其他屬性? –

+0

查詢是這樣的: SELECT JN_Full_Form,Job_No,Job_No_ID,一年 FROM Job_No WHERE(JN_Full_Form =(SELECT MAX(JN_Full_Form)AS表達式1 FROM Job_No AS Job_No_1)) – OJazem

回答

0

所以你填充DataSet與此查詢(您的評論)的解釋:

SELECT JN_Full_Form, Job_No, Job_No_ID, year 
FROM Job_No 
WHERE (JN_Full_Form = (SELECT MAX(JN_Full_Form) AS Expr1 
         FROM Job_No AS Job_No_1)) 

現在你期望它總是返回一個或一個記錄。但是如果有兩個或更多記錄與JN_Full_Form相同,它們相當於MAX(JN_Full_Form)

因此,這絕對精品改變日if

if(result == 0) 
{ 
    //... 
} 
else 
{ 
    //... 
} 

另一種方法是更改​​查詢本身在最大選擇一條記錄(假設SQL服務器):

SELECT TOP 1 JN_Full_Form, Job_No, Job_No_ID, year 
FROM Job_No 
WHERE (JN_Full_Form = (SELECT MAX(JN_Full_Form) AS Expr1 
         FROM Job_No AS Job_No_1)) 
+0

謝謝,實際上,我照顧它,發現有兩個記錄具有相同的JN_Full_Form。感謝您的評論並感謝您的解釋 – OJazem