मेरे पास सेक्स के क्षेत्र, पहला नाम, अंतिम नाम और फोन नंबर के साथ पहुंच (सरलीकृत) में एक टेबल है।
Sex First Last Phone
F Alice Smith
M Bob 111-111-1111
F Smithe 111-111-1112
M Charlie Smith
F Eve Drop 111-111-1113
मैंने मानदंडों का उपयोग करके रिकॉर्ड्स की खोज के लिए एक क्वेरी के साथ एक फॉर्म बनाया है
Is Null Or Like "*" & [Forms]![Search]![Criteria] & "*"
जहां खोज मेरे रूप का नाम है, और मानदंड मेरे रूप में व्यक्तिगत प्रविष्टियों का नाम है।
अभी, अगर मैं सेक्स एफ और आखिरी की तलाश करता हूंस्मिथ का नाम दें, और पहले और आखिरी नाम फ़ील्ड को खाली छोड़ दें, मैं "एलिस स्मिथ" और "स्मिथ" के रिकॉर्ड देखने में सक्षम होना चाहता हूं। लेकिन इसके बजाय, मुझे केवल "एलिस स्मिथ" का रिकॉर्ड मिलता है। इसके अलावा, अगर मैं सेक्स एफ और फोन नंबर 111 की खोज करता हूं, तो मुझे ऐलिस, स्मिथ और ईव के परिणाम मिलते हैं। इसी तरह, अगर मैं सिर्फ फोन नंबर अकेले खोजता हूं, तो मुझे सभी पांच रिकॉर्ड मिलेंगे।
मैं मान रहा हूं कि मैं यहां कुछ गलत कर रहा हूं,लेकिन मैं यह नहीं बता सकता कि यह क्या है। सशर्त तर्क के आधार पर या परिणाम नल या 111 (और अन्य क्षेत्रों के लिए समान) होना चाहिए, इसलिए मुझे लगता है कि यह अपेक्षित व्यवहार कर रहा है। मैंने हालांकि xor की कोशिश की है , और मुझे एक ही परिणाम मिलते हैं (और यदि यह काम करता है तो मैं जिस तरह से सोच रहा हूं, यह भी बुरा लगेगा क्योंकि रिक्त प्रविष्टि को "प्रत्येक प्रविष्टि की खोज" के बजाय शून्य के रूप में व्याख्या की जाएगी। मैंने आईआईएफ का उपयोग करने की कोशिश की है , जो ऐसा करने का सही तरीका होना चाहिए, लेकिन मानदंड क्षेत्र में रखा गया यह प्रतीत नहीं होता है। क्या मुझे यहां कुछ याद आ रही है?
उत्तर:
उत्तर № 1 के लिए 1Null
विशेष मूल्य है (अर्थ के साथ not-known
) और यह है नहीं ए के समान खाली पाठ फ़ील्ड, जिसका मूल्य है ""
(खाली स्ट्रिंग)।
तो मूल्य स्वीकार करने के लिए अपने मानदंडों को समायोजित करें ""
.
उत्तर № 2 के लिए 1
इस तरह के प्रत्येक क्षेत्र के लिए बहु-क्षेत्र खोज उपयोग मानदंडों के लिए:
WHERE
([Sex] Like "*" & [Forms]![Search]![CriteriaSex] & "*"
OR Nz([Forms]![Search]![CriteriaSex],"")="")
AND ([First] Like "*" & [Forms]![Search]![CriteriaFirst] & "*"
OR Nz([Forms]![Search]![CriteriaLast],"")="")
AND ([Last] Like "*" & [Forms]![Search]![CriteriaLast] & "*"
OR Nz([Forms]![Search]![CriteriaLast],"")="")
AND ([Phone] Like "*" & [Forms]![Search]![CriteriaPhone] & "*"
OR Nz([Forms]![Search]![CriteriaPhone],"")="")
यदि इस मामले में संबंधित मानदंड फ़ील्ड खाली है तो इस स्थिति में प्रत्येक शर्त सत्य होगी।
जवाब के लिए 0 № 3
इस क्वेरी को बनाने का एक और तरीका एक स्ट्रिंग बनाना होगा जिसके आधार पर फ़ील्ड आबादी वाले हैं।
q = "SELECT * FROM table "
w = ""
IF(nz([Forms]![Search]![Criteria1],"")<> "") THEN
w = "WHERE [table]![field] like "*" & [Forms]![Search]![Criteria1] & "*""
END IF
IF(nz([Forms]![Search]![Criteria2],"")<> "") THEN
IF (w="") THEN
w=" WHERE "
ELSE
w=w & " AND "
END
w = w & " [table]![field] like "*" & [Forms]![Search]![Criteria2] & "*""
END IF
IF(nz([Forms]![Search]![Criteria3],"")<> "") THEN
IF (w="") THEN
w=" WHERE "
ELSE
w=w & " AND "
END
w = w & " [table]![field] like "*" & [Forms]![Search]![Criteria3] & "*""
END IF
q = q & w