public List <FAKategorie> GetFAKategorieByQueryData(FAKategorieQueryData queryData)
        {
            List <FAKategorie> wrkList = new List <FAKategorie>();

            // Durch das ständig anders aussehende SQL-Statement wird in diesem Fall von einem vorgefertigten
            // Prepared-Statement wie in den anderen Fällen abgesehen und das DbCommand jedesmal neu,
            // entsprechend den queryData erstellt.
            using (DbCommand cmd = myRepoFactory.CreateCommand()) {
                cmd.CommandText = "select * from FAKategorie k1 ";
                if (queryData != null)
                {
                    List <string> whereClauses = new List <string>();
                    if (!string.IsNullOrWhiteSpace(queryData.FAKennzeichenEA))
                    {
                        whereClauses.Add("FAKennzeichenEA = @FAKennzeichenEA");
                        cmd.AddCmdParameter(DbType.String, ParameterDirection.Input, "@FAKennzeichenEA",
                                            queryData.FAKennzeichenEA, size: 1, precision: null, scale: null);
                    }
                    if (queryData.GueltFuerJahr != null)
                    {
                        whereClauses.Add("FAJahrGueltigAb = (select top 1 FAJahrGueltigAb " +
                                         "                   from FAKategorie k2 " +
                                         "                   where FAJahrGueltigAb <= @FAJahrGueltigAb " +
                                         "                   order by FAJahrGueltigAb desc) ");
                        cmd.AddCmdParameter(DbType.Int32, ParameterDirection.Input, "@FAJahrGueltigAb",
                                            queryData.GueltFuerJahr, null, 4, 0);
                    }

                    string whereClause = string.Empty;
                    whereClauses.ForEach((w) => {
                        if (string.IsNullOrWhiteSpace(whereClause))
                        {
                            whereClause += " where " + w + " ";
                        }
                        else
                        {
                            whereClause += " and " + w + " ";
                        }
                    });
                    cmd.CommandText += whereClause;
                }
                cmd.Prepare();
                using (DbDataReader dbDr = cmd.ExecuteReader()) {
                    while (dbDr.Read())
                    {
                        FAKategorie faKat = new FAKategorie();
                        faKat.FillEntityWithDataReader(dbDr);
                        wrkList.Add(faKat);
                    }
                }
            }
            return(wrkList);
        }
예제 #2
0
        public List <Bankkontobewegung> GetBankkontobewegungByQueryData(BankkontobewegungQueryData qryDta)
        {
            List <Bankkontobewegung> resultList   = new List <Bankkontobewegung>();
            List <string>            whereClauses = new List <string>();

            using (DbCommand cmd = myRepoFactory.CreateCommand()) {
                cmd.CommandText = "select * from Bankkontobewegung ";
                if (qryDta.VonValutaDatum != null && ((DateTime)qryDta.VonValutaDatum) > new DateTime(1950, 01, 01))
                {
                    whereClauses.Add("Valutadatum >= @VonValutaDatum");
                    cmd.AddCmdParameter(typeof(DateTime), ParameterDirection.Input, "@VonValutaDatum", (DateTime)qryDta.VonValutaDatum);
                }
                if (qryDta.BisValutaDatum != null && ((DateTime)qryDta.BisValutaDatum) < new DateTime(3000, 01, 01))
                {
                    whereClauses.Add("Valutadatum <= @BisValutaDatum");
                    cmd.AddCmdParameter(typeof(DateTime), ParameterDirection.Input, "@BisValutaDatum", (DateTime)qryDta.BisValutaDatum);
                }
                if (qryDta.KontoId != null && (int)qryDta.KontoId > 0)
                {
                    whereClauses.Add("KontoID = @KontoId");
                    cmd.AddCmdParameter(typeof(int), ParameterDirection.Input, "@KontoId", (int)qryDta.KontoId);
                }
                if (!qryDta.VerbuchteInkludieren)
                {
                    whereClauses.Add("FiBuVerbucht is Null");
                }
                cmd.CommandText += whereClauses.Count > 0 ? " where " : "";
                for (int i = 0; i < whereClauses.Count; i++)
                {
                    cmd.CommandText += whereClauses[i];
                    cmd.CommandText += i < whereClauses.Count - 1 ? " and " : "";
                }
                cmd.Prepare();

                using (DbDataReader dbDr = cmd.ExecuteReader()) {
                    while (dbDr.Read())
                    {
                        Bankkontobewegung bew = new Bankkontobewegung();
                        bew.FillEntityWithDataReader(dbDr);
                        resultList.Add(bew);
                    }
                }
            }
            return(resultList);
        }
예제 #3
0
        private List <string> genereateConditions(BelegQueryData queryData, DbCommand cmd)
        {
            List <string> cond = new List <string>();

            if (queryData.VonDatum != null)
            {
                string par = "@VonDatum";
                cond.Add(string.Format("BelegDatum >= {0}", par));
                cmd.AddCmdParameter(typeof(DateTime), ParameterDirection.Input, par, (DateTime)queryData.VonDatum);
            }
            if (queryData.BisDatum != null)
            {
                string par = "@BisDatum";
                cond.Add(string.Format("BelegDatum <= {0}", par));
                cmd.AddCmdParameter(typeof(DateTime), ParameterDirection.Input, par, (DateTime)queryData.BisDatum);
            }
            if (!string.IsNullOrWhiteSpace(queryData.BelegnummerIntern))
            {
                string par = "@BelegnummerIntern";
                cond.Add(string.Format("BelegnummerIntern = {0}", par));
                cmd.AddCmdParameter(typeof(string), ParameterDirection.Input, par, queryData.BelegnummerIntern);
            }
            return(cond);
        }