public override CResultAErreur ExecuterOperation(IDatabaseConnexion connection, IIndicateurProgression indicateur) { if (connection.GetDataBaseCreator().ChampExists(m_strNomTable, m_strNomChamp)) { return(connection.GetDataBaseCreator().DeleteChamp(m_strNomTable, m_strNomChamp)); } return(CResultAErreur.True); }
public override CResultAErreur ExecuterOperation(IDatabaseConnexion connection, IIndicateurProgression indicateur) { CResultAErreur result = CResultAErreur.True; IDataBaseCreator createur = connection.GetDataBaseCreator(); if (createur.TableExists(m_strNomTable)) { result = createur.DeleteTable(m_strNomTable); } return(result); }
public override CResultAErreur ExecuterOperation(IDatabaseConnexion connection, IIndicateurProgression indicateur) { IDataBaseCreator creator = connection.GetDataBaseCreator(); string strNomTable = DynamicClassAttribute.GetNomConvivial(m_type); if (!m_bSuppression) { #if PDA return(COracleTableCreator.CreationOuUpdateTableFromType(tp, m_nIdSession)); #else return(creator.CreationOuUpdateTableFromType(m_type, new ArrayList(m_strChampsAutorisesANull))); #endif } else { #if PDA return(CSQLCeTableCreator.SuppressionTable(strNomTable, m_nIdSession)); #else return(creator.DeleteTable(CStructureTable.GetStructure(m_type).NomTableInDb)); #endif } }
//-------------------------------------------------------------------------------------------------------------------- public override CResultAErreur ExecuterOperation(IDatabaseConnexion connection, IIndicateurProgression indicateur) { CResultAErreur result = CResultAErreur.True; IDataBaseCreator createur = connection.GetDataBaseCreator(); string strNomTableInContexte = CContexteDonnee.GetNomTableForType(m_type); string strNomTableInDb = CContexteDonnee.GetNomTableInDbForNomTable(strNomTableInContexte); createur.CreationOuUpdateTableFromType(m_type); string strChampIdObjet = m_strChampIdObjet; if (m_strChampIdObjet.StartsWith("#SQL#")) { strChampIdObjet = m_strChampIdObjet.Substring("#SQL#".Length); } CObjetServeur.ClearCacheSchemas(); if (createur.ChampExists(strNomTableInDb, strChampIdObjet) && createur.ChampExists(strNomTableInDb, m_strChampDbKey)) { using (CContexteDonnee ctx = new CContexteDonnee(connection.IdSession, true, false)) { C2iRequeteAvancee requete = new C2iRequeteAvancee(); requete.TableInterrogee = strNomTableInDb; CStructureTable structure = CStructureTable.GetStructure(m_type); /* * requete.ListeChamps.Add ( new C2iChampDeRequete ( * "ID", * new CSourceDeChampDeRequete(structure.ChampsId[0].NomChamp), * typeof(int), * OperationsAgregation.None, * true ));*/ requete.ListeChamps.Add(new C2iChampDeRequete( "IDOBJET", new CSourceDeChampDeRequete(m_strChampIdObjet), typeof(int), OperationsAgregation.None, true)); if (m_typeObjetFixe == null) { requete.ListeChamps.Add(new C2iChampDeRequete( "TYPEOBJET", new CSourceDeChampDeRequete(m_strChampTypeObjet), typeof(string), OperationsAgregation.None, true)); } result = requete.ExecuteRequete(connection.IdSession); if (!result) { return(result); } DataTable table = result.Data as DataTable; Dictionary <int, int?> dicIdToIdObjet = new Dictionary <int, int?>(); string strFieldIdObjetInTable = m_strChampIdObjet.Replace("#SQL#", ""); foreach (DataRow row in table.Rows) { object val = row["IDOBJET"]; int? nValId = val == DBNull.Value?null:(int?)val; if (nValId != null && nValId >= 0) { CDbKey key = null; Type tp = m_typeObjetFixe; if (tp == null)//Type non fixe { string strType = (string)row["TYPEOBJET"]; tp = CActivatorSurChaine.GetType(strType); } if (tp != null) { CObjetDonneeAIdNumerique objPointe = (CObjetDonneeAIdNumerique)Activator.CreateInstance(tp, ctx); if (objPointe.ReadIfExists(nValId.Value)) { key = objPointe.DbKey; } } if (key != null) { string strRequete = "Update " + strNomTableInDb + " set " + m_strChampDbKey + "=" + connection.GetStringForRequete(key.StringValue) + " where " + strFieldIdObjetInTable + "=" + nValId.Value; if (m_typeObjetFixe == null) { strRequete += " and " + m_strChampTypeObjet + "='" + row["TYPEOBJET"].ToString() + "'"; } connection.RunStatement(strRequete); } } } } //Supprime le champ createur.DeleteChamp(strNomTableInDb, strChampIdObjet); } return(result); }
public override CResultAErreur ExecuterOperation(IDatabaseConnexion connection, IIndicateurProgression indicateur) { return(Delegue(connection.GetDataBaseCreator())); }
//--------------------------------------------------------------------------- public CResultAErreur UpdateStructureBase(IIndicateurProgression indicateurProgress) { CResultAErreur result = CResultAErreur.True; m_indicateurProgress = indicateurProgress; int nVersionDB = (int)new CDatabaseRegistre(Connection).GetValeurLong(c_strCleVersionBDD, -1); int nVersionFinale = m_structureDB.GetLastVersion(); int nOldVersion = nVersionDB; if (nVersionDB < 0) { result = InitialisationBase(); } if (m_bForceMAJ) { nVersionDB = nVersionDB > 0 ? nVersionDB - 1 : 0; } if (nVersionDB < 0) { nVersionDB = 0; } if (m_indicateurProgress != null) { m_indicateurProgress.PushLibelle(I.T("Database Update|30005")); m_indicateurProgress.SetBornesSegment(nVersionDB, nVersionFinale); //m_indicateurProgress.PushSegment(nVersionDB, nVersionFinale); } result = m_connexion.GetDataBaseCreator().UpdateStructureTableRegistre(); while (nVersionDB < nVersionFinale && result) { nVersionDB++; result = m_connexion.BeginTrans(); if (!result) { return(result); } if (m_indicateurProgress != null) { m_indicateurProgress.SetInfo("Version " + nVersionDB.ToString()); m_indicateurProgress.SetValue(nVersionDB - 1); m_indicateurProgress.PushLibelle("DataBase v" + nVersionDB.ToString()); m_indicateurProgress.PushSegment(nVersionDB - 1, nVersionDB); } result = UpdateToVersion(nVersionDB); //Validation ou annulation des modifications si erreur if (!result) { m_connexion.RollbackTrans(); result.EmpileErreur(I.T("Database Update Error|30006")); throw new CExceptionErreur(result.Erreur); } else { result = m_connexion.CommitTrans(); } if (m_indicateurProgress != null) { m_indicateurProgress.PopSegment(); m_indicateurProgress.PopLibelle(); } } /*if (m_indicateurProgress != null) * m_indicateurProgress.PopSegment();*/ //rafraichit les caches de schéma CObjetServeur.ClearCacheSchemas(); C2iOracleDataAdapter.ClearCacheSchemas(); CStructureTable.ClearCache(); return(result); }