📄 clsprocattfilter.cs
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.Windows.Forms;
using System.Collections;
using DevExpress.XtraEditors.Repository;
using dist.hb.EnvQueryStat.Pub;
namespace dist.hb.EnvQueryStat.StatSet
{
public class clsStatTemplateInfo
{
public string strAbstractStatName;//抽象统计名称;
public string strAttField;//属性字段
public string strAttNameField;//属性名称字段
public string strLayerName;//图层名称
public string strSpaceField;//空间字段
public string strSpaceNameField;//空间名称字段
public string strVName;//视图名称
}
public class clsFieldInfo
{
public int VFieldID;
public string FieldName;
public string FieldAias;
public string FieldType;
public string DICT;
public bool IsStat;
public bool IsFilter;
public bool IsOrder;
public bool IsMainField;
public bool IsUserVisible;
public bool IsGroup;
}
//处理属性过滤
public class clsProcAttFilter
{
#region "类对性初始化"
/// <summary>
/// 统计模板信息
/// </summary>
public clsStatTemplateInfo StatTemplateInfo;
public clsProcAttFilter()
{
StatTemplateInfo = new clsStatTemplateInfo();
htItemLookUp = new Hashtable();
}
~clsProcAttFilter()
{
}
/// <summary>
/// 属性过滤表
/// </summary>
public DataTable AttFilterTable
{
get { return m_AttFilterTable; }
}
private OleDbConnection m_OleDbConn;
public OleDbConnection OleDbConn
{
get { return m_OleDbConn; }
set
{
if (value == null) return;
if (value == m_OleDbConn) return;
m_OleDbConn = value;
}
}
private int m_nStatInstID;//统计ID
public int StatInstID
{
set
{
m_nStatInstID = value;
}
get
{
return m_nStatInstID;
}
}
private int m_nAbstractStatID;//统计模板ID
public int AbstractStatID
{
set
{
m_nAbstractStatID = value;
}
}
//以下函数处理属性过滤表
System.Data.OleDb.OleDbDataAdapter m_AttFilterDbDataAdapter;
System.Data.DataSet m_AttFilterDataSet;
public System.Data.DataTable m_AttFilterTable;//属性过滤表
string m_strAttFilterTbl = "FS_SAttFilter";
#endregion
#region "处理属性过滤表函数"
//处理数据加载
public void LoadAttFilterTable()
{
DataSet ds = new DataSet();
string strSQL;
strSQL = "SELECT SAFid,StatInstID,LeftBracket,Field,FieldName,relation,value1,RightBracket,logicSym,UserIsVisible "
+ "FROM " + m_strAttFilterTbl + " where StatInstID = " + m_nStatInstID.ToString();
m_AttFilterDbDataAdapter = new System.Data.OleDb.OleDbDataAdapter(strSQL, m_OleDbConn);
OleDbCommandBuilder custCB = new OleDbCommandBuilder(m_AttFilterDbDataAdapter);
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = m_OleDbConn;
//cmd.Transaction = m_tran;
cmd.CommandType = CommandType.Text;
cmd.CommandText = strSQL;
m_AttFilterDbDataAdapter.SelectCommand = cmd;
m_AttFilterDbDataAdapter.Fill(ds, m_strAttFilterTbl);
m_AttFilterDataSet = ds;
m_AttFilterTable = ds.Tables[m_strAttFilterTbl];
}
public void SaveAttFilterTable(int StatInstID)
{
m_nStatInstID = StatInstID;
try
{
DeleteAttFilterTable(StatInstID);//在执行前先删除。
//获取属性过滤表的最大值
int SAFid = clsDbPub.GetMaxValue(m_OleDbConn, m_strAttFilterTbl, "SAFid");
//要处理主键和外键的编辑
int i = 0;
foreach (DataRow row in m_AttFilterTable.Rows)
{
if (row.RowState == DataRowState.Deleted) continue;
i = i + 1;
row["StatInstID"] = StatInstID;
row["SAFid"] = SAFid + i;
}
if (m_AttFilterTable.Rows.Count <= 0) return;
SaveAttFilterTable(m_AttFilterTable.Rows);
//m_AttFilterDbDataAdapter.Update(m_AttFilterDataSet, m_strAttFilterTbl);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "提示");
}
}
private void SaveAttFilterTable(DataRowCollection drc)
{
DataSet ds = new DataSet();
string strSQL;
strSQL = "SELECT SAFid,StatInstID,LeftBracket,Field,FieldName,relation,value1,RightBracket,logicSym,UserIsVisible "
+ "FROM " + m_strAttFilterTbl + " where StatInstID = " + m_nStatInstID.ToString();
OleDbDataAdapter Adapter = new System.Data.OleDb.OleDbDataAdapter(strSQL, m_OleDbConn);
OleDbCommandBuilder custCB = new OleDbCommandBuilder(Adapter);
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = m_OleDbConn;
//cmd.Transaction = m_tran;
cmd.CommandType = CommandType.Text;
cmd.CommandText = strSQL;
Adapter.SelectCommand = cmd;
Adapter.Fill(ds, m_strAttFilterTbl);
DataTable dt = ds.Tables[m_strAttFilterTbl];
foreach (DataRow row in drc)
{
if (row.RowState == DataRowState.Deleted) continue;
dt.Rows.Add(row.ItemArray);
}
Adapter.Update(ds, m_strAttFilterTbl);
}
public void DeleteAttFilterTable(int StatInstID)
{
string strSQL;
strSQL = "DELETE FROM " + m_strAttFilterTbl + " WHERE StatInstID =" + StatInstID.ToString();
OleDbCommand command = new OleDbCommand(strSQL, m_OleDbConn);
command.ExecuteNonQuery();
command.Dispose();
}
public void DeleteAttFilterTable()
{
string strSQL;
strSQL = "DELETE FROM " + m_strAttFilterTbl + " WHERE StatInstID =" + m_nStatInstID.ToString();
OleDbCommand command = new OleDbCommand(strSQL, m_OleDbConn);
command.ExecuteNonQuery();
command.Dispose();
}
#endregion
#region "获取属性过滤字段信息"
//加载查询模板信息
public void LoadStatTemplateInfo()
{
string strSQL;
strSQL = "SELECT StatName, AttField,AttNameField, LayerName, SpaceField,SpaceNameField, VName " +
"FROM FS_AbstractStat INNER JOIN FS_VTable ON FS_AbstractStat.VTID = FS_VTable.VTID " +
"where AbstractStatID = " + m_nAbstractStatID.ToString();
OleDbConnection connection = new OleDbConnection(m_OleDbConn.ConnectionString);
connection.Open();
OleDbCommand command = new OleDbCommand(strSQL, connection);
OleDbDataReader reader = command.ExecuteReader();
if (!reader.HasRows) return;
if (reader.Read())
{
StatTemplateInfo.strAbstractStatName = ToStr(reader.GetValue(0));
StatTemplateInfo.strAttField = ToStr(reader.GetValue(1));
StatTemplateInfo.strAttNameField = ToStr(reader.GetValue(2));
StatTemplateInfo.strLayerName = ToStr(reader.GetValue(3));
StatTemplateInfo.strSpaceField = ToStr(reader.GetValue(4));
StatTemplateInfo.strSpaceNameField = ToStr(reader.GetValue(5));
StatTemplateInfo.strVName = ToStr(reader.GetValue(6));
}
reader.Close();
}
private string ToStr(object obj)
{
if (obj == null) return "";
else return obj.ToString();
return "";
}
//加载过滤字段信息
public System.Data.DataTable m_AttFilterFieldInfoTable;
public void LoadAttFilterFieldsInfo()
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -