Esempio n. 1
0
 public static void SetDoubleRecord(SqlDataReader dr, string columnName, SqlDataRecord record, int ordinal)
 {
     if (dr[columnName] == DBNull.Value)
         record.SetDBNull(ordinal);
     else
         record.SetDouble(ordinal, Convert.ToDouble(dr[columnName]));
 }
 public static void IR_SM_PriceList_PerType()
 {
     using (SqlConnection con = new SqlConnection("context connection=true"))
     {
         SqlPipe pipe = SqlContext.Pipe;
         List<SqlCommand> commands = new List<SqlCommand>();
         try
         {
             commands.Add(new SqlCommand("SELECT DISTINCT IR_PriceList.PRICE, IR_PriceList.YEAR AS YearT, IR_PriceList.MONTH AS MonthT, IR_PriceList.SAPRODUCTCODE, IR_PriceList.PRICETYPE FROM IR_PriceList"));
             SqlDataRecord record = new SqlDataRecord(new SqlMetaData("PRICE", SqlDbType.Float),
             new SqlMetaData("MonthT", SqlDbType.Int),
             new SqlMetaData("YearT", SqlDbType.Int),
             new SqlMetaData("SAPRODUCTCODE", SqlDbType.NVarChar, 20),
             new SqlMetaData("PRICETYPE", SqlDbType.NVarChar, 20));
             pipe.SendResultsStart(record);
             foreach (SqlCommand cmd in commands)
             {
                 try
                 {
                     cmd.Connection = con;
                     con.Open();
                     SqlDataReader dr = cmd.ExecuteReader();
                     while (dr.Read())
                     {
                         double price = Convert.ToDouble(dr["PRICE"]);
                         int month = Convert.ToInt32(dr["montht"]);
                         int year = Convert.ToInt32(dr["yeart"]);
                         string saproductcode = Convert.ToString(dr["SAPRODUCTCODE"]);
                         string thePriceType = Convert.ToString(dr["PRICETYPE"]);
                         record.SetDouble(0, price);
                         record.SetInt32(1, month);
                         record.SetInt32(2, year);
                         record.SetString(3, saproductcode);
                         record.SetString(4, thePriceType);
                         pipe.SendResultsRow(record);
                     }
                 }
                 catch (Exception ex)
                 {
                     throw ex;
                 }
                 finally
                 {
                     if (con != null)
                         con.Close();
                 }
             }
             pipe.SendResultsEnd();
         }
         catch (Exception ex)
         {
             throw ex;
         }
     }
 }
        private static SqlDataRecord CreateFractalRecord(double? value)
        {
            var record = new SqlDataRecord(new SqlMetaData("Value", SqlDbType.Float));

            if (value.HasValue)
                record.SetDouble(0, value.Value);
            else
                record.SetDBNull(0);

            return record;
        }
Esempio n. 4
0
    public static void IR_SM_Pos_Objective(string brandCodes, int startMonth, int startYear, int endMonth, int endYear, string dsIds)
    {
        using (SqlConnection con = new SqlConnection("context connection=true"))
        {
            SqlPipe pipe = SqlContext.Pipe;
            List<SqlCommand> commands = new List<SqlCommand>();
            try
            {
                SqlInt32 smallyear = (startYear < endYear) ? startYear : endYear;
                SqlInt32 bigyear = (startYear > endYear) ? startYear : endYear;

                List<string> brdcods = new List<string>();
                string[] split = brandCodes.Split('-');
                foreach (string s in split)
                    if (s.ToLower().Trim() != "")
                        brdcods.Add(s.Trim().ToLower());

                List<string> dsids = new List<string>();
                string[] split2 = dsIds.Split('-');
                foreach (string s in split2)
                    if (s.ToLower().Trim() != "")
                        dsids.Add(s.Trim().ToLower());

                for (int year = (int)smallyear; year <= bigyear; year++)
                {
                    foreach (string brandCode in brdcods)
                    {
                        foreach (string dsid in dsids)
                        {
                            commands.Add(new SqlCommand("SELECT [Counter], [Year], [Month], [DSID], [BudgetValue], [Brandcode] FROM [IR_POS_OBJ] where DSID = @dsid AND (BRANDCODE LIKE '%' + @brandcode + '%') AND ([YEAR] = @year) AND ([MONTH] BETWEEN @startmonth AND @endmonth)"));
                            commands[commands.Count - 1].Parameters.AddWithValue("@brandcode", brandCode);
                            commands[commands.Count - 1].Parameters.AddWithValue("@startmonth", (year == smallyear) ? startMonth : 1);
                            commands[commands.Count - 1].Parameters.AddWithValue("@endmonth", (year == bigyear) ? endMonth : 12);
                            commands[commands.Count - 1].Parameters.AddWithValue("@year", year);
                            commands[commands.Count - 1].Parameters.AddWithValue("@dsid", dsid);
                        }
                    }
                }

                SqlDataRecord record = new SqlDataRecord(new SqlMetaData("ID", SqlDbType.Int),
                                       new SqlMetaData("DSID", SqlDbType.Int),
                                       new SqlMetaData("MonthT", SqlDbType.Int),
                                       new SqlMetaData("YearT", SqlDbType.Int),
                                       new SqlMetaData("VAL", SqlDbType.Float),
                                       new SqlMetaData("BrandCode", SqlDbType.NVarChar, 255));

                pipe.SendResultsStart(record);
                int idCounter = 1;
                foreach (SqlCommand cmd in commands)
                {
                    try
                    {
                        cmd.Connection = con;
                        con.Open();

                        SqlDataReader dr = cmd.ExecuteReader();
                        while (dr.Read())
                        {
                            
                            int dsid = Convert.ToInt32(dr["DSID"]);
                            int month = Convert.ToInt32(dr["month"]);
                            int year = Convert.ToInt32(dr["year"]);
                            double val = Convert.ToDouble(((dr["BudgetValue"] == DBNull.Value) ? 0 : dr["BudgetValue"]));
                            string brandcode = Convert.ToString(dr["Brandcode"]);
                            record.SetInt32(0, idCounter);
                            record.SetInt32(1, dsid);
                            record.SetInt32(2, month);
                            record.SetInt32(3, year);
                            record.SetDouble(4, val);
                            record.SetString(5, brandcode);
                            pipe.SendResultsRow(record);
                            idCounter++;
                        }
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                    finally
                    {
                        if (con != null)
                            con.Close();
                    }
                }
                pipe.SendResultsEnd();

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
    public static void IR_SM_TotalSalesIn_PerMonth(string brandCodes, int startMonth, int startYear, int endMonth, int endYear)
    {
        using (SqlConnection con = new SqlConnection("context connection=true"))
        {
            SqlPipe pipe = SqlContext.Pipe;
            List<SqlCommand> commands = new List<SqlCommand>();
            try
            {
                SqlInt32 smallyear = (startYear < endYear) ? startYear : endYear;
                SqlInt32 bigyear = (startYear > endYear) ? startYear : endYear;

                List<string> brdcods = new List<string>();
                string[] split = brandCodes.Split('-');
                foreach (string s in split)
                {
                    if (s.ToLower().Trim() != "")
                        brdcods.Add(s.Trim().ToLower());
                }


                for (int year = (int)smallyear; year <= bigyear; year++)
                {
                    foreach (string brandCode in brdcods)
                    {
                        commands.Add(new SqlCommand("SELECT [MONTH] AS MonthT, [YEAR] AS YearT, [SalesIN_ACT] AS VAL FROM [IR_SalesIN_Brand] WHERE (BRANDCODE LIKE '%' + @brandcode + '%') AND ([YEAR] = @year) AND ([MONTH] BETWEEN @startmonth AND @endmonth) "));
                        commands[commands.Count - 1].Parameters.AddWithValue("@brandcode", brandCode);
                        commands[commands.Count - 1].Parameters.AddWithValue("@startmonth", (year == smallyear) ? startMonth : 1);
                        commands[commands.Count - 1].Parameters.AddWithValue("@endmonth", (year == bigyear) ? endMonth : 12);
                        commands[commands.Count - 1].Parameters.AddWithValue("@year", year);
                    }
                }

                SqlDataRecord record = new SqlDataRecord(new SqlMetaData("MonthT", SqlDbType.Int),
                new SqlMetaData("YearT", SqlDbType.Int),
                new SqlMetaData("VAL", SqlDbType.Float));

                pipe.SendResultsStart(record);

                foreach (SqlCommand cmd in commands)
                {
                    try
                    {
                        cmd.Connection = con;
                        con.Open();

                        SqlDataReader dr = cmd.ExecuteReader();
                        while (dr.Read())
                        {
                            int month = Convert.ToInt32(dr["montht"]);
                            int year = Convert.ToInt32(dr["yeart"]);
                            double val = Convert.ToDouble(((dr["val"] == DBNull.Value) ? 0 : dr["val"]));

                            record.SetInt32(0, month);
                            record.SetInt32(1, year);
                            record.SetDouble(2, val);
                            pipe.SendResultsRow(record);
                        }
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                    finally
                    {
                        if (con != null)
                            con.Close();
                    }
                }
                pipe.SendResultsEnd();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

    }
Esempio n. 6
0
 public void SetValue(ref SqlDataRecord sqlDataRecord, SqlDescriptionAttribute sqlDescription, object value,
                      int ordinal)
 {
     if (!sqlDescription.HasDbType)
     {
         throw new InvalidDataException("SqlDbType can not be null");
     }
     if (value == null)
     {
         sqlDataRecord.SetDBNull(ordinal);
         return;
     }
     switch (sqlDescription.SqlDbType)
     {
         case SqlDbType.BigInt:
             var ll = value as long?;
             if (!ll.HasValue)
             {
                 throw new Exception("Value is not BigInt");
             }
             sqlDataRecord.SetInt64(ordinal, ll.Value);
             break;
         case SqlDbType.Binary:
             var bb = value as byte?;
             if (!bb.HasValue)
             {
                 throw new Exception("Value is not BigInt");
             }
             sqlDataRecord.SetSqlByte(ordinal, bb.Value);
             break;
         case SqlDbType.Bit:
             var bit = value as bool?;
             if (!bit.HasValue)
             {
                 throw new Exception("Value is not Bit");
             }
             sqlDataRecord.SetBoolean(ordinal, bit.Value);
             break;
         case SqlDbType.NChar:
         case SqlDbType.Char:
             var chr = value as char?;
             if (!chr.HasValue)
             {
                 throw new Exception("Value is not Char");
             }
             sqlDataRecord.SetChar(ordinal, chr.Value);
             break;
         case SqlDbType.DateTime:
         case SqlDbType.SmallDateTime:
         case SqlDbType.Date:
         case SqlDbType.DateTime2:
             var dt = value as DateTime?;
             if (!dt.HasValue)
             {
                 throw new Exception("Value is not DateTime");
             }
             sqlDataRecord.SetDateTime(ordinal, dt.Value);
             break;
         case SqlDbType.Decimal:
         case SqlDbType.Money:
         case SqlDbType.SmallMoney:
             var dc = value as decimal?;
             if (!dc.HasValue)
             {
                 throw new Exception("Value is not Decimal");
             }
             sqlDataRecord.SetDecimal(ordinal, dc.Value);
             break;
         case SqlDbType.Float:
             var d = value as double?;
             if (!d.HasValue)
             {
                 throw new Exception("Value is not Double");
             }
             sqlDataRecord.SetDouble(ordinal, d.Value);
             break;
         case SqlDbType.Image:
         case SqlDbType.VarBinary:
             var bytes = value as byte[];
             if (bytes == null)
             {
                 throw new Exception("Value is not byte array");
             }
             sqlDataRecord.SetBytes(ordinal, 0, bytes, 0, bytes.Length);
             break;
         case SqlDbType.Int:
             var integer = value as int?;
             if (integer == null)
             {
                 var ushortValue = (value as ushort?);
                 if (ushortValue == null)
                 {
                     throw new Exception("Value is not int or ushort");
                 }
                 integer = ushortValue.Value;
             }
             sqlDataRecord.SetInt32(ordinal, integer.Value);
             break;
         case SqlDbType.NText:
         case SqlDbType.NVarChar:
         case SqlDbType.VarChar:
         case SqlDbType.Text:
         case SqlDbType.Xml:
             var str = value as string;
             if (str == null)
             {
                 var chars = value as char[];
                 if (chars == null)
                 {
                     throw new Exception("Value is not string or char array");
                 }
                 str = new string(chars);
             }
             sqlDataRecord.SetString(ordinal, str);
             break;
         case SqlDbType.Real:
             var f = value as float?;
             if (f == null)
             {
                 throw new Exception("Value is not float");
             }
             sqlDataRecord.SetFloat(ordinal, f.Value);
             break;
         case SqlDbType.UniqueIdentifier:
             var guid = value as Guid?;
             if (guid == null)
             {
                 throw new Exception("Value is not Guid");
             }
             sqlDataRecord.SetGuid(ordinal, guid.Value);
             break;
         case SqlDbType.SmallInt:
             var sh = value as short?;
             if (sh == null)
             {
                 var uByte = value as sbyte?;
                 if (uByte == null)
                 {
                     throw new Exception("Value is not short or sbyte");
                 }
                 sh = uByte.Value;
             }
             sqlDataRecord.SetInt16(ordinal, sh.Value);
             break;
         case SqlDbType.TinyInt:
             var b = value as byte?;
             if (b == null)
             {
                 throw new Exception("Value is not byte");
             }
             sqlDataRecord.SetByte(ordinal, b.Value);
             break;
         case SqlDbType.Time:
             var timeSpan = value as TimeSpan?;
             if (timeSpan == null)
             {
                 throw new Exception("Value is not TimeSpan");
             }
             sqlDataRecord.SetTimeSpan(ordinal, timeSpan.Value);
             break;
         case SqlDbType.DateTimeOffset:
             var dateTimeOffset = value as DateTimeOffset?;
             if (dateTimeOffset == null)
             {
                 throw new Exception("Value is not DateTimeOffset");
             }
             sqlDataRecord.SetDateTimeOffset(ordinal, dateTimeOffset.Value);
             break;
         case SqlDbType.Structured:
         case SqlDbType.Udt:
         case SqlDbType.Timestamp:
         case SqlDbType.Variant:
             throw new NotImplementedException();
         default:
             throw new ArgumentOutOfRangeException();
     }
 }
    public static void IR_SM_TotalObjective_PerMonth(string brandCodes, int startMonth, int startYear, int endMonth, int endYear, string saCodes)
    {
        using (SqlConnection con = new SqlConnection("context connection=true"))
        {
            SqlPipe pipe = SqlContext.Pipe;
            List<SqlCommand> commands = new List<SqlCommand>();

            SqlInt32 smallyear = (startYear < endYear) ? startYear : endYear;
            SqlInt32 bigyear = (startYear > endYear) ? startYear : endYear;

            List<string> brdcods = new List<string>();
            string[] split = brandCodes.Split('-');
            foreach (string s in split)
                if (s.ToLower().Trim() != "")
                    brdcods.Add(s.Trim().ToLower());

            List<string> sacods = new List<string>();
            string[] split2 = saCodes.Split('-');
            foreach (string s in split2)
                if (s.ToLower().Trim() != "")
                    sacods.Add(s.Trim().ToLower());
            if (sacods.Count == 0)
                sacods.Add("");

            foreach (string brandCode in brdcods)
            {
                for (int year = (int)smallyear; year <= bigyear; year++)
                {
                    foreach (string saCode in sacods)
                    {
                        commands.Add(new SqlCommand("SELECT SALESBUDGET.BUDGETTYPECODE AS TypeT, SALESBUDGET.YEAR AS YearT, SALESBUDGET.MONTH AS MonthT, SALESBUDGET.QTY, SALESBUDGET.VALUE AS VAL, SAPRODUCTS.SAPRODUCTCODE FROM SALESBUDGET INNER JOIN SAPRODUCTS ON SAPRODUCTS.SAPRODUCTCODE = SALESBUDGET.SAPRODUCTCODE WHERE (SAPRODUCTS.BRANDCODE = @brandcode) AND (SALESBUDGET.YEAR = @year) AND (SALESBUDGET.MONTH BETWEEN @startmonth AND @endmonth) AND (SAPRODUCTS.SAPRODUCTCODE LIKE '%' + @sacode + '%')"));
                        commands[commands.Count - 1].Parameters.AddWithValue("@brandcode", brandCode);
                        commands[commands.Count - 1].Parameters.AddWithValue("@startmonth", (year == smallyear) ? startMonth : 1);
                        commands[commands.Count - 1].Parameters.AddWithValue("@endmonth", (year == bigyear) ? endMonth : 12);
                        commands[commands.Count - 1].Parameters.AddWithValue("@year", year);
                        commands[commands.Count - 1].Parameters.AddWithValue("@sacode", saCode);
                    }
                }
            }

            SqlDataRecord record = new SqlDataRecord(new SqlMetaData("QTY", SqlDbType.Float),
                    new SqlMetaData("MonthT", SqlDbType.Int),
                    new SqlMetaData("YearT", SqlDbType.Int),
                    new SqlMetaData("TypeT", SqlDbType.NVarChar, 50),
                    new SqlMetaData("SAPRODUCTCODE", SqlDbType.NVarChar, 20),
                    new SqlMetaData("VAL", SqlDbType.Float));

            pipe.SendResultsStart(record);

            foreach (SqlCommand cmd in commands)
            {
                try
                {
                    cmd.Connection = con;
                    con.Open();

                    SqlDataReader dr = cmd.ExecuteReader();
                    while (dr.Read())
                    {
                        if (dr["montht"] == DBNull.Value || dr["yeart"] == DBNull.Value)
                            continue;
                        int month = Convert.ToInt32(dr["montht"]);
                        int year = Convert.ToInt32(dr["yeart"]);
                        double qty = Convert.ToDouble((dr["qty"] == DBNull.Value) ? 0 : dr["qty"]);
                        if (dr["typet"] == DBNull.Value)
                            continue;
                        string type = Convert.ToString(dr["typet"]);
                        if (dr["SAPRODUCTCODE"] == DBNull.Value)
                            continue;
                        string saproductcode = Convert.ToString(dr["SAPRODUCTCODE"]);
                        double val = Convert.ToDouble((dr["val"] == DBNull.Value) ? 0 : dr["val"]);

                        record.SetDouble(0, qty);
                        record.SetInt32(1, month);
                        record.SetInt32(2, year);
                        record.SetString(3, type);
                        record.SetString(4, saproductcode);
                        record.SetDouble(5, val);
                        pipe.SendResultsRow(record);
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (con != null)
                        con.Close();
                }
            }
            pipe.SendResultsEnd();
        }
    }
    public static void IR_SM_TotalActual_PerMonth(string brandCodes, int startMonth, int startYear, int endMonth, int endYear, string saCodes)
    {
        using (SqlConnection con = new SqlConnection("context connection=true"))
        {
            SqlPipe pipe = SqlContext.Pipe;
            List<SqlCommand> commands = new List<SqlCommand>();
            try
            {
                SqlInt32 smallyear = (startYear < endYear) ? startYear : endYear;
                SqlInt32 bigyear = (startYear > endYear) ? startYear : endYear;

                List<string> brdcods = new List<string>();
                string[] split = brandCodes.Split('-');
                foreach (string s in split)
                    if (s.ToLower().Trim() != "")
                        brdcods.Add(s.Trim().ToLower());

                List<string> sacods = new List<string>();
                string[] split2 = saCodes.Split('-');
                foreach (string s in split2)
                    if (s.ToLower().Trim() != "")
                        sacods.Add(s.Trim().ToLower());
                if (sacods.Count == 0)
                    sacods.Add("");

                for (int year = (int)smallyear; year <= bigyear; year++)
                {
                    foreach (string brandCode in brdcods)
                    {
                        foreach (string saCode in sacods)
                        {
                            commands.Add(new SqlCommand("SELECT SUM(IR_Total_Country.SaleoutQTY) AS QTY, IR_Total_Country.RelatedMonth AS MonthT, IR_Total_Country.RelatedYear AS YearT, SAPRODUCTS.SAPRODUCTCODE, IR_Total_Country.OutValue AS VAL FROM IR_Total_Country INNER JOIN SAPRODUCTS ON SAPRODUCTS.SAPRODUCTCODE = IR_Total_Country.SAProductCode WHERE (SAPRODUCTS.BRANDCODE LIKE '%' + @brandcode + '%') AND (IR_Total_Country.RelatedYear = @year) AND (IR_Total_Country.RelatedMonth BETWEEN @startmonth AND @endmonth)  AND (SAPRODUCTS.SAPRODUCTCODE LIKE '%' + @sacode + '%') GROUP BY IR_Total_Country.RelatedMonth, IR_Total_Country.RelatedYear, SAPRODUCTS.SAPRODUCTCODE, IR_Total_Country.OutValue"));
                            commands[commands.Count - 1].Parameters.AddWithValue("@brandcode", brandCode);
                            commands[commands.Count - 1].Parameters.AddWithValue("@startmonth", (year == smallyear) ? startMonth : 1);
                            commands[commands.Count - 1].Parameters.AddWithValue("@endmonth", (year == bigyear) ? endMonth : 12);
                            commands[commands.Count - 1].Parameters.AddWithValue("@year", year);
                            commands[commands.Count - 1].Parameters.AddWithValue("@sacode", saCode);
                        }
                    }
                }

                SqlDataRecord record = new SqlDataRecord(new SqlMetaData("QTY", SqlDbType.Float),
                new SqlMetaData("MonthT", SqlDbType.Int),
                new SqlMetaData("YearT", SqlDbType.Int),
                new SqlMetaData("SAPRODUCTCODE", SqlDbType.NVarChar,20),
                new SqlMetaData("VAL", SqlDbType.Float));
                pipe.SendResultsStart(record);
                foreach (SqlCommand cmd in commands)
                {
                    try
                    {
                        cmd.Connection = con;
                        con.Open();

                        SqlDataReader dr = cmd.ExecuteReader();
                        while (dr.Read())
                        {
                            double qty = Convert.ToDouble(dr["qty"]);
                            int month = Convert.ToInt32(dr["montht"]);
                            int year = Convert.ToInt32(dr["yeart"]);
                            string saproductcode = Convert.ToString(dr["SAPRODUCTCODE"]);
                            double val = Convert.ToDouble(dr["val"]);    
                            record.SetDouble(0, qty);
                            record.SetInt32(1, month);
                            record.SetInt32(2, year);
                            record.SetString(3, saproductcode);
                            record.SetDouble(4, val);
                            pipe.SendResultsRow(record);
                        }
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                    finally
                    {
                        if (con != null)
                            con.Close();
                    }
                }
                pipe.SendResultsEnd();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

    }