Ejemplo n.º 1
0
        protected string MakeFilterText(IBNReportTemplate repTemp, QObject qItem)
        {
            string retval = "";

            foreach (FilterInfo fi in repTemp.Filters)
            {
                QField qTemp = qItem.Fields[fi.FieldName];
                if (qTemp == null)
                {
                    continue;
                }
                QDictionary qDTemp = qItem.GetDictionary(qTemp);
                if (qDTemp != null)
                {
                    if (fi.Values.Count > 0)
                    {
                        retval += qTemp.FriendlyName + " = ";
                        string sqlCommand = qDTemp.GetSQLQuery(Security.CurrentUser.LanguageId);
                        using (IDataReader reader = Report.GetQDictionary(sqlCommand))
                        {
                            ArrayList alDicVal = new ArrayList();
                            foreach (string _s in fi.Values)
                            {
                                alDicVal.Add(_s);
                            }
                            while (reader.Read())
                            {
                                if (alDicVal.Contains(reader["Id"].ToString()))
                                {
                                    retval += "<font color='red'>" + CommonHelper.GetResFileString(reader["Value"].ToString()) + "</font>,&nbsp;";
                                }
                            }
                        }
                        retval = retval.Remove(retval.Length - 7, 7) + "<br>";
                    }
                }
                else
                {
                    switch (qTemp.DataType)
                    {
                    case DbType.Decimal:
                    case DbType.Int32:
                        if (fi.Values.Count > 0)
                        {
                            retval += qTemp.FriendlyName;
                            switch (fi.Values[0])
                            {
                            case "0":
                                retval += "&nbsp;=<font color='red'>&nbsp;" + fi.Values[1] + "</font><br>";
                                break;

                            case "1":
                                retval += "&nbsp;&gt;<font color='red'>&nbsp;" + fi.Values[1] + "</font><br>";
                                break;

                            case "2":
                                retval += "&nbsp;&lt;<font color='red'>&nbsp;" + fi.Values[1] + "</font><br>";
                                break;

                            case "3":
                                retval += "&nbsp;<font color='red'>" + LocRM.GetString("tBetween") + "&nbsp;" + fi.Values[1] + "&nbsp;-&nbsp;" + fi.Values[2] + "</font><br>";
                                break;
                            }
                        }
                        break;

                    case DbType.DateTime:
                    case DbType.Date:
                        if (fi.Values.Count > 0)
                        {
                            retval += qTemp.FriendlyName;
                            switch (fi.Values[0])
                            {
                            case "1":
                                retval += "&nbsp;=&nbsp;<font color='red'>" + LocRM.GetString("tToday") + "</font><br>";
                                break;

                            case "2":
                                retval += "&nbsp;=&nbsp;<font color='red'>" + LocRM.GetString("tYesterday") + "</font><br>";
                                break;

                            case "3":
                                retval += "&nbsp;=&nbsp;<font color='red'>" + LocRM.GetString("tThisWeek") + "</font><br>";
                                break;

                            case "4":
                                retval += "&nbsp;=&nbsp;<font color='red'>" + LocRM.GetString("tLastWeek") + "</font><br>";
                                break;

                            case "5":
                                retval += "&nbsp;=&nbsp;<font color='red'>" + LocRM.GetString("tThisMonth") + "</font><br>";
                                break;

                            case "6":
                                retval += "&nbsp;=&nbsp;<font color='red'>" + LocRM.GetString("tLastMonth") + "</font><br>";
                                break;

                            case "7":
                                retval += "&nbsp;=&nbsp;<font color='red'>" + LocRM.GetString("tThisYear") + "</font><br>";
                                break;

                            case "8":
                                retval += "&nbsp;=&nbsp;<font color='red'>" + LocRM.GetString("tLastYear") + "</font><br>";
                                break;

                            case "9":
                                if (DateTime.Parse(fi.Values[1]) == DateTime.MinValue)
                                {
                                    retval += "&nbsp;<font color='red'>" + LocRM.GetString("tLess") + "&nbsp;" + DateTime.Parse(fi.Values[2]).ToShortDateString() + "</font><br>";
                                }
                                else if (DateTime.Parse(fi.Values[2]) >= DateTime.MaxValue.Date)
                                {
                                    retval += "&nbsp;<font color='red'>" + LocRM.GetString("tGreater") + "&nbsp;" + DateTime.Parse(fi.Values[1]).ToShortDateString() + "</font><br>";
                                }
                                else
                                {
                                    retval += "&nbsp;<font color='red'>" + LocRM.GetString("tBetween") + "&nbsp;" + DateTime.Parse(fi.Values[1]).ToShortDateString() + "&nbsp;-&nbsp;" + DateTime.Parse(fi.Values[2]).ToShortDateString() + "</font><br>";
                                }
                                break;
                            }
                        }
                        break;

                    case DbType.String:
                        if (fi.Values.Count > 0)
                        {
                            retval += qTemp.FriendlyName + "&nbsp;=&nbsp;<font color='red'>" + fi.Values[0] + "</font><br>";
                        }
                        break;

                    case DbType.Time:
                        retval += qTemp.FriendlyName;
                        if (fi.Values.Count > 0)
                        {
                            switch (fi.Values[0])
                            {
                            case "0":
                                retval += "&nbsp;=<font color='red'>&nbsp;" + CommonHelper.GetHours(int.Parse(fi.Values[1])) + "</font><br>";
                                break;

                            case "1":
                                retval += "&nbsp;&gt;<font color='red'>&nbsp;" + CommonHelper.GetHours(int.Parse(fi.Values[1])) + "</font><br>";
                                break;

                            case "2":
                                retval += "&nbsp;&lt;<font color='red'>&nbsp;" + CommonHelper.GetHours(int.Parse(fi.Values[1])) + "</font><br>";
                                break;

                            case "3":
                                retval += "&nbsp;<font color='red'>" + LocRM.GetString("tBetween") + "&nbsp;" + CommonHelper.GetHours(int.Parse(fi.Values[1])) + "&nbsp;-&nbsp;" + CommonHelper.GetHours(int.Parse(fi.Values[2])) + "</font><br>";
                                break;
                            }
                        }
                        else
                        {
                            retval += "<br>";
                        }
                        break;
                    }
                }
            }
            return(retval);
        }