2012-06-07 7 views
6

के साथ डेटाटेबल चयन कथन मैं उस तारीख को प्राप्त करने के लिए एक डेटाटेबल पर एक चयन कथन बनाने की कोशिश कर रहा हूं जो कि मैं जिस दिनांक सीमा के लिए देख रहा हूं। मैं इसके लिए नया हूं, मैं समझ नहीं पा रहा हूं कि यह चयन कथन कैसे काम करता है। मैंने इसे लिखने की कोशिश की लेकिन काम नहीं कर रहा है। क्या आप कृपया मुझे यहां एक हाथ दे सकते हैं। मैं # साथ अपनी तिथियाँ लपेटकर इसके अलावासी # दिनांक

foundRows = dt.Select("DATE1 <= '" + date1+ "' AND DATE2 >= '" + date1+ '"'); 

उत्तर

7

अटक कर रहा हूँ, अगर DATE1 दिनांक समय और नहीं एक स्ट्रिंग है, तो आप ToString (आपकी दिनांक प्रारूप) का उपयोग करने के लिए सही एसक्यूएल बयान प्राप्त करने की आवश्यकता। डिबगिंग के लिए यह आसान बनाता है अगर आप अपने फ़िल्टर वाले स्ट्रिंग को बनाते हैं, तो उस स्ट्रिंग का उपयोग करके चयन करें। फिर आप स्ट्रिंग को देख सकते हैं और क्वेरी बिल्डर में अपने एसक्यूएल को सत्यापित करने के लिए उपयोग कर सकते हैं।

+0

ठीक है, मुझे मिल गया। स्ट्रिंग परीक्षण = date1.ToString ("एमएम/डीडी/yyyy"); डेटारो [] मिली पंक्तियां; foundRows = dt.Select ("DATE1 <= '#" + परीक्षण + "#' और DATE2> = '#" + परीक्षण + "#" "); दशमलव मान 1 = सिस्टम। कनवर्ट। टूडेसिमल (मिलीरो [0] [0]); –

+0

इस मामले में क्या होता है कि चयन में कोई भी शामिल नहीं है। पूर्व। तारीख सीमाओं के बाहर है? –

9

यह सर्वोत्तम इष्टतम खोज मानदंड मैंने परीक्षण किया है। आपको तिथियां हैं।

FROM_DATE = 2012/12/01 TO_DATE = 12/31/2012

और DataTable में आपका स्तंभ है जिस पर आप आवेदन कर। (मेरे कोड 'दिनांक' में)

आपका चयन वक्तव्य इस तरह होगा।

DataRow[] rows = newTable.Select("date >= #" + from_date + "# AND date <= #" + to_date + "#"); 
0

एसएसआईएस स्क्रिप्ट घटक के अंदर इसका उपयोग करना। मैंने अभी उपरोक्त उदाहरण का उपयोग किया जिसमें तिथियों के आसपास "#" शामिल था। इसके अलावा मैंने प्रत्येक को स्ट्रिंग में परिवर्तित कर दिया। यह पूरी तरह से काम किया।

बस अगर आप यह जानना चाहते हैं कि मैं इसे एसएसआईएस के अंदर कैसे स्थापित करता हूं: पहले रिकॉर्डसेट को संग्रहीत करने के लिए ऑब्जेक्ट वेरिएबल के साथ रिकॉर्डसेट गंतव्य का उपयोग करके डेटा प्रवाह होता था।

मेरी लिपि में मैंने चर को केवल पढ़ने के रूप में शामिल किया।

मुख्य वर्ग में ...

public class ScriptMain : UserComponent 
{ 

OleDbDataAdapter a = new OleDbDataAdapter(); 
System.Data.DataTable AwardedVacTable = new System.Data.DataTable(); 
... 
... 

तो पूर्व निष्पादित में ...

public override void PreExecute() 
{ 
    base.PreExecute(); 

    a.Fill(AwardedVacTable, Variables.rsAwardedVac); 
... 
... 
तो एक कस्टम विधि में

datatable पहुँचा ...

String dtFilter = "EmployeeID = " + empId.ToString() + " AND (#" + Convert.ToString(StartDate) "# <= EndDate AND #" + Convert.ToString(StartDate) + "# >= StartDate" + " OR #" + Convert.ToString(StartDate.AddDays((double)numDays)) + "# >= StartDate AND #" + Convert.ToString(StartDate.AddDays((double)numDays)) + "# <= EndDate)"; 

DataRow[] Overlaps = AwardedVacTable.Select(dtFilter); 
0

अभिव्यक्ति = "तिथि> # 2015-1-1 #"; डेटारो [] foundRows = table.Select (अभिव्यक्ति); 与 * टैबलेटनाम से चुनें * दिनांक> '2015-1-1'

संबंधित मुद्दे