none
une requête qui butte sur une contrainte RRS feed

  • Question

  • bonjour

    J'ai une requête qui butte sur une contrainte. Je vous met  le code:

    if( dwNbResultFound == 0)
          {
    //    	   [Insert into the table T_LEMMA with "nuIdLemma"="hidNewLemmaID",
    //    	   ("vcString" = "wsLemma", "cExcluded" ="bExcluded", "siIdPOS" = "POS", "siIdGender" ="Gender") of current item of "ListAnalysedWord",
    //         "siIdLang"="Language"]
    		    int TypeDoc = enDocumentType;
    			std::wstring wsTemp = L"'" + ShapeWString(wsLemma) + L"'";
    			int iPOS = pLemma->POS;
    			int Gen = pLemma->iGender;
    			int Lang = Language;
    			System::String^ Lemma = gcnew System::String( wsTemp.c_str());
    			SqlCommand ^ cmdDatabase = gcnew SqlCommand(L"INSERT INTO T_LEMMA ( vcString, siIdPOS, cExcluded , siIdGender, siIdTypD, siIdD, siIdLang) VALUES ( @Text, @POS, @ValWord, @Gender, @TypeDoc, @idDoc, @Lang);", CInterbaseManagerM::myConnexion);
    			cmdDatabase->Parameters->Add(L"@Text", SqlDbType::VarChar);
    			cmdDatabase->Parameters["@Text"]->Value = Lemma;
    			cmdDatabase->Parameters->Add(L"@POS", SqlDbType::Int);
    			cmdDatabase->Parameters["@POS"]->Value = iPOS;
    			cmdDatabase->Parameters->Add(L"@ValWord", SqlDbType::Int);
    			cmdDatabase->Parameters["@ValWord"]->Value = pLemma->iExcluded;
    			cmdDatabase->Parameters->Add(L"@Gender", SqlDbType::Int);
    			cmdDatabase->Parameters["@Gender"]->Value = Gen;
    			cmdDatabase->Parameters->Add(L"@TypeDoc", SqlDbType::Int);
    			cmdDatabase->Parameters["@TypeDoc"]->Value = TypeDoc;
    			cmdDatabase->Parameters->Add(L"@idDoc", SqlDbType::Int);
    			cmdDatabase->Parameters["@idDoc"]->Value = iIdDoc;
    			cmdDatabase->Parameters->Add(L"@Lang", SqlDbType::Int);
    			cmdDatabase->Parameters["@Lang"]->Value = Lang;
    			CInterbaseManagerM::StartTransaction( cmdDatabase);
    			CInterbaseManagerM::ExecuteRequest( cmdDatabase, &dwNbResultFound);
    //	   [Update "ullLemmaID" of the current item of "ListAnalysedWord" with "hidNewLemmaID"]
                CInterbaseManagerM::CommitTransaction();
          }

    il y a une exception qui est levée:

    Une exception de première chance de type 'System.Data.SqlClient.SqlException' s'est produite dans System.Data.dll
    avec le commentaire suivant:
    chars = 0x0C6B7BA8 "L'instruction INSnERT est en conflit avec la contrainte FOREIGN KEY "T_POS_FK1". Le conflit s'est produit dans la base de données "COHERENCE", table "dbo.T_POS", column 'siIdPOS'.
    L'instruction a été arrêtée."

    je ne comprend pas pourquoi?


    Jean Noël Martin

    mardi 15 juillet 2014 20:41

Réponses