Пример #1
0
        /// <summary>
        /// Metoda de instanta ce permite recuperarea unei liste de String (camp = valoare) cu toate campurile modificate din DataRow
        /// </summary>
        /// <param name="ActionToDoAfter">Precizam daca vrem sa reinitializam campurile modificate cu valorile initiale dupa ce am recuperat modificarile</param>
        /// <param name="listChampOut">Lista de campuri care nu ne intereseaza</param>
        /// <returns></returns>
        protected string GetMyDataRowChanges(EnumActionOnChanges ActionToDoAfter, List <string> listChampOut)
        {
            if (this.IsMyDataRowHasChanged())
            {
                //on construit la chaine de modification
                System.Text.StringBuilder        strSqlModification = new System.Text.StringBuilder();
                System.Data.DataColumnCollection colonnes;

                //Recuperam coloanete prin clonarea tabelei obiectului.
                colonnes = this.lDataRowCorespunzator.Table.Clone().Columns;

                //Eliminam coloanele care nu ne intereseaza
                foreach (String champToRemove in listChampOut)
                {
                    colonnes.Remove(lAliasTabela + champToRemove);
                }

                foreach (System.Data.DataColumn dtCol in colonnes)
                {
                    if (string.Compare(this.lDataRowCorespunzator[dtCol.ColumnName, System.Data.DataRowVersion.Original].ToString(), this.lDataRowCorespunzator[dtCol.ColumnName].ToString(), false) != 0)
                    {
                        if (string.IsNullOrEmpty(lAliasTabela))
                        {
                            strSqlModification.Append(dtCol.ColumnName);
                        }
                        else
                        {
                            strSqlModification.Append(dtCol.ColumnName.Substring(lAliasTabela.Length));
                        }

                        strSqlModification.Append(" = ");
                        string sTypeDate = dtCol.DataType.Name;

                        if (sTypeDate == "Int32" || sTypeDate == "Int16")
                        {
                            if (this.lDataRowCorespunzator.IsNull(dtCol.ColumnName))
                            {
                                strSqlModification.Append("NULL");
                            }
                            else
                            {
                                strSqlModification.Append(this.lDataRowCorespunzator[dtCol.ColumnName].ToString());
                            }
                        }
                        else
                        {
                            if (sTypeDate == "Double" || sTypeDate == "Single")
                            {
                                strSqlModification.Append(Double.Parse(this.lDataRowCorespunzator[dtCol.ColumnName].ToString()));
                            }
                            else
                            {
                                if (sTypeDate == "Decimal")
                                {
                                    strSqlModification.Append(Decimal.Parse(this.lDataRowCorespunzator[dtCol.ColumnName].ToString()));
                                }
                                else
                                {
                                    if (sTypeDate == "String")
                                    {
                                        strSqlModification.Append(this.lDataRowCorespunzator[dtCol.ColumnName].ToString());
                                    }
                                    else
                                    {
                                        if (sTypeDate == "DateTime")
                                        {
                                            if (this.lDataRowCorespunzator.IsNull(dtCol.ColumnName))
                                            {
                                                strSqlModification.Append("NULL");
                                            }
                                            else
                                            {
                                                strSqlModification.Append(DateTime.Parse(this.lDataRowCorespunzator[dtCol.ColumnName].ToString()));
                                            }
                                        }
                                        else
                                        {
                                            if (sTypeDate == "Boolean")
                                            {
                                                strSqlModification.Append(this.lDataRowCorespunzator[dtCol.ColumnName].ToString());
                                            }
                                            else
                                            {
                                                strSqlModification.Append(this.lDataRowCorespunzator[dtCol.ColumnName].ToString());
                                            }
                                        }
                                    }
                                }
                            }
                        }

                        strSqlModification.Append(", ");
                    }
                }
                //stergem ultima virgula
                if (strSqlModification.Length > 2)
                {
                    strSqlModification.Remove(strSqlModification.Length - 2, 2);
                }

                //daca asa este specificat in parametru, acceptam modificarile
                if (ActionToDoAfter == EnumActionOnChanges.ResumeChanges)
                {
                    this.ResumeMyDataRowChanges();
                }
                return(strSqlModification.ToString());
            }
            else
            {
                return("");
            }
        }
Пример #2
0
        /// <summary>
        /// Metoda de instanta ce permite recuperarea unei liste de String (camp = valoare) cu toate campurile modificate din DataRow
        /// </summary>
        /// <param name="ActionToDoAfter">Precizam daca vrem sa reinitializam campurile modificate cu valorile initiale dupa ce am recuperat modificarile</param>
        /// <returns></returns>
        protected string GetMyDataRowChanges(EnumActionOnChanges ActionToDoAfter)
        {
            List <string> lstchampout = new List <string>();

            return(this.GetMyDataRowChanges(ActionToDoAfter, lstchampout));
        }