Esempio n. 1
0
        private void btnDelete_Click(object sender, EventArgs e)
        {
            Exception ex = null;

            if (dataGridViewX1.CurrentRow == null)
            {
                MessageBox.Show("请选择要删除的方案!", "提示");
                return;
            }
            string ID = dataGridViewX1.CurrentRow.Cells["ID"].Value.ToString();

            SysCommon.Gis.SysGisTable table = new SysCommon.Gis.SysGisTable(Plugin.ModuleCommon.TmpWorkSpace);
            bool t = table.DeleteRows("customstatistics", "id='" + ID + "'", out ex);

            if (t)
            {
                MessageBox.Show("成功删除统计方案!", "提示");
                dataGridViewX1.Rows.Remove(dataGridViewX1.CurrentRow);
                dataGridViewX1.Refresh();
                // RefreshDataGridview();
                return;
            }
            else
            {
                MessageBox.Show("删除统计方案失败!", "提示");
            }
        }
Esempio n. 2
0
        //根据成果类型获取共享目录  ygc 2012-9-6
        private string GetSharedPath(string DataType)
        {
            if (m_Workspace == null)
            {
                return(null);
            }
            SysCommon.Gis.SysGisTable sysTable = new SysCommon.Gis.SysGisTable(m_Workspace);
            Exception ex = null;
            Dictionary <string, object> newdic = new Dictionary <string, object>();

            try
            {
                newdic = sysTable.GetRow("RESULTDIR", "PATHNAME='" + DataType + "'", out ex);
            }
            catch
            {
            }
            if (newdic == null)
            {
                return(null);
            }
            if (newdic.Count == 0)
            {
                return(null);
            }
            return(newdic["DATADIR"].ToString());
        }
Esempio n. 3
0
        private bool DisplayUniqueValue(string strFieldName)
        {
            this.listViewValue.Items.Clear();
            if (!File.Exists(SysCommon.ModField._MatchFieldValuepath))
            {
                return(false);
            }
            //读取配置文件
            XmlDocument pXmldoc = new XmlDocument();

            pXmldoc.Load(SysCommon.ModField._MatchFieldValuepath);
            string  strSearch = "//MatchFieldConfig/Field[@FieldName='" + strFieldName + "']";
            XmlNode pNode     = pXmldoc.SelectSingleNode(strSearch);

            if (pNode == null)
            {
                return(false);
            }
            string strTableName = pNode.Attributes["TableName"].Value.ToString();

            SysCommon.Gis.SysGisTable sysTable = new SysCommon.Gis.SysGisTable(m_Workspace);
            Exception exError = null;
            List <Dictionary <string, object> > lstDicData = sysTable.GetRows(strTableName, "", out exError);

            if (lstDicData == null)
            {
                return(false);
            }
            try
            {
                if (lstDicData.Count > 0)
                {
                    for (int i = 0; i < lstDicData.Count; i++)
                    {
                        string strName      = "";
                        string strAliasName = "";
                        if (lstDicData[i]["CODE"] != null)
                        {
                            strName = lstDicData[i]["CODE"].ToString();
                        }
                        if (lstDicData[i]["NAME"] != null)
                        {
                            strAliasName = lstDicData[i]["NAME"].ToString();
                        }
                        //将属性名及别名添加到字典中
                        if ((!strName.Equals("")) && (!strAliasName.Equals("")))
                        {
                            ListViewItem newItem = new ListViewItem(new string[] { strName + "[" + strAliasName + "]" });
                            newItem.Tag = strName;
                            this.listViewValue.Items.Add(newItem);
                        }
                    }
                    return(true);
                }
            }
            catch
            { }
            return(false);
        }
Esempio n. 4
0
        private bool GetExist(string tableName, string condition)
        {
            //List<string> newList = new List<string>();
            //if (m_pWorkspace == null) return newList;
            //DropTable("tempTable");
            //m_pWorkspace.ExecuteSQL("create table tempTable as select " + Key + " from " + tableName + " where " + condition );
            //IFeatureWorkspace pWs = m_pWorkspace as IFeatureWorkspace;
            //ITable pTable = pWs.OpenTable("tempTable");
            //ICursor pCursor = pTable.Search(null ,false);
            //try
            //{
            //    if (pCursor != null)
            //    {
            //        IRow row = pCursor.NextRow();
            //        while (row != null)
            //        {
            //            newList.Add(row.get_Value(0).ToString());
            //            row = pCursor.NextRow();
            //        }

            //    }
            //}
            //catch (Exception ex)
            //{
            //    MessageBox.Show(ex.ToString());
            //}
            //finally
            //{
            //    DropTable("tempTable");
            //    if (pCursor != null)
            //    {
            //        System.Runtime.InteropServices.Marshal.ReleaseComObject(pCursor);
            //    }
            //}
            //return newList;
            bool bExist = false;

            SysCommon.Gis.SysGisTable pTable = new SysCommon.Gis.SysGisTable(m_pWorkspace);
            try
            {
                if (pTable.ExistData(tableName, condition))
                {
                    bExist = true;
                }
            }
            catch (System.Exception ex)
            {
                bExist = false;
            }

            pTable = null;
            return(bExist);
        }
Esempio n. 5
0
        private bool AddRow(string tableName, string layerID, string longinUser, int isshare, string solutionName, string condition, string description, string Layername)
        {
            //bool falg = false;
            //if (m_pWorkspace == null) return falg;
            //string SQLstring = "insert into " + tableName + " (layerid,longinuser,isshare,solutionname,condition,description,layername) values('" + layerID + "','" + longinUser + "', " + isshare + " , '" + solutionName + "','" + condition + "','" + description + "','"+Layername+"')";
            //try
            //{
            //    m_pWorkspace.ExecuteSQL(SQLstring);
            //    falg = true;
            //}
            //catch (Exception ex)
            //{
            //    MessageBox.Show(ex.ToString());
            //}
            //return falg;
            bool flag = false;

            SysCommon.Gis.SysGisTable   sysTable = new SysCommon.Gis.SysGisTable(m_pWorkspace);
            Dictionary <string, object> dicData  = new Dictionary <string, object>();

            dicData.Add("layerid", layerID);
            dicData.Add("longinuser", longinUser);
            dicData.Add("isshare", isshare);
            dicData.Add("solutionname", solutionName);
            dicData.Add("condition", condition);
            dicData.Add("description", description);
            dicData.Add("layername", Layername);
            try
            {
                Exception exError = null;
                if (!sysTable.NewRow(tableName, dicData, out exError))
                {
                    flag = false;
                }
                else
                {
                    flag = true;
                }
            }
            catch (System.Exception ex)
            {
                flag = false;
            }

            dicData.Clear();
            dicData  = null;
            sysTable = null;
            return(flag);
        }
Esempio n. 6
0
        private string GetRegionName(string RegionCode)
        {
            string RegionName = RegionCode;

            SysCommon.Gis.SysGisTable pTable = new SysCommon.Gis.SysGisTable(Plugin.ModuleCommon.TmpWorkSpace);
            Exception err     = null;
            object    objName = pTable.GetFieldValue("行政区字典表", "NAME", "CODE='" + RegionCode + "'", out err);

            pTable = null;
            if (objName != null)
            {
                RegionName = objName.ToString();
            }
            return(RegionName);
        }
Esempio n. 7
0
        /// <summary>
        /// 从系统表中删除该条记录
        /// </summary>
        /// <param name="strTableName">表名</param>
        /// <param name="condition">查询条件</param>
        /// <returns></returns>
        public bool DeleteTableRow(string strTableName, string condition)
        {
            Exception exError = null;
            bool      Bdelete = true;

            SysCommon.Gis.SysGisTable sysTable = new SysCommon.Gis.SysGisTable(m_Workspace);
            if (sysTable.ExistData(strTableName, condition))
            {
                if (!sysTable.DeleteRows(strTableName, condition, out exError))
                {
                    return(Bdelete = false);
                }
            }
            sysTable = null;
            return(Bdelete);
        }
Esempio n. 8
0
        /// <summary>
        /// 更新系统表的数据记录
        /// </summary>
        /// <param name="tablename"></param>
        /// <param name="condition"></param>
        /// <param name="dicValues"></param>
        /// <returns></returns>
        public bool UpTableRow(string tablename, string condition, Dictionary <string, object> dicValues)
        {
            Exception exError = null;
            bool      Bdelete = true;

            SysCommon.Gis.SysGisTable sysTable = new SysCommon.Gis.SysGisTable(m_Workspace);
            if (sysTable.ExistData(tablename, condition))
            {
                return(Bdelete = sysTable.UpdateRow(tablename, condition, dicValues, out exError));
            }
            else
            {
                Bdelete = false;
            }
            sysTable = null;
            return(Bdelete);
        }
Esempio n. 9
0
        private void bttOpen_Click(object sender, EventArgs e)
        {
            DataGridViewSelectedRowCollection pSelectedRowC = dataGridVRe.SelectedRows;

            if (pSelectedRowC.Count != 1)
            {
                MessageBox.Show("请选中一条相关的记录再进行查看操作!", "提示!"); return;
            }
            string strPath   = dataGridVRe.Rows[pSelectedRowC[0].Index].Cells["CumFilePath"].Value.ToString();
            string DataType  = dataGridVRe.Rows[pSelectedRowC[0].Index].Cells["CmnType"].Value.ToString();
            string ShardPath = GetSharedPath(DataType);

            if (ShardPath == null)
            {
                MessageBox.Show("业务库中不存在该共享目录!", "提示"); return;
            }
            SysCommon.Gis.SysGisTable sysTable = new SysCommon.Gis.SysGisTable(m_Workspace);
            Exception ex = null;

            if (!Directory.Exists(ShardPath))
            {
                Dictionary <string, object> dicDataRow = new Dictionary <string, object>();
                dicDataRow = sysTable.GetRow("RESULTDIR", "PATHNAME='" + DataType + "'", out ex);
                bool t = Connect(dicDataRow["COMPUTERIP"].ToString(), dicDataRow["USER_"].ToString(), dicDataRow["PASSWORD_"].ToString());
            }

            if (!Directory.Exists(ShardPath))
            {
                MessageBox.Show("无法连接到成果目录", "提示");
                return;
            }

            if (!File.Exists(strPath))
            {
                MessageBox.Show("成果数据目录已被损坏!", "提示!"); return;
            }
            System.Diagnostics.Process.Start(strPath);
        }
Esempio n. 10
0
        private void bttCK_Click(object sender, EventArgs e)
        {
            try
            {
                string[]         strMapNo     = GetMapNo().Split(new char[] { ',' });
                IList <IFeature> pListFeature = new List <IFeature>();
                if (strMapNo == null)
                {
                    return;
                }
                Exception eError;
                string    NodeKey = "";
                if (strMapNo[0].Length == 3)//1:100万 接图表NodeKey
                {
                    NodeKey = "61073218-927f-4eba-a245-e6e59a121a5e";
                }
                else
                {
                    switch (strMapNo[0].ToString().Substring(3, 1).ToUpper())
                    {
                    case "C":    //1:25万 接图表NodeKey
                        NodeKey = "610we218-927f-4eba-a245-e6e59a121a5e";
                        break;

                    case "E":                                             //1:5万 接图表NodeKey
                        NodeKey = "c113ac32-14ce-44f6-83b2-c5e0322ef8f9"; //不同比例尺的接图表的ID号
                        break;
                    }
                }
                XmlDocument xmldoc = new XmlDocument();
                xmldoc.Load(_layerTreePath);
                SysCommon.Gis.SysGisTable sysTable = new SysCommon.Gis.SysGisTable(m_WS);
                string     strSearch = "//Layer[@NodeKey='" + NodeKey.ToString() + "']";
                XmlNode    pxmlnode  = xmldoc.SelectSingleNode(strSearch);
                XmlElement pxmlele   = pxmlnode as XmlElement;
                if (pxmlnode == null)
                {
                    return;
                }
                string strDataSourceID = pxmlele.GetAttribute("ConnectKey");
                string feaclscode      = pxmlele.GetAttribute("Code");
                object objDataSource   = sysTable.GetFieldValue("DATABASEMD", "DATABASENAME", "ID=" + strDataSourceID, out eError);
                string DataSourcename  = "";
                if (objDataSource != null)
                {
                    DataSourcename = objDataSource.ToString();
                }
                string conninfostr = "";
                int    type        = -1;
                object objconnstr  = sysTable.GetFieldValue("DATABASEMD", "CONNECTIONINFO", "ID=" + strDataSourceID, out eError);
                object objType     = sysTable.GetFieldValue("DATABASEMD", "DATAFORMATID", "DATABASENAME='" + DataSourcename + "'", out eError);
                if (objconnstr != null)
                {
                    conninfostr = objconnstr.ToString();
                }
                if (objType != null)
                {
                    type = int.Parse(objType.ToString());
                }
                //连接并获得目录数据库
                IWorkspace pWorkspace = GetWorkSpacefromConninfo(conninfostr, type);
                if (pWorkspace == null)
                {
                    return;
                }
                IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
                IFeatureClass     pFeatureClass     = pFeatureWorkspace.OpenFeatureClass(feaclscode);
                if (pFeatureClass == null)
                {
                    return;
                }
                for (int i = 0; i < strMapNo.Length; i++)
                {
                    IQueryFilter   pQueryFilter   = new QueryFilterClass();
                    IFeature       pFeature       = null;
                    IFeatureCursor pFeatureCursor = null;
                    pQueryFilter.WhereClause = "MAP='" + strMapNo[i] + "'";
                    pFeatureCursor           = pFeatureClass.Search(pQueryFilter, false);
                    pFeature = pFeatureCursor.NextFeature();
                    while (pFeature != null)
                    {
                        pListFeature.Add(pFeature);
                        pFeature = pFeatureCursor.NextFeature();
                    }
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatureCursor);
                }

                IGeometry pGeometry = GetLyrUnionPlygon(pListFeature);
                if (pGeometry == null)
                {
                    MessageBox.Show("不存在相关图幅信息,请认真核对图幅信息!", "提示!"); return;
                }
                this.WindowState    = FormWindowState.Minimized;
                m_MapControl.Extent = pGeometry.Envelope;
                m_MapControl.ActiveView.Refresh();
            }
            catch { }
        }
Esempio n. 11
0
        /// <summary>
        /// 得到Renderer从数据库中
        /// </summary>
        /// <returns></returns>
        public static object GetRendererFromBlob(string sql, IWorkspace pConfigWks)
        {
            Exception err = null;

            SysCommon.Gis.IGisTable pGISTable = new SysCommon.Gis.SysGisTable(pConfigWks);

            //获取Renderer
            byte[] renderByte = pGISTable.GetFieldValue("Render", "Render", sql, out err) as byte[];

            //是否得到了序列化的blob,没得到,则返回NULL
            if (renderByte == null)
            {
                return(null);
            }

            IMemoryBlobStreamVariant pMemoryBlobStreamVariant = new MemoryBlobStreamClass();

            pMemoryBlobStreamVariant.ImportFromVariant((object)renderByte);
            IStream pStream = pMemoryBlobStreamVariant as IStream;

            //从数据库中得到符号的类型  shduan 20110721 增加RasterRenderer
            string strRenderType = pGISTable.GetFieldValue("Render", "RenderType", sql, out err).ToString();
            string strLyrType    = pGISTable.GetFieldValue("Render", "LayerType", sql, out err).ToString();

            if (strLyrType == "RasterLayer")
            {
                IRasterRenderer pRRenderer = null;
                switch (strRenderType)
                {
                case "RasterClassifyColorRampRenderer":
                    pRRenderer = new RasterClassifyColorRampRendererClass();
                    break;

                case "RasterUniqueValueRenderer":
                    pRRenderer = new RasterUniqueValueRendererClass();
                    break;

                case "RasterDiscreteColorRenderer":
                    pRRenderer = new RasterDiscreteColorRendererClass();
                    break;

                case "RasterRGBRenderer":
                    pRRenderer = new RasterRGBRendererClass();
                    break;

                case "RasterStretchColorRampRenderer":
                    pRRenderer = new RasterStretchColorRampRendererClass();
                    break;
                }
                IPersistStream pPersistStream = pRRenderer as IPersistStream;
                pPersistStream.Load(pStream);
                //pRRenderer = pPersistStream as IRasterRenderer;

                return(pRRenderer);
            }
            else
            {
                IFeatureRenderer pFRenderer = null;
                switch (strRenderType)
                {
                case "AnnoColor":
                    string sAnnoColor = Encoding.Default.GetString(renderByte);
                    return((object)sAnnoColor);

                case "SimpleRenderer":
                    pFRenderer = new SimpleRendererClass();
                    break;

                case "UniqueValueRenderer":
                    pFRenderer = new UniqueValueRendererClass();
                    break;

                case "ClassBreaksRenderer":
                    pFRenderer = new ClassBreaksRendererClass();
                    break;

                case "ProportionalSymbolRenderer":
                    pFRenderer = new ProportionalSymbolRendererClass();
                    break;

                case "ChartRenderer":
                    pFRenderer = new ChartRendererClass();
                    break;
                }
                IPersistStream pPersistStream = pFRenderer as IPersistStream;
                pPersistStream.Load(pStream);
                pFRenderer = pPersistStream as IFeatureRenderer;

                return(pFRenderer);
            }
        }
Esempio n. 12
0
        //从数据库中读取图层设置
        public static object GetLayerConfigFromBlob(string sql, IWorkspace pConfigWks)
        {
            Exception err = null;

            SysCommon.Gis.IGisTable pGISTable = new SysCommon.Gis.SysGisTable(pConfigWks);

            //获取Layer
            byte[] LayerByte = pGISTable.GetFieldValue("Render", "LayerConfig", sql, out err) as byte[];

            //是否得到了序列化的blob,没得到,则返回NULL
            if (LayerByte == null)
            {
                return(null);
            }
            //从数据库中得到图层的类型
            string strLayerType = pGISTable.GetFieldValue("Render", "LayerType", sql, out err).ToString();

            ILayer pLayer = null;

            if (strLayerType == "" || strLayerType == null)
            {
                return(null);
            }
            switch (strLayerType)
            {
            case "FDOGraphicsLayer":        //注记层
                pLayer = new FDOGraphicsLayerClass();
                break;

            case "DimensionLayer":          //标注层
                pLayer = new DimensionLayerClass();
                break;

            case "GdbRasterCatalogLayer":           //影像层(RC)
                pLayer = new GdbRasterCatalogLayerClass();
                break;

            case "RasterLayer":             //影像数据集(RD)
                pLayer = new RasterLayerClass();
                break;

            case "FeatureLayer":            //普通地物层
                pLayer = new FeatureLayerClass();
                break;

            default:
                pLayer = new FeatureLayerClass();
                break;
            }
            IMemoryBlobStreamVariant pMemoryBlobStreamVariant = new MemoryBlobStreamClass();

            pMemoryBlobStreamVariant.ImportFromVariant((object)LayerByte);
            IStream pStream = pMemoryBlobStreamVariant as IStream;

            if (pLayer != null && pStream != null)
            {
                IPersistStream pPersistStream = pLayer as IPersistStream;
                try
                {
                    pPersistStream.Load(pStream);
                }
                catch
                {
                    return(null);
                }
                pLayer = pPersistStream as ILayer;
            }
            return(pLayer);
        }
Esempio n. 13
0
        private void AddTable(ESRI.ArcGIS.Geodatabase.IWorkspace pWks, string strTableName)
        {
            SysCommon.Gis.SysGisTable pGisTable = new SysCommon.Gis.SysGisTable(pWks);

            Exception eError = null;

            IFields     pFields     = new FieldsClass();
            IFieldsEdit pFieldsEdit = pFields as IFieldsEdit;
            IField      pField      = new FieldClass();
            IFieldEdit  pEdit       = pField as IFieldEdit;

            pEdit.Name_2      = "ID";
            pEdit.AliasName_2 = "ID";
            pEdit.Type_2      = esriFieldType.esriFieldTypeOID;
            //pEdit.Length_2 = 50;
            pFieldsEdit.AddField(pField);

            pField            = new FieldClass();
            pEdit             = pField as IFieldEdit;
            pEdit.Name_2      = "Code";
            pEdit.AliasName_2 = "±àÂë";
            pEdit.Type_2      = esriFieldType.esriFieldTypeString;
            pEdit.Length_2    = 50;
            pFieldsEdit.AddField(pField);

            pField            = new FieldClass();
            pEdit             = pField as IFieldEdit;
            pEdit.Name_2      = "Name";
            pEdit.AliasName_2 = "Ãû³Æ";
            pEdit.Type_2      = esriFieldType.esriFieldTypeString;
            pEdit.Length_2    = 255;
            pFieldsEdit.AddField(pField);
            try
            {
                pGisTable.CreateTable(strTableName, pFields, out eError);
            }
            catch
            { }
            pGisTable = null;

            string      strInitXmlPath = Application.StartupPath + "\\..\\Res\\Xml\\DataTreeInitIndex.xml";
            XmlDocument xmldoc         = new XmlDocument();

            if (File.Exists(strInitXmlPath))
            {
                xmldoc.Load(strInitXmlPath);
                string  strSearch = "//Main/Childset/Itemset[@ItemName=" + "'Êý¾Ý×Öµä'" + "]";
                XmlNode xmlNode   = xmldoc.SelectSingleNode(strSearch);
                if (xmlNode != null)
                {
                    XmlElement childele = xmldoc.CreateElement("Layer");

                    childele.SetAttribute("tblName", strTableName);
                    childele.SetAttribute("ItemName", strTableName);
                    childele.SetAttribute("Caption", "");
                    xmlNode.AppendChild(childele as XmlNode);
                    xmldoc.Save(strInitXmlPath);
                }
            }
            xmldoc = null;
        }
Esempio n. 14
0
        public static void ImportTextToTable(string strFileName, string strTablename, bool isCovered)
        {
            SysCommon.CProgress vProgress = new SysCommon.CProgress("进度条");
            vProgress.EnableCancel    = false;
            vProgress.ShowDescription = true;
            vProgress.FakeProgress    = false;
            vProgress.TopMost         = true;
            //vProgress.MaxValue = 5;
            vProgress.ShowProgress();
            vProgress.SetProgress("导入Text文档");
            IFeatureWorkspace pFeatureWks = null;
            ITable            pTable      = null;

            try
            {
                pFeatureWks = Plugin.ModuleCommon.TmpWorkSpace as IFeatureWorkspace;
                pTable      = pFeatureWks.OpenTable(strTablename);
            }
            catch
            {
                vProgress.Close();
                return;
            }
            if (pTable == null)
            {
                vProgress.Close();
                return;
            }
            if (!System.IO.File.Exists(strFileName))
            {
                vProgress.Close();
                return;
            }
            ///记录读取txt中的字段名称
            List <string> pLstFieldName = new List <string>();
            ///记录一行字段存储的字段值与字段名一一对应
            List <string[]> pLstFieldValue = new List <string[]>();
            ///记录读取txt的第几行
            int iNum = 1;

            using (System.IO.StreamReader sr = System.IO.File.OpenText(strFileName))
            {
                String input;
                while ((input = sr.ReadLine()) != null)
                {
                    string[] strValue = input.Split('\t');
                    if (iNum == 1)
                    {
                        for (int i = 0; i < strValue.Length; i++)
                        {
                            pLstFieldName.Add(strValue[i]);
                        }
                    }
                    else if (strValue.Length != 0)
                    {
                        pLstFieldValue.Add(strValue);
                    }
                    iNum++;
                }
            }
            Dictionary <string, object> pDic = new Dictionary <string, object>();

            SysCommon.Gis.SysGisTable pSystable = new SysCommon.Gis.SysGisTable(Plugin.ModuleCommon.TmpWorkSpace);
            Exception eError = null;

            try
            {
                if (isCovered)
                {
                    vProgress.SetProgress("清除'" + strTablename + "'中记录");
                    pSystable.DeleteRows(strTablename, "", out eError);
                }
                vProgress.MaxValue = pLstFieldValue.Count;
                vProgress.SetProgress("将Text文档中内容写入'" + strTablename + "'");
                pSystable.StartTransaction(out eError);
                for (int j = 0; j < pLstFieldValue.Count; j++)
                {
                    vProgress.Step = j + 1;
                    pDic.Clear();
                    try
                    {
                        for (int n = 0; n < pLstFieldName.Count; n++)
                        {
                            pDic.Add(pLstFieldName[n].ToString(), pLstFieldValue[j][n].ToString());
                        }
                        pSystable.NewRowByAliasName(strTablename, pDic, out eError); //shduan 20110730暂时屏蔽
                    }
                    catch { }
                }
                pSystable.EndTransaction(true, out eError);
                vProgress.Close();
            }
            catch
            {
                MessageBox.Show("导入失败请查看txt文档格式是否正确!", "提示!");
                vProgress.Close();
            }
        }
Esempio n. 15
0
        //added by chulili 20110715
        //导入excel文件,内容写入数据字典所选表格中
        //excel文件第一行对应表格的字段名称(别名),第二行开始是记录内容
        public static void ImportExcelToTable(string strFilename, string strTablename, bool isCovered)
        {
            SysCommon.CProgress vProgress = new SysCommon.CProgress("进度条");
            vProgress.EnableCancel    = false;
            vProgress.ShowDescription = true;
            vProgress.FakeProgress    = false;
            vProgress.TopMost         = true;
            vProgress.MaxValue        = 5;
            vProgress.ShowProgress();
            vProgress.SetProgress("导入Excel表格");
            IFeatureWorkspace pFeatureWks = null;
            ITable            pTable      = null;

            try
            {
                pFeatureWks = Plugin.ModuleCommon.TmpWorkSpace as IFeatureWorkspace;
                pTable      = pFeatureWks.OpenTable(strTablename);
            }
            catch
            {
                vProgress.Close();
                return;
            }
            if (pTable == null)
            {
                vProgress.Close();
                return;
            }
            string strConn;

            vProgress.SetProgress(1, "打开Excel文件");
            strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + strFilename + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'";
            OleDbConnection conn = new OleDbConnection(strConn);

            conn.Open();
            //获取EXCEL文件内工作表名称  added by chulili 20110924
            DataTable dt        = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
            string    SheetName = "Sheet1$";

            if (dt != null)
            {
                if (dt.Rows.Count > 0)
                {
                    SheetName = dt.Rows[0][2].ToString();//默认取第一张工作表
                }
            }
            dt = null;
            OleDbCommand    pCommand = null;
            OleDbDataReader pReader  = null;

            try
            {
                vProgress.SetProgress("读取Excel文件表格内容");
                pCommand = new OleDbCommand("SELECT * FROM [" + SheetName + "]", conn);
                pReader  = pCommand.ExecuteReader();
            }
            catch
            {
                conn.Close();
                vProgress.Close();
                return;
            }
            if (pReader == null)
            {
                conn.Close();
                vProgress.Close();
                return;
            }
            //Dictionary<int, int> pDicFieldname = new Dictionary<int, int>();
            //for (int i = 0; i < pReader.FieldCount; i++)
            //{
            //    string strFieldname=pReader.GetName(i);
            //    int j = pTable.Fields.FindFieldByAliasName(strFieldname);
            //    pDicFieldname.Add(i, j);
            //}
            Dictionary <string, object> pDic = new Dictionary <string, object>();

            SysCommon.Gis.SysGisTable pSystable = new SysCommon.Gis.SysGisTable(Plugin.ModuleCommon.TmpWorkSpace);
            Exception eError = null;

            try
            {
                if (isCovered)
                {
                    vProgress.SetProgress("清除'" + strTablename + "'中记录");
                    pSystable.DeleteRows(strTablename, "", out eError);
                }
                vProgress.SetProgress("将Excel中表格内容写入'" + strTablename + "'");
                pSystable.StartTransaction(out eError);
                while (pReader.Read())
                {
                    pDic.Clear();
                    for (int i = 0; i < pReader.FieldCount; i++)
                    {
                        pDic.Add(pReader.GetName(i).Trim(), pReader[i].ToString());
                    }
                    pSystable.NewRowByAliasName(strTablename, pDic, out eError); //shduan 20110730暂时屏蔽
                }
                pSystable.EndTransaction(true, out eError);
                pReader.Close();
                conn.Close();
                vProgress.Close();
            }
            catch
            {
                pReader.Close();
                conn.Close();
                vProgress.Close();
            }
        }
Esempio n. 16
0
        private void bttModify_Click(object sender, EventArgs e)
        {
            DataGridViewSelectedRowCollection pSelectedRowC = dataGridVRe.SelectedRows;

            if (pSelectedRowC.Count != 1)
            {
                MessageBox.Show("请选中一条相关的记录再进行修改操作!", "提示!"); return;
            }
            string strPath   = dataGridVRe.Rows[pSelectedRowC[0].Index].Cells["CumFilePath"].Value.ToString();
            string DataType  = dataGridVRe.Rows[pSelectedRowC[0].Index].Cells["CmnType"].Value.ToString();
            string ShardPath = GetSharedPath(DataType);

            if (ShardPath == null)
            {
                MessageBox.Show("业务库中不存在该共享目录!", "提示"); return;
            }
            SysCommon.Gis.SysGisTable sysTable = new SysCommon.Gis.SysGisTable(m_Workspace);
            Exception ex = null;

            if (!Directory.Exists(ShardPath))
            {
                Dictionary <string, object> dicDataRow = new Dictionary <string, object>();
                dicDataRow = sysTable.GetRow("RESULTDIR", "PATHNAME='" + DataType + "'", out ex);
                bool t = Connect(dicDataRow["COMPUTERIP"].ToString(), dicDataRow["USER_"].ToString(), dicDataRow["PASSWORD_"].ToString());
            }

            if (!Directory.Exists(ShardPath))
            {
                MessageBox.Show("无法连接到成果目录", "提示");
                return;
            }
            if (!File.Exists(strPath))
            {
                MessageBox.Show("成果数据目录已被损坏!", "提示!"); return;
            }
            string strName = dataGridVRe.Rows[pSelectedRowC[0].Index].Cells["CumFileName"].Value.ToString();
            string strType = dataGridVRe.Rows[pSelectedRowC[0].Index].Cells["CmnType"].Value.ToString();

            FrmModifyName pFrmModifyName = new FrmModifyName(this, strPath);

            pFrmModifyName.strModifyValue = Path.GetFileNameWithoutExtension(strPath);
            if (pFrmModifyName.ShowDialog() == DialogResult.Cancel)
            {
                return;
            }
            ///重组修改后的文件名和文件路径
            m_ModifyName = m_ModifyName + Path.GetExtension(strPath);
            strPath      = Path.GetDirectoryName(strPath) + "\\" + m_ModifyName;
            Dictionary <string, object> dicData = new Dictionary <string, object>();

            dicData.Add("DATATYPE", strType);
            dicData.Add("DATANAME", m_ModifyName);
            dicData.Add("DATAPATH", strPath);

            ///更新系统表中得数据
            if (UpTableRow("RESULTLIST", "DATANAME='" + strName + "'", dicData))
            {
                ///文件进行重命名
                File.Move(dataGridVRe.Rows[pSelectedRowC[0].Index].Cells["CumFilePath"].Value.ToString(), strPath);
                dataGridVRe.Rows[pSelectedRowC[0].Index].Cells["CumFilePath"].Value = strPath;
                dataGridVRe.Rows[pSelectedRowC[0].Index].Cells["CumFileName"].Value = m_ModifyName;
                MessageBox.Show("修改成功!", "提示!");
            }
            else
            {
                MessageBox.Show("成果数据:" + dataGridVRe.Rows[pSelectedRowC[0].Index].Cells["CumFileName"].Value.ToString() + "修改失败!", "提示!");
            }
        }