示例#1
0
    /// <summary>
    /// 取从档数据
    /// </summary>
    public DataTable GetDataTable(string whereString, string sortfield, string sortorder, string parentTableName, Dictionary<string, object> parentRow, int startIndex, int count)
    {
        var clientInfo = EFClientTools.ClientUtility.ClientInfo;
        EFClientTools.ClientUtility.RemoteName = RemoteName;
        var packetInfo = new EFClientTools.EFServerReference.PacketInfo()
        {
            OrderParameters = new List<EFClientTools.EFServerReference.OrderParameter>(),
            WhereParameters = new List<EFClientTools.EFServerReference.WhereParameter>(),
        };
        if (sortfield != null && sortfield != "" && IsMaster)
        {
            EFClientTools.EFServerReference.OrderParameter OrderParameter = new EFClientTools.EFServerReference.OrderParameter();
            OrderParameter.Field = sortfield;
            if (sortorder.ToLower() == "asc")
                OrderParameter.Direction = EFClientTools.EFServerReference.OrderDirection.Ascending;
            else
                OrderParameter.Direction = EFClientTools.EFServerReference.OrderDirection.Descending;
            packetInfo.OrderParameters.Add(OrderParameter);
        }
        var commandName = CommandName;
        if (IsMaster)
        {
            packetInfo.StartIndex = startIndex;
            packetInfo.Count = count;
            packetInfo.WhereString = whereString;
        }
        else
        {
            if (parentRow == null)
            {
                packetInfo.OnlySchema = true;
            }
            else
            {
                packetInfo.StartIndex = 0;
                packetInfo.Count = -1;  //detail packetrecord无效
                commandName = parentTableName;
                foreach (var item in parentRow)
                {
                    packetInfo.WhereParameters.Add(new EFClientTools.EFServerReference.WhereParameter() { And = true, Field = item.Key, Value = item.Value });
                }
            }
        }

        var xml = (string)EFClientTools.ClientUtility.Client.GetDataSet(clientInfo, AssemblyName, commandName, packetInfo);
        StringReader reader = new StringReader(xml);
        var dataSet = new DataSet();
        dataSet.ReadXml(reader, XmlReadMode.Auto);
        if (dataSet.Tables[TableName] == null)
        {
            throw new Exception(string.Format("Can not find table:'{0}'.(RemoteName:'{1}')", TableName, Data));
        }
        if (!IsMaster)
        {
            DataView view = new DataView(dataSet.Tables[TableName]);
            if (!string.IsNullOrEmpty(sortfield))
            {
                view.Sort = string.Format("{0} {1}", sortfield, sortorder);
            }
            var table = view.ToTable(TableName);
            if (dataSet.Tables[TableName].PrimaryKey.Length > 0)
            {
                var primaryKey = new DataColumn[dataSet.Tables[TableName].PrimaryKey.Length];
                for (int i = 0; i < dataSet.Tables[TableName].PrimaryKey.Length; i++)
                {
                    primaryKey[i] = table.Columns[dataSet.Tables[TableName].PrimaryKey[i].ColumnName];
                }
                table.PrimaryKey = primaryKey;
            }
            return table;
        }
        else
        {
            return dataSet.Tables[TableName];
        }
    }
示例#2
0
    public DataTable GetTotalTable(string whereString, string parentTableName, Dictionary<string, object> parentRow, Dictionary<string, string> totals)
    {
        var clientInfo = EFClientTools.ClientUtility.ClientInfo;
        var packetInfo = new EFClientTools.EFServerReference.PacketInfo()
        {
            OrderParameters = new List<EFClientTools.EFServerReference.OrderParameter>(),
            WhereParameters = new List<EFClientTools.EFServerReference.WhereParameter>(),
        };
        var commandName = CommandName;
        if (IsMaster)
        {
            packetInfo.StartIndex = 0;
            packetInfo.Count = -1;
            packetInfo.WhereString = whereString;
        }
        else
        {
            if (parentRow == null)
            {
                packetInfo.OnlySchema = true;
            }
            else
            {
                packetInfo.StartIndex = 0;
                packetInfo.Count = -1;  //detail packetrecord无效
                commandName = parentTableName;
                foreach (var item in parentRow)
                {
                    packetInfo.WhereParameters.Add(new EFClientTools.EFServerReference.WhereParameter() { And = true, Field = item.Key, Value = item.Value });
                }
            }
        }

        var xml = (string)EFClientTools.ClientUtility.Client.GetDataTotal(clientInfo, AssemblyName, TableName, packetInfo, totals);
        StringReader reader = new StringReader(xml);
        var dataSet = new DataSet();
        dataSet.ReadXml(reader, XmlReadMode.Auto);
        return dataSet.Tables[TableName];
    }
示例#3
0
    /// <summary>
    /// 取结构和更新数据
    /// </summary>
    public DataSet GetDataSet(Dictionary<string, object> keyValues)
    {
        var clientInfo = EFClientTools.ClientUtility.ClientInfo;
        var packetInfo = new EFClientTools.EFServerReference.PacketInfo()
        {
            OrderParameters = new List<EFClientTools.EFServerReference.OrderParameter>(),
            WhereParameters = new List<EFClientTools.EFServerReference.WhereParameter>(),
        };
        if (keyValues == null)
        {
            packetInfo.OnlySchema = true;
        }
        else
        {
            foreach (var item in keyValues)
            {
                packetInfo.WhereParameters.Add(new EFClientTools.EFServerReference.WhereParameter() { And = true, Field = item.Key, Value = item.Value });
            }
        }

        var xml = (string)EFClientTools.ClientUtility.Client.GetDataSet(clientInfo, AssemblyName, TableName, packetInfo);
        StringReader reader = new StringReader(xml);
        var dataSet = new DataSet();
        dataSet.ReadXml(reader, XmlReadMode.Auto);
        return dataSet;
    }
示例#4
0
 /// <summary>
 /// 取主档数据笔数
 /// </summary>
 public int GetDataCount(string whereString)
 {
     var clientInfo = EFClientTools.ClientUtility.ClientInfo;
     var packetInfo = new EFClientTools.EFServerReference.PacketInfo()
     {
         OrderParameters = new List<EFClientTools.EFServerReference.OrderParameter>(),
         WhereParameters = new List<EFClientTools.EFServerReference.WhereParameter>(),
         WhereString = whereString
     };
     return EFClientTools.ClientUtility.Client.GetDataCount(clientInfo, AssemblyName, CommandName, packetInfo);
 }
示例#5
0
 public EFClientTools.EFServerReference.LockStatus DoRecordLock(Dictionary<string, object> row, EFClientTools.EFServerReference.LockType type)
 {
     var clientInfo = EFClientTools.ClientUtility.ClientInfo;
     var packetInfo = new EFClientTools.EFServerReference.PacketInfo()
     {
         OrderParameters = new List<EFClientTools.EFServerReference.OrderParameter>(),
         WhereParameters = new List<EFClientTools.EFServerReference.WhereParameter>(),
     };
     foreach (var item in row)
     {
         packetInfo.WhereParameters.Add(new EFClientTools.EFServerReference.WhereParameter() { And = true, Field = item.Key, Value = item.Value });
     }
     return EFClientTools.ClientUtility.Client.DoRecordLock(clientInfo, AssemblyName, CommandName, packetInfo, type);
 }
示例#6
0
        private DataSet GetDataSet()
        {
            var packetInfo = new EFClientTools.EFServerReference.PacketInfo()
            {
                StartIndex = LastIndex,
                Count = PacketRecords,
                OrderParameters = new List<EFServerReference.OrderParameter>(),
                WhereParameters = WhereParams,
                WhereString = Where
            };

            var clientInfo = EFClientTools.ClientUtility.ClientInfo;
            //clientInfo.IsSDModule = true;
            clientInfo.UseDataSet = true;
            if (string.IsNullOrEmpty(clientInfo.Solution))
            {
                clientInfo.Solution = PreviewSolution;
                clientInfo.Database = PreviewDatabase;
            }

            var dataSet = new DataSet();
            string xml = "";
            if (String.IsNullOrEmpty(SelectCommand))
            {
                var assemblyName = RemoteName.Split('.')[0];
                var commandName = RemoteName.Split('.')[1];
                xml = (string)EFClientTools.ClientUtility.Client.GetDataSet(clientInfo, assemblyName, commandName, packetInfo);
            }
            else
            {
                xml = (string)EFClientTools.ClientUtility.Client.ExecuteSQL(clientInfo, DBAlias, SelectCommand, packetInfo);
            }
            StringReader reader = new StringReader(xml);
            dataSet.ReadXml(reader, XmlReadMode.Auto);
            var count = dataSet.Tables[0].Rows.Count;
            LastIndex += count;
            return dataSet;
        }
示例#7
0
        public int GetRecordsCount()
        {
            if (String.IsNullOrEmpty(RemoteName))
                return 0;

            int i = 0;
            int iPos = RemoteName.IndexOf('.');
            if (iPos > 0)
            {
                var packetInfo = new EFClientTools.EFServerReference.PacketInfo()
                {
                    StartIndex = LastIndex,
                    Count = PacketRecords,
                    OrderParameters = new List<EFServerReference.OrderParameter>(),
                    WhereParameters = WhereParams,
                    WhereString = Where
                };
                string assemblyName = RemoteName.Substring(0, iPos);
                string commandName = RemoteName.Substring(iPos + 1);
                var clientInfo = EFClientTools.ClientUtility.ClientInfo;
                clientInfo.IsSDModule = true;
                clientInfo.UseDataSet = true;
                if (string.IsNullOrEmpty(clientInfo.Solution))
                {
                    clientInfo.Solution = PreviewSolution;
                    clientInfo.Database = PreviewDatabase;
                }
                i = EFClientTools.ClientUtility.Client.GetDataCount(clientInfo, assemblyName, commandName, packetInfo);
                //i = CliUtils.GetRecordsCount(sModule, sDataSet, strWhere, CliUtils.fCurrentProject);
            }

            return i;
            //return InnerDataSet.Tables[0].Rows.Count;
        }