2012-05-11 12 views
5

मेरे पास डेटासेट में तीन नेस्टेड टेबल हैं। मैं भाषा आईडी के आधार पर डेटा प्रदर्शित करता हूं, यानी: एन 1 एफआर 2 है और एनएल 3 है। डेटाबेस में अंग्रेजी और अंग्रेजी मौजूद है लेकिन डच अभी तक मौजूद नहीं है और जब उपयोगकर्ता एनएल का चयन करता है तो मुझे निम्न त्रुटि मिलती है:यह बाधा सक्षम नहीं की जा सकती है क्योंकि सभी मानों के अनुरूप मूल मान

This constraint cannot be enabled as not all values have corresponding parent values.

नीचे कोड है जो मैं डेटा प्राप्त करने के लिए उपयोग करता हूं। त्रुटि तब होती है जब मैं डेटासेट में संबंध बनाने का प्रयास करता हूं।

(ds.Relations.Add(new DataRelation("Cat_SubCat", dk1, dk2)); 

अब मेरे सवाल का, मैं कैसे जांच कर सकते हैं है, तो मूल्य डाटासेट या नीचे दिए गए कोड के साथ डेटाबेस में मौजूद है?

public static DataTable GetData(Int32 languageID) 
    { 
     DataSet ds = new DataSet(); 

     string commandText = @"SELECT * FROM AlacarteCat where languageID = @ID; 
           SELECT * FROM AlacarteSubCat where languageID = @ID; 
           SELECT * from AlacarteItems where languageID = @ID"; 

     using (SqlConnection myConnection = new SqlConnection(Common.GetConnectionString("SQLConnectionString"))) 
     { 
      SqlCommand command = new SqlCommand(commandText, myConnection); 
      command.Parameters.Add("@ID", SqlDbType.Int); 
      command.Parameters["@ID"].Value = languageID; 

      SqlDataAdapter da = new SqlDataAdapter(); 
      da.SelectCommand = command; 
      da.TableMappings.Add("AlacarteCat", "AlacarteCat"); // table 0 
      da.TableMappings.Add("AlacarteSubCat", "AlacarteSubCat"); // table 1 
      da.TableMappings.Add("AlacarteItems", "AlacarteItems"); // table 2 
      da.Fill(ds, "AlacarteCat"); 

      DataColumn dk1 = ds.Tables[0].Columns["ID"]; 
      DataColumn dk2 = ds.Tables[1].Columns["AlacarteCatID"]; 
      DataColumn dk3 = ds.Tables[1].Columns["ID"]; 
      DataColumn dk4 = ds.Tables[2].Columns["AlacarteSubCatID"]; 
      DataColumn dk5 = ds.Tables[0].Columns["id"]; 
      DataColumn dk6 = ds.Tables[2].Columns["AlacarteCatID"]; 
      ds.Relations.Add(new DataRelation("Cat_SubCat", dk1, dk2)); 
      ds.Relations.Add(new DataRelation("SubCat_Items", dk3, dk4)); 
      ds.Relations.Add(new DataRelation("Cat_Items", dk5, dk6)); 

      if ((ds != null)) 
      { 
       return ds.Tables["AlacarteCat"]; 
      } 
      return null; 
     } 

    } 

उत्तर

4

डिफ़ॉल्ट रूप से, जब आप एक रिश्ते बनाते हैं तो वह विदेशी कुंजी की कमी को लागू करता है, गलत पर सेट करके, आप इसे कह रहे हैं कि आप रिश्ते लागू करना चाहते हैं न।

ds1.DataRelation.Add(“relCustOrder”, parentCol, childCol, false)

समाधान झूठी

0

को DataRelation कक्षा में बाधा स्थापित करने के लिए का चयन करें बयान में सबक्वेरी का उपयोग संबंधित पंक्तियों को नियंत्रित करने के लिए है। यह गोन्ना काम है।

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

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