示例#1
0
      public ReportDocument PrepareReport()
      {
          int       i;
          DataTable dtObject = new DataTable();
          string    Op;
          string    SQL         = "";
          string    Criteria    = "";
          string    CritFormula = "";
          string    T;
          //DateTime Vdate = new DateTime();
          SqlDataAdapter daObject = new SqlDataAdapter(("SELECT * FROM Objects WHERE ObjectID=" + _ReportID), DataTools.GetConnectionStr());
          bool           SP;

          daObject.Fill(dtObject);
          SQL       = dtObject.Rows[0]["SqlStatment"].ToString();
          _RepTitle = dtObject.Rows[0]["ObjectTitle"].ToString();
          string RepPath = DataTools.GetConfigSetting("RepPath");

          if ((RepPath == ""))
          {
              RepPath = Server.MapPath("Reports/");
          }

          rpt.Load((RepPath + dtObject.Rows[0]["ObjectName"].ToString().Split(';')[0]));

          if ((bool)dtObject.Rows[0]["ConnectToSQL"])
          {
              SetReportConnections(dtObject);
              try
              {
                  rpt.VerifyDatabase();
              }
              catch
              {
              }
          }

          ReadCriteria(ref Criteria, ref CritFormula, dtObject);

          if (!(bool)dtObject.Rows[0]["ConnectToSQL"])
          {
              if ((Criteria != ""))
              {
                  SQL = DataTools.AddCriteriaToSql(SQL, Criteria);
              }

              SqlDataAdapter daReport = new SqlDataAdapter(SQL, DataTools.GetConnectionStr());
              if ((SQL.IndexOf("@Crit") + 1 == 0))
              {
                  daReport.Fill(dsReport, dtObject.Rows[0]["Source"].ToString());
              }
          }
          else
          {
              rpt.SetParameterValue(SQL, Criteria);
          }

          if ((CritFormula != ""))
          {
              if ((rpt.RecordSelectionFormula == ""))
              {
                  rpt.RecordSelectionFormula = CritFormula;
              }
              else
              {
                  rpt.RecordSelectionFormula = ("(" + (rpt.RecordSelectionFormula + (") AND (" + (CritFormula + ")"))));
              }
          }

          SQL = DataTools.ReadField(dtObject.Rows[0]["SqlNext"]);
          if ((SQL != ""))
          {
              string[] NArr;
              string   NCrit;
              string   TmpStr;
              string   Sstr;
              NArr = SQL.Split(';');
              for (i = 0; (i <= (NArr.Length - 1)); i++)
              {
                  NCrit  = "";
                  SQL    = DataTools.GetStrPart(NArr[i].ToString(), 0, "^");
                  TmpStr = DataTools.GetStrPart(NArr[i].ToString(), 3, "^");
                  Sstr   = DataTools.GetStrPart(NArr[i].ToString(), 10, "^");
                  if ((Sstr.Substring(0, 1) == "S"))
                  {
                      NCrit = Criteria;
                      string[] Sarr = Sstr.Split('=');
                      if (((Sarr).Length > 0))
                      {
                          for (int k = 1; k < Sarr.Length; k++)
                          {
                              // If InStr(1, Sarr(k), ">") Then
                              if ((Sarr[k].IndexOf(">", 0) + 1) != 0)  //not sure
                              {
                                  NCrit = NCrit.Replace(DataTools.GetStrPart(Sarr[k], 0, ">"), DataTools.GetStrPart(Sarr[k], 1, ">"));
                              }
                              else
                              {
                                  NCrit = DelSQLFldCriteria(Sarr[k], NCrit);
                              }
                          }
                      }
                  }

                  if ((TmpStr != ""))
                  {
                      string MinMax;
                      string DataField = DataTools.GetStrPart(NArr[i].ToString(), 4, "^");
                      DataField = ((DataField == "") ? TmpStr : DataField);
                      Op        = DataTools.GetStrPart(NArr[i].ToString(), 6, "^");
                      Op        = ((Op == "") ? "<" : Op);
                      if ((DataTools.GetStrPart(NArr[i].ToString(), 5, "^") == "MAX"))
                      {
                          MinMax = GetFldCriteriaLmt(TmpStr, Criteria, true);
                          if ((MinMax == ""))
                          {
                              //If MinMax = "" Then MinMax = Format(DateAdd(DateInterval.Year, 100, Date.Today), "MM/dd/yyyy")

                              MinMax = string.Format("MM/dd/yyyy", DateTime.Today.AddYears(100));       //increase date by 100y
                          }
                          else
                          {
                              MinMax = GetFldCriteriaLmt(TmpStr, Criteria, false);
                              if ((MinMax == ""))
                              {
                                  MinMax = string.Format("MM/dd/yyyy", DateTime.Today.AddYears(-100));
                              }

                              if ((NCrit != ""))
                              {
                                  NCrit = (NCrit + " AND ");
                              }

                              NCrit = (NCrit + ("(" + (DataField + (Op + ("'" + (MinMax + "')"))))));
                          }

                          if (!(bool)dtObject.Rows[0]["ConnectToSQL"])
                          {
                              //                SP = GenericMethods.GetStrPart(NArr(i), 11, "^") = "SP"
                              //If NCrit <> "" And Not SP Then
                              //    SQL = GenericMethods.AddCriteriaToSql(SQL, NCrit)
                              //End If
                              SP = (DataTools.GetStrPart(NArr[i].ToString(), 11, "^") == "SP");
                              if (((NCrit != "") && !SP))
                              {
                                  SQL = DataTools.AddCriteriaToSql(SQL, NCrit);
                              }

                              string IndexName = DataTools.GetStrPart(NArr[i].ToString(), 2, "^");
                              //Dim Access As Boolean = UCase(GenericMethods.GetStrPart(NArr(i), 7, "^")) = "Y"

                              bool Access = (DataTools.GetStrPart(NArr[i].ToString(), 7, "^")).ToUpper() == "Y";
                              //IIf(IndexName = "", False, True) Or UCase(GenericMethods.GetStrPart(NArr(i), 8, "^")) = "T"
                              bool TB = (((IndexName == "") ? false : true) | (DataTools.GetStrPart(NArr[i].ToString(), 8, "^").ToUpper()) == "T");

                              string AppToTb = DataTools.GetStrPart(NArr[i].ToString(), 9, "^");
                              T = DataTools.GetStrPart(NArr[i].ToString(), 1, "^");
                              if (!Access)
                              {
                                  SqlConnection Cnn = new SqlConnection(DataTools.GetConnectionStr());
                                  SqlCommand    cmd = new SqlCommand(SQL, Cnn);
                                  if (SP)
                                  {
                                      cmd.CommandType = CommandType.StoredProcedure;
                                      cmd.Parameters.AddWithValue("@Crit", NCrit);
                                  }

                                  SqlDataAdapter daN = new SqlDataAdapter(cmd);
                                  if ((AppToTb != ""))
                                  {
                                      daN.Fill(dsReport.Tables[AppToTb]);
                                  }
                                  else
                                  {
                                      daN.Fill(dsReport, T);
                                  }
                              }
                              else
                              {
                                  // 'lbl()
                              }
                          }
                          else
                          {
                              rpt.SetParameterValue(SQL, NCrit);
                          }
                      }

                      //  Connection Info Was Here '''''''''''''''''''''''''
                      //  Connection Info '''''''''''''''''''''''''''''''''''''''''''''''''''''''
                      if (!(bool)dtObject.Rows[0]["ConnectToSQL"])
                      {
                          SetReportConnections(dtObject);
                      }

                      // ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
                      // '''''''''''''''''''''''''''''''''''''''''''''''''''
                      string objectTitle = dtObject.Rows[0]["ObjectTitle"].ToString();
                      rpt.DataDefinition.FormulaFields["CompanyName"].Text = "'Saudisoft Company Limited'";
                      if ((_RepLan == "Arabic"))
                      {
                          dtObject.Rows[0]["ObjectTitle"] = DataTools.GetDataTable(("Select ArabicCap From Dic Where FieldName='" + (objectTitle + "'")), DataTools.GetConnectionStr());
                      }

                      rpt.DataDefinition.FormulaFields["ReportTitle"].Text   = ("'" + (objectTitle + "'"));
                      rpt.DataDefinition.FormulaFields["CompanyBranch"].Text = "'Jeddah Branch'";
                      rpt.DataDefinition.FormulaFields["Issuedby"].Text      = ("'" + (DataTools.GetUserName() + "'"));
                  }
              }
          }
          return(rpt);
      }