Example #1
0
        protected virtual async Task <QueryResult <TEntity> > QueryAsync <TResult>(
            SqlWhereStatement whereStatement,
            string[] selectColumns,
            int skip,
            int take,
            CancellationToken cancellationToken,
            string[] orderByColumns,
            bool orderByAscending = true,
            IDictionary <string, object> additionalFilterValues = null,
            bool distinct = false)
        {
            var filter       = whereStatement.Where;
            var filterValues = whereStatement.FilterValues;

            using (var connection = await GetConnectionAsync(cancellationToken))
            {
                if (additionalFilterValues != null)
                {
                    var filterValuesSql = SqlHelper.GetAndEqualsStatement(DatabaseDriver, additionalFilterValues);
                    filter       = $"{filter} {DatabaseDriver.GetSqlStatementTemplate(SqlStatement.And)} ({filterValuesSql})";
                    filterValues = filterValues
                                   .Union(additionalFilterValues)
                                   .ToDictionary(k => k.Key, v => v.Value);
                }

                int totalCount = 0;
                if (FetchQueryResultTotal)
                {
                    using (var countCommand = connection.CreateSelectCountCommand(
                               DatabaseDriver,
                               Table,
                               filter,
                               filterValues,
                               distinct))
                    {
                        totalCount = Convert.ToInt32(
                            await countCommand.ExecuteScalarAsync(cancellationToken).ConfigureAwait(false));
                    }
                }

                return(new QueryResult <TEntity>(
                           new DbDataReaderAsyncEnumerable <TEntity>(
                               GetConnectionAsync,
                               c =>
                               c.CreateSelectSkipTakeCommand(
                                   DatabaseDriver,
                                   Table,
                                   selectColumns,
                                   filter,
                                   skip,
                                   take,
                                   orderByColumns,
                                   orderByAscending,
                                   filterValues,
                                   distinct),
                               Mapper,
                               selectColumns),
                           totalCount));
            }
        }
Example #2
0
        protected override void BindGrid()
        {
            using (var cmd = new SqlCommand())
            {
                cmd.CommandText = SelectAllFromTableWhereStatus + " WHERE 1=1 ";
                if (IsFiltered)
                {
                    var where = new SqlWhereStatement(false);
                    where.AddWhere("PurchaseOrderID", cboxPurchaseOrderID.Text, true, txtPurchaseOrderID.Text.ToNullableInt32());
                    where.AddWhere("PurchaseOrderBranchID", WhereOperator.Equals, true, bbPurchaseOrderBranch.PrimaryKey);
                    where.AddWhere("PurchaseOrderDate", cboxPurchaseOrderDate.Text, true, ConvertHelper.ToNullableDateTime(datePurchaseOrderDate1.EditValue), ConvertHelper.ToNullableDateTime(datePurchaseOrderDate2.EditValue), DateTimePrecision.Days);
                    where.AddWhere("VendorID", cboxVendorID.Text, true, bbVendorID.PrimaryKey);
                    where.AddWhere("VendorName", cboxVendorName.Text, true, txtVendorName.Text.Trim());
                    where.AddWhere("SalesOrderID", cboxSalesOrderID.Text, true, txtSalesOrderID.Text.ToNullableInt32());
                    where.AddWhere("SalesOrderBranchID", WhereOperator.Equals, true, bbSalesOrderBranch.PrimaryKey);



                    //todo filter = FilterHelper.GetWhereClause("SalesOrderDate", cboxSalesOrderDate.Text, ConvertHelper.ToDateTime(dateSalesOrderDate1.EditValue), ConvertHelper.ToDateTime(dateSalesOrderDate2.EditValue), RoundingFormat.None, cmd);
                    //if (filter.Length > 0) cmd.CommandText += " AND " + filter;

                    //filter = FilterHelper.GetWhereClause("CustomerID", cboxCustomerID.Text, bbCustomerID.RecordValue);
                    //if (filter.Length > 0) cmd.CommandText += " AND " + filter;

                    //filter = FilterHelper.GetWhereClause("CustomerName", cboxCustomerName.Text, txtCustomerName.Text.Trim());
                    //if (filter.Length > 0) cmd.CommandText += " AND " + filter;

                    //filter = FilterHelper.GetWhereClause("ProductName", cboxProduct.Text, true, txtProduct.Text.Trim());
                    //if (filter.Length > 0) cmd.CommandText += " AND " + filter;

                    //filter = FilterHelper.GetWhereClause("ProductNumber", cboxProductNumber.Text, txtProductNumber.Text.Trim());
                    //if (filter.Length > 0) cmd.CommandText += " AND " + filter;

                    //filter = FilterHelper.GetWhereClause("ProductCurrencyCode", "=", lookCurrency.EditValue, SqlDbType.NChar, cmd);
                    //if (filter.Length > 0) cmd.CommandText += " AND " + filter;

                    cmd.CommandText += where;
                }
                cmd.CommandText += " ORDER BY SalesOrderDate DESC, SalesOrderID DESC";
                ds.VW_SalesOrderDetailPivot.Clear();
                ds.VW_SalesOrderDetailPivot.Merge(DictionaryManager.GetDataTable(cmd));
            }
        }
        protected override void BindGrid()
        {
            using (var cmd = new SqlCommand())
            {
                cmd.CommandText = SelectAllFromTableWhereStatus;
                if (IsFiltered)
                {
                    var where = new SqlWhereStatement(false);
                    where.AddWhere("OrderDate", cboxDate.Text, true, ConvertHelper.ToDateTime(dateDate1.EditValue), ConvertHelper.ToDateTime(dateDate2.EditValue), DateTimePrecision.Days);
                    where.AddWhere("ActNumber", cboxActNumber.Text, true, txtActNumber.Text.Trim());
                    where.AddWhere("IssuedPerson", cboxIssuedPerson.Text, true, txtIssuedPerson.Text.Trim());

                    cmd.CommandText += where;
                }

                cmd.CommandText += " ORDER BY OrderDate DESC, ID DESC";
                ds.VW_CashboxOrder.Clear();
                ds.VW_CashboxOrder.Merge(DictionaryManager.GetDataTable(cmd));
            }
        }
Example #4
0
            protected override Task <QueryResult <TItem> > QueryAsync <TResult>(
                SqlWhereStatement filter,
                string[] selectColumns,
                int skip,
                int take,
                CancellationToken cancellationToken,
                string[] orderByColumns,
                bool orderByAscending = true,
                IDictionary <string, object> additionalFilterValues = null,
                bool distinct = false)
            {
                if (additionalFilterValues == null)
                {
                    additionalFilterValues = MapKeyColumnValues;
                }
                else
                {
                    additionalFilterValues = additionalFilterValues
                                             .Union(MapKeyColumnValues)
                                             .ToDictionary(k => k.Key, v => v.Value);
                }

                return(base.QueryAsync <TResult>(filter, selectColumns, skip, take, cancellationToken, orderByColumns, orderByAscending, additionalFilterValues, distinct));
            }
Example #5
0
        /// <summary>
        /// 计算总记录数
        /// </summary>
        /// <returns>记录总数</returns>
        private int Calc()
        {
            int    RecordCount  = 0;
            string sqlStatement = string.Empty;

            if (string.IsNullOrEmpty(SqlWhereStatement.Trim()))
            {
                sqlStatement = "select count(*) as rowsCount from " + TableName;
            }
            else
            {
                sqlStatement = "select count(*) as rowsCount from " + TableName + " where " + SqlWhereStatement;
            }

            IDataReader dr = DbFactoryProvider.GetProvider(this.pageDbType, this.pageConnstring).ExecuteReader(sqlStatement);;

            if (dr.Read())
            {
                RecordCount = Int32.Parse(dr["rowsCount"].ToString());
            }
            dr.Close();
            dr.Dispose();
            return(RecordCount);
        }
Example #6
0
        private DataTable TDataBind()
        {
            //读取页码值保存到currentPage变量中进行按钮失效运算
            currentPage = pageIndex;
            //读取总页参数进行按钮失效运算
            pages = pageCounts;
            //判断四个按钮(首页、上一页、下一页、尾页)状态
            if (currentPage + 1 > 1)
            {
                btnFirstPage.Enabled = true;
                btnPrevPage.Enabled  = true;
            }
            else
            {
                btnFirstPage.Enabled = false;
                btnPrevPage.Enabled  = false;
            }
            if (currentPage == pages)
            {
                btnNextPage.Enabled = false;
                btnLastPage.Enabled = false;
            }
            else
            {
                btnNextPage.Enabled = true;
                btnLastPage.Enabled = true;
            }
            //核心SQL语句,进行查询运算(决定了分页的效率:))
            StringBuilder sbSqlStatement = new StringBuilder();

            switch (this.pageDbType)
            {
            case CurrentDbType.SqlServer:
            case CurrentDbType.DB2:
                if (string.IsNullOrEmpty(SqlWhereStatement.Trim()))
                {
                    sbSqlStatement.Append("SELECT TOP " + PageSize + "  " + QueryFieldList + " FROM " + TableName + " WHERE " + PrimaryKey + " NOT IN(SELECT TOP ");
                    sbSqlStatement.Append(PageSize * currentPage + "  " + PrimaryKey + " FROM " + TableName);
                    sbSqlStatement.Append(" ORDER BY " + OrderField + " DESC) ORDER BY " + OrderField + " DESC");
                }
                else
                {
                    sbSqlStatement.Append("SELECT TOP " + PageSize + "  " + QueryFieldList + " FROM " + TableName + " WHERE " + SqlWhereStatement + " AND " + PrimaryKey + " NOT IN(SELECT TOP ");
                    sbSqlStatement.Append(PageSize * currentPage + "  " + PrimaryKey + "  FROM " + TableName + " WHERE " + SqlWhereStatement + "  ORDER BY " + OrderField + " DESC) ORDER BY " + OrderField + " DESC");
                }
                break;

            case CurrentDbType.Oracle:
                string sqlCount = (this.PageIndex * this.PageSize).ToString();
                string sqlStart = ((this.PageIndex - 1) * this.PageSize).ToString();
                if (!string.IsNullOrEmpty(SqlWhereStatement))
                {
                    SqlWhereStatement = "WHERE " + SqlWhereStatement;
                }

                sbSqlStatement.Append(string.Format("SELECT * FROM (SELECT T.*, ROWNUM RN FROM (SELECT * FROM {0} {1} ORDER BY {2}) T WHERE ROWNUM <= {3}) WHERE RN > {4}"
                                                    , TableName, SqlWhereStatement, OrderField, sqlCount, sqlStart));
                break;

            case CurrentDbType.Access:
                sqlStart = ((this.PageIndex - 1) * this.PageSize).ToString();
                sbSqlStatement.Append(string.Format("SELECT * FROM (SELECT TOP {0} * FROM (SELECT TOP {1} * FROM {2} T ORDER BY {3} ) T1 ORDER BY {4} DESC ) T2 ORDER BY {5} "
                                                    , PageSize, sqlStart, TableName, OrderField, OrderField, OrderField));
                break;
            }
            _pageTable = DbFactoryProvider.GetProvider(this.pageDbType, this.pageConnstring).Fill(sbSqlStatement.ToString());
            //显示Label控件LcurrentPaget和文本框控件gotoPage状态
            lblCurrentPage.Text = (currentPage + 1).ToString();
            txtGoToPage.Text    = (currentPage + 1).ToString();
            return(_pageTable);
        }