⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ucabstractstatset.cs.svn-base

📁 以构建的方式来实现对通用的查询统计
💻 SVN-BASE
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using DevExpress.XtraEditors.Repository;

namespace dist.hb.EnvQueryStat.StatSet
{
  public partial class ucAbstractStatSet : UserControl
  {
    System.Data.OleDb.OleDbDataAdapter m_currentDbDataAdapter;
    System.Data.DataSet m_currentDataSet;
    string m_strTbl = "FS_StatSet";
    int m_nAbstractStatID = -1;
    int m_nVTid = -1;
    private OleDbConnection m_OleDbConn;

    public OleDbConnection OleDbConn
    {
      get { return m_OleDbConn; }
      set
      {
        if (value == null) return;
        if (value == m_OleDbConn) return;
        m_OleDbConn = value;
      }
    }

    public ucAbstractStatSet()
    {
      InitializeComponent();
    }

    private void panel1_Paint(object sender, PaintEventArgs e)
    {
    }

    private void btnInit_Click(object sender, EventArgs e)
    {
      //删除旧的记录
      DeleteOldTblContent(m_nAbstractStatID);
      BindField(m_nAbstractStatID);//重新绑定
      //重新填充
      DataTable tbl;
      tbl = m_currentDataSet.Tables[m_strTbl];
      if (tbl == null) return;

      AutoFillTbl(ref  tbl, m_nVTid, m_nAbstractStatID);
    }

    //提取抽象查询的字段
    private void AutoFillTbl(ref DataTable tbl, int nVTid, int nID)
    {
      DataTable dt = GetVTField(nVTid);
      if (dt == null) return;

      for (int i = 0; i < dt.Rows.Count; i++)
      {
        int nVTField = (int)dt.Rows[i].ItemArray[0];

        // AbstractStatID,VFieldID,IsStat,IsFilter,IsOrder,IsMainField,IsGroup FROM FS_QuerySet
        tbl.Rows.Add(new object[] { nID, nVTField, false, false, false, false,false });
      }

    }

    private DataTable GetVTField(int nVTID)
    {
      DataSet ds = new DataSet();
      string strSQL;
      OleDbDataAdapter adapter;

      strSQL = "SELECT VFieldID FROM FS_VTFieldDes WHERE VTID =" + nVTID.ToString();
      adapter = new System.Data.OleDb.OleDbDataAdapter(strSQL, m_OleDbConn);
      adapter.Fill(ds, "FS_VTFieldDes");
      return ds.Tables["FS_VTFieldDes"];
    }

    private string GetTypeName(int iType)
    {
      string typeName = Enum.GetName(typeof(OleDbType), iType);
      if (typeName.Contains("Char")) return "字符";
      else if (typeName.Contains("Double")) return "浮点";
      else if (typeName.Contains("Integer")) return "整形";
      else if (typeName.Contains("Time")) return "日期";
      else return "字符";
    }

    private void DeleteOldTblContent(int nID)
    {
      string strSQL;
      strSQL = "DELETE  FROM " + m_strTbl + " WHERE AbstractStatID =" + nID.ToString();
      OleDbCommand command = new OleDbCommand(strSQL, m_OleDbConn);
      command.ExecuteNonQuery();
      command.Dispose();
    }

    private void ucAbstractQueryField_Load(object sender, EventArgs e)
    {
      InitLookUp();
      RepositoryItemLookUpEdit lookUpProperties;
      lookUpProperties = lookUpEdit1.Properties;
      lookUpProperties.ShowLines = true;
      InitLookupData();

    }

    private void BindField(int nID)
    {
      DataSet ds = new DataSet();
      string strSQL;
      strSQL = "SELECT AbstractStatID,VFieldID,IsStat,IsFilter,IsOrder,IsMainField,IsUserVisible, IsGroup FROM FS_StatSet WHERE AbstractStatID =" + nID.ToString();
      m_currentDbDataAdapter = new System.Data.OleDb.OleDbDataAdapter(strSQL, m_OleDbConn);
      string strFillTbl = "FS_StatSet";

      OleDbCommandBuilder custCB = new OleDbCommandBuilder(m_currentDbDataAdapter);//起什么作用?
      OleDbCommand cmd = new OleDbCommand();

      cmd.Connection = m_OleDbConn;
      //cmd.Transaction = m_tran;
      cmd.CommandType = CommandType.Text;
      cmd.CommandText = strSQL;
      m_currentDbDataAdapter.SelectCommand = cmd;

      m_currentDbDataAdapter.Fill(ds, strFillTbl);
      gridControl1.DataSource = ds.Tables[strFillTbl];
      m_currentDataSet = ds;
    }

    private void btnSave_Click(object sender, EventArgs e)
    {
      try
      {
        m_currentDbDataAdapter.Update(m_currentDataSet, m_strTbl);
      }
      catch (Exception ex)
      {
        MessageBox.Show(ex.Message, "提示");
      }
    }

    //初始化虚表数据
    private void InitLookupData()
    {
      DataSet ds = new DataSet();
      System.Data.OleDb.OleDbDataAdapter dbAdapter = new System.Data.OleDb.OleDbDataAdapter(
        "SELECT StatName,AbstractStatID, VTID FROM FS_AbstractStat", m_OleDbConn);
      dbAdapter.Fill(ds, "FS_AbstractStat");
      DataViewManager dvm = new DataViewManager(ds);
      DataView dvLookup;

      dvLookup = dvm.CreateDataView(ds.Tables["FS_AbstractStat"]);

      // <lookUpEdit1>
      //lookUpEdit1.DataBindings.Add("EditValue", dvLookup, "VTID");
      lookUpEdit1.Properties.DataSource = dvLookup;
      lookUpEdit1.Properties.DisplayMember = "StatName";
      lookUpEdit1.Properties.ValueMember = "AbstractStatID";
      // </lookUpEdit1>

    }

    private void lookUpEdit1_Properties_EditValueChanged(object sender, EventArgs e)
    {
      if (lookUpEdit1.GetColumnValue("StatName") == null) return;
      if (lookUpEdit1.GetColumnValue("AbstractStatID") == null) return;
      if (lookUpEdit1.GetColumnValue("VTID") == null) return;
      m_nAbstractStatID = (int)lookUpEdit1.GetColumnValue("AbstractStatID");
      m_nVTid = (int)lookUpEdit1.GetColumnValue("VTID");

      BindField(m_nAbstractStatID);
      //MessageBox.Show("测试","消息");    }
    }

    private void btnDelete_Click(object sender, EventArgs e)
    {
      //删除旧的记录
      DeleteOldTblContent(m_nAbstractStatID);
      BindField(m_nAbstractStatID);//重新绑定    
    }

    //对GRID中的lookup进行初始化
    private void InitLookUp()
    {
      DataSet ds = new DataSet();
      string strSQL;
      strSQL = "SELECT VFieldID,FieldAias FROM FS_VTFieldDes";
      OleDbDataAdapter Adapter = new System.Data.OleDb.OleDbDataAdapter(strSQL, m_OleDbConn);

      Adapter.Fill(ds, "FS_VTFieldDes");
      DataTable dt = ds.Tables["FS_VTFieldDes"];
      repositoryItemLookUpEdit1.DataSource = dt;
      repositoryItemLookUpEdit1.DisplayMember = "FieldAias";
      repositoryItemLookUpEdit1.ValueMember = "VFieldID";
    }


  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -