ucunivqueryforpops.cs.svn-base

来自「以构建的方式来实现对通用的查询统计」· SVN-BASE 代码 · 共 488 行 · 第 1/2 页

SVN-BASE
488
字号
    }
    private void checkBoxAttFilter_CheckedChanged(object sender, EventArgs e)
    {
      bool check = checkBox_IsSpacial.Checked;
      gridControl1.Enabled = check;
    }
    private void btnQuery_Click(object sender, EventArgs e)
    {
      gridControl1.EmbeddedNavigator.Buttons.EndEdit.DoClick();
      string sql  = MakeSQL();
      clsDbPub.SaveTextToFile(sql);
      DataTable dt = ExecQuerySQL(sql);
      gridControl2.DataSource = dt;
      xtraTabControl1.SelectedTabPageIndex = 1;
      //gridView2.BestFitColumns();

    }

    private void btnExport_Click(object sender, EventArgs e)
    {
      if (saveFileDialog1.ShowDialog() == DialogResult.OK)
      {
        gridView2.ExportToXls(saveFileDialog1.FileName, true);
      }
      
    }
    private void btnExit_Click(object sender, EventArgs e)
    {
      if (MapQueryEnv == null) return;
      MapQueryEnv.WorkForm.Close();
    }
    private void gridControl2_MouseDown(object sender, MouseEventArgs e)
    {
      if (QueryPopupMenu == null) return;
      InitPopuMenu();//初始化右键弹出式菜单处理类
      DataRow row = gridView2.GetDataRow(gridView2.FocusedRowHandle);
      if (row == null) return;

      if (e.Button != MouseButtons.Right) return;
      Point pnt = new Point();
      pnt.X = e.X;
      pnt.Y = e.Y;
      pnt = gridControl2.PointToScreen(pnt);
      QueryPopupMenu.WebServerIP = WebServerIP;
      QueryPopupMenu.MapControl = MapQueryEnv.MapControl;
      QueryPopupMenu.QueryHelp = QueryHelp;
      QueryPopupMenu.ShowPopuMenu(pnt, row);
     //popupMenu1.ShowPopup(pnt);
    }//右键弹出式菜单处理类
    private void comboBoxQueryObject_SelectedIndexChanged(object sender, EventArgs e)
    {
      QueryHelp.QueryTemplateInfo.strLayerName = comboBoxQueryObject.SelectedItem.ToString();
      QueryHelp.QueryTemplateInfo.strSpaceField = clsGISPub.GetSpacialField(comboBoxQueryObject.SelectedItem.ToString());
      MapQueryEnv.QueryLayer = comboBoxQueryObject.SelectedItem.ToString();
    }

    #endregion

    #region "辅助处理函数"
    //查询环境初始化
    void InitMapQueryEnv()
    {
      MapQueryEnv.DbConn = m_OleDbConn;
      if (textEditBufferR.Text.Trim() == "") MapQueryEnv.BufferR = 0;
      else MapQueryEnv.BufferR = Convert.ToDouble(textEditBufferR.Text);//缓冲半径
      if(comboBoxUnit.SelectedIndex == 0) MapQueryEnv.unitType = UnitType.Screen;
      else MapQueryEnv.unitType = UnitType.Map;//单位类型
      MapQueryEnv.QueryLayer = QueryHelp.QueryTemplateInfo.strLayerName;//查询的图层
      MapQueryEnv.SpacialField = QueryHelp.QueryTemplateInfo.strSpaceField;//对应的空间字段
      MapQueryEnv.WorkForm = this.Parent as Form;//容器窗体
      MapQueryEnv.MapControl = m_MapControl;

      //选择类型
      string SpacialObj = comboBoxSpacialObj.SelectedItem.ToString();
      string SelOption = comboBox_SpacialOption.SelectedItem.ToString();
      if(SpacialObj ==  MAPSELECT_OBJECT.MAPSELECT_TEMP)//在地图上画点线面
      {
        MapQueryEnv.MapQueryMethod = MapQueryMethod.DRAW;
        if (SelOption == MAPDRAW_TYPE.MAPDRAW_POINT) MapQueryEnv.MapDraw = MAPDRAW.MAPDRAW_POINT;
        else if (SelOption == MAPDRAW_TYPE.MAPDRAW_LINE) MapQueryEnv.MapDraw = MAPDRAW.MAPDRAW_LINE;
        else if (SelOption == MAPDRAW_TYPE.MAPDRAW_POLYGON) MapQueryEnv.MapDraw = MAPDRAW.MAPDRAW_POLYGON;
        else if (SelOption == MAPDRAW_TYPE.MAPDRAW_CIRCLE) MapQueryEnv.MapDraw = MAPDRAW.MAPDRAW_CIRCLE;
        else MapQueryEnv.MapDraw = MAPDRAW.MAPDRAW_RECT;
    
      }
      else if (SpacialObj == MAPSELECT_OBJECT.MAPSELECT_SELECTION)//从图层上选择空间要素
      {
        MapQueryEnv.MapQueryMethod = MapQueryMethod.SELECT;
        MapQueryEnv.SelLayer = SelOption;//对应的图层名称
      }
      else//通过编码选择
      {
        MapQueryEnv.MapQueryMethod = MapQueryMethod.CODE;
        MapQueryEnv.SelLayer = SelOption;//编码对应的图层名称
        SpacialSel.m_MapQueryEnv = MapQueryEnv;
      }
      /////////////////////////////////////////////////////////////////////
      m_ToolQueryHelp.MapQueryEnv = MapQueryEnv;
      SpacialSel.m_MapQueryEnv = MapQueryEnv;
      m_ToolQueryHelp.SSel = SpacialSel;
    }
    //处理代码选择
    private void ProcCodeSelect()
    {
      if (MapQueryEnv.MapQueryMethod != MapQueryMethod.CODE) return;
      //特殊处理
      ArrayList aList = SpacialSel.QueryAreaCode();
      MapQueryEnv.arrayList = aList;
    }
    //附加的窗体初始化
    private void MyFormLoad()
    {
      comboBoxSpacialObj.Items.Clear();
      comboBoxSpacialObj.Items.Add(MAPSELECT_OBJECT.MAPSELECT_TEMP);
      //comboBoxSpacialObj.Items.Add(MAPSELECT_OBJECT.MAPSELECT_SELECTION);
      //comboBoxSpacialObj.Items.Add(MAPSELECT_OBJECT.MAPDRAW_XXQH);

      textEditBufferR.Text = "1";
      comboBoxUnit.SelectedIndex = 0;
      comboBoxSpacialObj.SelectedIndex = 0;
      label_SOption.Text = "代码级别";
      comboBox_SpacialOption.SelectedIndex = 0;
      comboBoxSpacialObj_SelectedIndexChanged(null, null);
    }

    private string GetSpacialFilter()
    {
      if (MapQueryEnv == null || QueryHelp == null) return "";
      if(MapQueryEnv.arrayList == null) return "";
      string AttField = QueryHelp.QueryTemplateInfo.strAttField;
      bool bStr = QueryHelp.IsStringType(AttField);
      if(MapQueryEnv.arrayList.Count == 0) return "";
      string items = "";
      for (int i = 0; i < MapQueryEnv.arrayList.Count; i++)
			{
        string item = MapQueryEnv.arrayList[i].ToString();
        if(bStr) item = "'" + item + "'";
        if(items == "") items = item;
        else items += "," + item;
			}
      return AttField + " in (" + items + ")";
    }

    private string MakeSQL()
    {
      if (AttFieldProc == null || QueryHelp ==null) return "";
      string SQL;
      string SpacialFilter = "";
      string AttFilter = "";
      if (checkBox_IsSpacial.Checked)//需要属性过滤
      {
        AttFilter = AttFieldProc.GetWhere();
      }
      if (checkBoxAttFilter.Checked)//需要空间过滤
      {
        SpacialFilter = GetSpacialFilter();
      }
      string View = QueryHelp.QueryTemplateInfo.strVName;//视图的名称
      string fields = AttFieldProc.GetSelectFields();//查询字段
      string order = AttFieldProc.GetOrderByFields();//排序字段
      string where =MakeWhere(SpacialFilter,AttFilter) ;

      if (order.Trim() == "") SQL = "select " + fields + " from " + View +" " + where ;
      else  SQL = "select " + fields + " from " + View + " " +where + " order by " + order;
      return SQL;
    }

    private string MakeWhere(string SpacialFilter, string AttFilter)
    {
      if (AttFilter.Trim() == "")
      {
        if (SpacialFilter.Trim() == "") return "";
        else return " where " + SpacialFilter;
      }
      else
      {
        if (SpacialFilter.Trim() == "") return "where " + AttFilter;
        else return " where " + SpacialFilter + " and " + AttFilter;

      }
    }

    private DataTable ExecQuerySQL(string sql)
    {
      DataSet ds = new DataSet();
      OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(sql, m_OleDbConn);
      string view = QueryHelp.QueryTemplateInfo.strVName;
      DataTable dt = null;
      try
      {
        adapter.Fill(ds, view);
        dt = ds.Tables[view];

      }
      catch (Exception e)
      {
        MessageBox.Show("打开查询失败!请检查SQL语句!!");
      }
      return dt;
    }
    private void InitExportGrid()
    {
      if (AttFieldProc == null || QueryHelp == null) return;
      ArrayList AList = AttFieldProc.GetSelectFields1();
      if (AList == null) return;
      gridView2.Columns.Clear();
      for (int i = 0; i < AList.Count; i++)
      {
        string field = AList[i].ToString();
        clsFieldInfo FieldInfo = QueryHelp.GetFieldInfo(field);
        MakeGridField(FieldInfo);
      }
    }
    private void  MakeGridField(clsFieldInfo FieldInfo)
    {
      if (FieldInfo == null) return;
      DevExpress.XtraGrid.Columns.GridColumn gColumn = gridView2.Columns.Add();
      gColumn.Caption = FieldInfo.FieldAias;
      gColumn.FieldName = FieldInfo.FieldName;
      gColumn.Name = "gridColumn_" + FieldInfo.FieldName;
      gColumn.OptionsFilter.AllowAutoFilter = false;
      gColumn.OptionsFilter.AllowFilter = false;
      gColumn.Width = 90;
      gColumn.MinWidth = 80;
      gColumn.Visible = true;
      gColumn.VisibleIndex = gridView2.Columns.Count;
    }

    //初始化右键弹出式菜单处理类
    private void InitPopuMenu()
    {
      if (QueryPopupMenu == null || m_ToolQueryHelp == null) return;
      QueryPopupMenu.dbConn = m_OleDbConn;
      QueryPopupMenu.barManager1 = barManager1;
      QueryPopupMenu.popupMenu1 = popupMenu1;
      QueryPopupMenu.AttFieldProc = AttFieldProc;
      QueryPopupMenu.AbstractQueryID = QueryHelp.QueryInstInfo.AbstractQueryID;//查询模板
    }
    #endregion


  }
}

⌨️ 快捷键说明

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