public static object GetValeur( DataRow row, string strChampString, string strChampBlob, string strChampType, CContexteDonnee ctx) { Type t = CActivatorSurChaine.GetType((string)row[strChampType]); if (t == typeof(IDifferencesBlob)) { CDonneeBinaireInRow blob = GetBlob(row, strChampBlob, ctx); MemoryStream stream = new MemoryStream(blob.Donnees); BinaryReader reader = new BinaryReader(stream); CSerializerReadBinaire serializer = new CSerializerReadBinaire(reader); I2iSerializable objet = null; CResultAErreur result = serializer.TraiteObject(ref objet); reader.Close(); stream.Close(); if (result) { return(objet); } System.Console.WriteLine(I.T("Error while deserializing blob diffs|30000")); return(null); } else if (t == typeof(byte[])) { CDonneeBinaireInRow blob = GetBlob(row, strChampBlob, ctx); if (blob != null) { return(blob.Donnees); } else { return(null); } } else if (typeof(CObjetDonneeAIdNumerique).IsAssignableFrom(t)) { int nId = Int32.Parse((string)row[strChampString]); CObjetDonneeAIdNumerique obj = (CObjetDonneeAIdNumerique)Activator.CreateInstance(t, new object[] { ctx }); if (obj.ReadIfExists(nId)) { return(obj); } return(null); } else if (t != null && row[strChampString] != DBNull.Value) { return(CUtilTexte.FromUniversalString((string)row[strChampString], t)); } return(null); }
public void Init(CControlListeOperationsSurCAVO.CValeurCAVOO valeurCAVOO) { m_origine = valeurCAVOO.Origine; m_strLigneCible = valeurCAVOO.CAVOO.ValChampCibleString; m_strLigneOrigine = valeurCAVOO.CAVOO.ValChampSourceString; byte[] byteOfTb = null; if (valeurCAVOO.CAVOO.ValChampCibleBlob.Donnees != null && valeurCAVOO.CAVOO.ValChampCibleBlob.Donnees.Length > 0) { byteOfTb = valeurCAVOO.CAVOO.ValChampCibleBlob.Donnees; } else { byteOfTb = valeurCAVOO.CAVOO.ValChampSourceBlob.Donnees; } m_dt = CUtilADataTable.UnserializeDataTable(byteOfTb); string strLigneConcernee = m_origine == EOrigineVersion.Cible ? m_strLigneCible: m_strLigneOrigine; bool bNull = strLigneConcernee == "@NULL"; if (bNull) { m_dgv.DataSource = null; m_dgv.ContextMenuStrip = null; return; } string[] datas = null; if (!bNull) { datas = strLigneConcernee.Split('|'); } DataRow dr = m_dt.NewRow(); int nCpt = 0; foreach (DataColumn dc in m_dt.Columns) { if (nCpt >= datas.Length) { break; } if (dc.ColumnName == "ID") { dr[dc] = 0; continue; } if (!bNull) { if (datas[nCpt] == "@NULL") { dr[dc] = DBNull.Value; } else { if (dc.DataType == typeof(DateTime)) { dr[dc] = (DateTime)CUtilTexte.FromUniversalString((string)datas[nCpt], typeof(DateTime)); } else if (dc.DataType == typeof(int)) { dr[dc] = (int)CUtilTexte.FromUniversalString((string)datas[nCpt], typeof(int)); } else if (dc.DataType == typeof(bool)) { dr[dc] = (bool)CUtilTexte.FromUniversalString((string)datas[nCpt], typeof(bool)); } else if (dc.DataType == typeof(double)) { dr[dc] = (double)CUtilTexte.FromUniversalString((string)datas[nCpt], typeof(double)); } else { dr[dc] = datas[nCpt]; } } } else { dc.AllowDBNull = true; dr[dc] = DBNull.Value; } nCpt++; } m_dt.Rows.Add(dr); m_dgv.DataSource = m_dt; m_dgv.Columns[0].Visible = false; m_dgv.CellFormatting += new DataGridViewCellFormattingEventHandler(m_dgv_CellFormatting); m_dgv.ColumnWidthChanged += new DataGridViewColumnEventHandler(m_dgv_ColumnWidthChanged); m_dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; m_dgv.AllowUserToAddRows = false; m_dgv.ColumnHeadersVisible = false; m_dgv.RowHeadersVisible = true; m_dgv.RowHeadersWidth = 10; m_dgv.ReadOnly = true; ActualiserTextMenu(); //m_dgv.ColumnHeadersVisible = false; //if (diffTable.CreationTable) //{ //} //else if (diffTable.ChangementStructureTable) //{ //} //else if (diffTable.ChangementClePrimaire) //{ //} //else //{ // //Récupération de la ligne concernée //} }
//----------------------------------------------------------- public static CResultAErreur RunProcess(int nIdProcess, Dictionary <string, string> valeursParametres) { AssureTimerNettoyage(); CResultAErreur result = GetSession(); if (!result) { return(result); } CDonneeSessionProcess donneeSession = result.Data as CDonneeSessionProcess; result = CResultAErreur.True; try { CSessionClient session = donneeSession.SessionClient; using (CContexteDonnee contexte = new CContexteDonnee(session.IdSession, true, false)) { CProcessInDb processInDb = new CProcessInDb(contexte); if (!processInDb.ReadIfExists(nIdProcess)) { result.EmpileErreur(I.T("The process @1 doesn't exist|30008", nIdProcess.ToString())); result.Data = (int)EErreurs.ProcessDoesntExists; return(result); } CProcess process = processInDb.Process; foreach (KeyValuePair <string, string> parametre in valeursParametres) { string strParametre = parametre.Key; string strValeur = parametre.Value; bool bTrouvee = false; foreach (IVariableDynamique variable in process.ListeVariables) { if (strParametre.ToUpper() == variable.Nom.ToUpper()) { if (!variable.TypeDonnee.TypeDotNetNatif.IsValueType && variable.TypeDonnee.TypeDotNetNatif != typeof(string)) { result.EmpileErreur(I.T("Variable @1 cannot be set by TimosProcess. Only simple values can be used|30009", variable.Nom)); result.Data = (int)EErreurs.InvalidVariableValueOnlySimpleValuesAreAccepted; return(result); } try { object valeur = CUtilTexte.FromUniversalString(strValeur, variable.TypeDonnee.TypeDotNetNatif); } catch { } process.SetValeurChamp(variable.IdVariable, strValeur); bTrouvee = true; break; } } if (!bTrouvee) { result = ShowHelp(process); result.EmpileErreur(I.T("Unknown variable @1|30010", strParametre)); result.Data = (int)EErreurs.UnknownVariable; return(result); } } result = CProcessEnExecutionInDb.StartProcess(process, new CInfoDeclencheurProcess(TypeEvenement.Manuel), session.IdSession, null, null); if (!result) { result.Data = (int)EErreurs.ErrorWhileRunningProcess; return(result); } if (result.Data != null) { try { result.Data = Convert.ToInt32(result.Data); } catch { } return(result); } else { result.Data = 0; } } } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); result.Data = (int)EErreurs.ErrorWhileRunningProcess; return(result); } finally { lock (typeof(CLanceurProcessCommandLine)) { donneeSession.EndUsing(); } } return(result); }