Esempio n. 1
0
        /// <summary>
        /// This method is responsible for translanting between coded domain names
        /// and their values, setting into UnderlyingObject the correct value.
        /// </summary>
        /// <remarks>
        /// Imagine a ICodedDomain like:
        /// 1 = "Alphanumeric"
        /// 2 = "Geographic"
        ///
        /// This method will aways set the value to 1 when passed
        /// "Alphanumeric"
        /// </remarks>
        /// <exception cref="ActiveRecrdAttributeException"></exception>
        /// <param name="wrapper"></param>
        /// <param name="propertyName"></param>
        /// <param name="displayValue"></param>
        /// <returns></returns>
        private static void SetDisplayValue(this IActiveRecord wrapper, FieldAttribute fieldAtt, string displayValue)
        {
            if (wrapper.UnderlyingObject == null)
            {
                FetchUnderlyingObject(wrapper);
            }

            if (!(fieldAtt is DomainFieldAttribute))
            {
                throw new ActiveRecordAttributeException(wrapper.GetType(), "O atributo não é tipo domínio.");
            }

            DomainFieldAttribute domainField = fieldAtt as DomainFieldAttribute;
            ICodedValueDomain    domain      = wrapper.UnderlyingObject.Fields.get_Field(domainField.Index).Domain as ICodedValueDomain;

            if (domain == null)
            {
                throw new ActiveRecordAttributeException(wrapper.GetType(), "Não foi possível localizar o domínio.");
            }

            for (var i = 0; i <= domain.CodeCount - 1; i++)
            {
                if (domain.get_Name(i) == displayValue)
                {
                    object codedValue = domain.get_Value(i);
                    wrapper.UnderlyingObject.set_Value(domainField.Index, codedValue);
                }
            }
        }
        public string GetDomainDisplay(string domain, object domainValu)
        {
            List <String>      listDomains = new List <string>();
            IDataset           dataset     = (IDataset)GetWorkspace;
            IWorkspaceDomains2 domains     = (IWorkspaceDomains2)dataset;
            ICodedValueDomain  dom         = null;

            try
            {
                dom = (ICodedValueDomain)domains.get_DomainByName(domain);
                for (int i = 0; i <= dom.CodeCount - 1; i++)
                {
                    if (dom.get_Value(i).Equals(domainValu))
                    {
                        return(dom.get_Name(i));
                    }
                }
            }
            catch (Exception ex)
            {
                //_log.Error("Ocorreu um problema ao tentar carregar os domínios do componente SegmentListComponent.");
            }
            finally
            {
                //if (domains != null)
                //    Marshal.ReleaseComObject(domains);

                //if (dom != null)
                //    Marshal.ReleaseComObject(dom);

                //Marshal.ReleaseComObject(dataset);
            }
            return("");
        }
Esempio n. 3
0
        private string GetCodedValueDomainValue(ICodedValueDomain pDomain, string domainDescription)
        {
            string result = "<Null>";

            for (int i = 0; i < pDomain.CodeCount; i++)
            {
                if (pDomain.get_Name(i) == domainDescription)
                {
                    result = pDomain.get_Value(i).ToString();
                    break;
                }
            }
            return(result);
        }
Esempio n. 4
0
 //复制工作空间坐标空间域
 private void CreateWorkspaceDomains(IWorkspace pWs1, IWorkspace pWs2)
 {
     try
     {
         WaitForm.SetCaption("正在复制工作空间域,请稍后...");
         IWorkspaceDomains pWsD1       = pWs1 as IWorkspaceDomains;
         IWorkspaceDomains pWsD2       = pWs2 as IWorkspaceDomains;
         IEnumDomain       pEnumDomain = pWsD1.Domains;
         IDomain           pDomain1    = null;
         IDomain           pDomain2    = null;
         if (pEnumDomain == null)
         {
             return;
         }
         while ((pDomain1 = pEnumDomain.Next()) != null)
         {
             if (pDomain1.Type == esriDomainType.esriDTCodedValue)//编码域
             {
                 ICodedValueDomain tempDomain1 = pDomain1 as ICodedValueDomain;
                 ICodedValueDomain tempDomain2 = new CodedValueDomainClass();
                 for (int i = 0; i < tempDomain1.CodeCount; i++)
                 {
                     tempDomain2.AddCode(tempDomain1.get_Value(i), tempDomain1.get_Name(i));
                 }
                 pDomain2             = tempDomain2 as IDomain;
                 pDomain2.Description = pDomain1.Description;
                 pDomain2.FieldType   = pDomain1.FieldType;
                 pDomain2.DomainID    = pDomain1.DomainID;
                 pDomain2.MergePolicy = pDomain1.MergePolicy;
                 pDomain2.Name        = pDomain1.Name;
                 pDomain2.Owner       = pDomain1.Owner;
                 pDomain2.SplitPolicy = pDomain1.SplitPolicy;
                 pWsD2.AddDomain(pDomain2);
             }
             else//范围域
             {
                 IRangeDomain tempDomain1 = pDomain1 as IRangeDomain;
                 IRangeDomain tempDomain2 = new RangeDomainClass();
                 tempDomain2.MaxValue = tempDomain1.MaxValue;
                 tempDomain2.MinValue = tempDomain1.MinValue;
                 pDomain2             = tempDomain2 as IDomain;
                 pWsD2.AddDomain(pDomain2);
             }
         }
     }
     catch (System.Exception ex)
     {
         return;
     }
 }
Esempio n. 5
0
        /// <summary>
        /// This method is responsible for translating between coded domain values
        /// and their names, returning the correct name.
        /// </summary>
        /// Imagine a ICodedDomain like:
        /// 1 = "Alphanumeric"
        /// 2 = "Geographic"
        ///
        /// This method will always return "Alphanumeric" for the value 1,
        /// fetched from UnderlyingObject
        /// </remarks>
        /// <exception cref="ActiveRecrdAttributeException"></exception>
        /// <param name="wrapper">IActiveRecord</param>
        /// <param name="propertyName">string</param>
        /// <returns>string</returns>
        private static string GetDisplayValue(this IActiveRecord wrapper, FieldAttribute fieldAtt)
        {
            if (wrapper.UnderlyingObject == null)
            {
                FetchUnderlyingObject(wrapper);
            }

            if (!(fieldAtt is DomainFieldAttribute))
            {
                throw new ActiveRecordAttributeException(wrapper.GetType(), "Não é possível obter o atributo de domínio.");
            }

            DomainFieldAttribute domainField = fieldAtt as DomainFieldAttribute;
            ICodedValueDomain    domain      = wrapper.UnderlyingObject.Fields.get_Field(domainField.Index).Domain as ICodedValueDomain;

            if (domain == null)
            {
                throw new ActiveRecordAttributeException(wrapper.GetType(),
                                                         String.Format("Não foi possível localizar o domínio {0}.", domainField.DomainName));
            }

            string codedValue   = wrapper.UnderlyingObject.get_Value(domainField.Index).ToString();
            string displayValue = String.Empty;

            for (int i = 0; i <= domain.CodeCount - 1; i++)
            {
                if (domain.get_Value(i).ToString() == codedValue)
                {
                    displayValue = domain.get_Name(i);
                    break;
                }
            }

            if (displayValue == String.Empty)
            {
                return(codedValue);
            }
            else
            {
                return(displayValue);
            }
        }
        /// <summary>
        /// Used when the CodedValueDomain field is of Date type
        /// This function is used to construct a query string which when executed on the source Feature Class/Table will return the records that violate domain constraints.
        /// </summary>
        /// <param name="ipCodedDomain">Coded value domain applied to the Date type field whose attributes are getting validated</param>
        /// <param name="strFieldName">Name of the Date type field</param>
        /// <returns></returns>
        private string GetDateQueryStringForCodedDomain(ICodedValueDomain ipCodedDomain, string strFieldName)
        {
            if (null == ipCodedDomain || string.IsNullOrEmpty(strFieldName))
            {
                return("");
            }

            if (null == m_ipWorkspace)
            {
                return("");
            }

            string strQueryString = "";

            DatabaseType eDBType = GetDatabaseType(m_ipWorkspace);

            if (eDBType == DatabaseType.FGDB || eDBType == DatabaseType.SHAPEFILE)
            {
                if (ipCodedDomain.CodeCount > 0)
                {
                    strQueryString = strFieldName + " NOT IN (";
                    for (int i = 0; i < ipCodedDomain.CodeCount; i++)
                    {
                        if (i == 0)
                        {
                            strQueryString += "date '" + Convert.ToString(ipCodedDomain.get_Value(i)) + "'";
                        }
                        else
                        {
                            strQueryString += ", date '" + Convert.ToString(ipCodedDomain.get_Value(i)) + "'";
                        }
                    }
                    strQueryString += ")";
                }
            }
            else if (eDBType == DatabaseType.MDB)
            {
                if (ipCodedDomain.CodeCount > 0)
                {
                    strQueryString = strFieldName + " NOT IN (";
                    for (int i = 0; i < ipCodedDomain.CodeCount; i++)
                    {
                        if (i == 0)
                        {
                            strQueryString += "#" + Convert.ToString(ipCodedDomain.get_Value(i)) + "#";
                        }
                        else
                        {
                            strQueryString += ", #" + Convert.ToString(ipCodedDomain.get_Value(i)) + "#";
                        }
                    }
                    strQueryString += ")";
                }
            }
            else if (eDBType == DatabaseType.ORACLE)
            {
                if (ipCodedDomain.CodeCount > 0)
                {
                    strQueryString = strFieldName + " NOT IN (";
                    for (int i = 0; i < ipCodedDomain.CodeCount; i++)
                    {
                        DateTime dateTimeValue = Convert.ToDateTime(ipCodedDomain.get_Value(i));
                        string   strYear       = dateTimeValue.Year.ToString();

                        string strMonth = dateTimeValue.Month.ToString();
                        if (dateTimeValue.Month < 10)
                        {
                            strMonth = "0" + strMonth;
                        }

                        string strDay = dateTimeValue.Day.ToString();
                        if (dateTimeValue.Day < 10)
                        {
                            strDay = "0" + strDay;
                        }

                        string strHour = dateTimeValue.Hour.ToString();
                        if (dateTimeValue.Hour < 10)
                        {
                            strHour = "0" + strHour;
                        }

                        string strMin = dateTimeValue.Minute.ToString();
                        if (dateTimeValue.Minute < 10)
                        {
                            strMin = "0" + strMin;
                        }

                        string strSec = dateTimeValue.Second.ToString();
                        if (dateTimeValue.Second < 10)
                        {
                            strSec = "0" + strSec;
                        }

                        string strFormattedDate = string.Format("to_date('{0}-{1}-{2} {3}:{4}:{5}', 'dd-mm-yyyy hh24:mi:ss')", strDay, strMonth, strYear, strHour, strMin, strSec);

                        if (i == 0)
                        {
                            strQueryString += strFormattedDate;
                        }
                        else
                        {
                            strQueryString += "," + strFormattedDate;
                        }
                    }
                    strQueryString += ")";
                }
            }
            else if (eDBType == DatabaseType.POSTGRESQL || eDBType == DatabaseType.SQLSERVER)
            {
                if (ipCodedDomain.CodeCount > 0)
                {
                    strQueryString = strFieldName + " NOT IN (";
                    for (int i = 0; i < ipCodedDomain.CodeCount; i++)
                    {
                        if (i == 0)
                        {
                            strQueryString += "'" + Convert.ToString(ipCodedDomain.get_Value(i)) + "'";
                        }
                        else
                        {
                            strQueryString += ", '" + Convert.ToString(ipCodedDomain.get_Value(i)) + "'";
                        }
                    }
                    strQueryString += ")";
                }
            }
            else
            {
                strQueryString = "";
            }
            return(strQueryString);
        }
        /// <summary>
        /// Used for CodedValueDomain
        /// This function is used to construct a query string which when executed on the source Feature Class/Table will return the records that violate domain constraints.
        /// </summary>
        /// <param name="ipCodedDomain">Coded value domain applied to the field whose attributes are getting validated</param>
        /// <param name="strFieldName">Name of the field</param>
        /// <returns></returns>
        private string GetQueryStringForCodedDomain(ICodedValueDomain ipCodedDomain, string strFieldName)
        {
            if (null == ipCodedDomain || string.IsNullOrEmpty(strFieldName))
            {
                return("");
            }

            string  strQueryString = "";
            IDomain ipDomain       = ipCodedDomain as IDomain;

            if (ipDomain.FieldType == esriFieldType.esriFieldTypeDate)
            {
                strQueryString = GetDateQueryStringForCodedDomain(ipCodedDomain, strFieldName);
            }
            else if (ipDomain.FieldType == esriFieldType.esriFieldTypeDouble ||
                     ipDomain.FieldType == esriFieldType.esriFieldTypeInteger ||
                     ipDomain.FieldType == esriFieldType.esriFieldTypeSingle ||
                     ipDomain.FieldType == esriFieldType.esriFieldTypeSmallInteger
                     )
            {
                if (ipCodedDomain.CodeCount > 0)
                {
                    strQueryString = "";
                    strQueryString = strFieldName + " NOT IN (";
                    for (int i = 0; i < ipCodedDomain.CodeCount; i++)
                    {
                        if (i == 0)
                        {
                            strQueryString += Convert.ToString(ipCodedDomain.get_Value(i));
                        }
                        else
                        {
                            strQueryString += "," + Convert.ToString(ipCodedDomain.get_Value(i));
                        }
                    }
                    strQueryString += ")";
                }
            }
            else if (ipDomain.FieldType == esriFieldType.esriFieldTypeString)
            {
                if (ipCodedDomain.CodeCount > 0)
                {
                    strQueryString = "";
                    strQueryString = strFieldName + " NOT IN (";
                    for (int i = 0; i < ipCodedDomain.CodeCount; i++)
                    {
                        if (i == 0)
                        {
                            strQueryString += "'" + Convert.ToString(ipCodedDomain.get_Value(i)) + "'";
                        }
                        else
                        {
                            strQueryString += ",'" + Convert.ToString(ipCodedDomain.get_Value(i)) + "'";
                        }
                    }
                    strQueryString += ")";
                }
            }

            return(strQueryString);
        }
Esempio n. 8
0
        private bool ExportTable(Excel.Workbook ExcelWbk, IMxDocument MxDoc, IStandaloneTable StandTable, ref IProgressDialog2 progressDialog, ref IStepProgressor stepProgressor, ref ITrackCancel trackCancel)
        {
            ITableProperties      TableProperties      = null;
            IEnumTableProperties  EnumTableProperties  = null;
            ITableProperty3       TableProperty        = null;
            ITableCharacteristics TableCharacteristics = null;
            ITableSelection       TabSel       = null;
            IDisplayTable         DisplayTable = null;
            ITable       Table       = null;
            IRow         TabRow      = null;
            IObjectClass ObjectClass = null;
            ISubtypes    Subtypes    = null;
            ITableFields TableFields = null;

            ICursor           Cursor           = null;
            IField            CurField         = null;
            IDomain           Domain           = null;
            ICodedValueDomain CodedValueDomain = null;

            object missing = null;
            object sheet   = null;

            Microsoft.Office.Interop.Excel.Style style = null;


            try
            {
                bool   UseDescriptions;
                int    subtype;
                string SheetName;



                int Col = 0;
                int Row = 0;
                int i;
                int j;



                missing = System.Reflection.Missing.Value;

                sheet = ExcelWbk.Sheets[ExcelWbk.Sheets.Count];
                Excel.Worksheet ExcelSheet;
                Excel.Range     ExcelRange;

                //Add new Excel worksheet
                ExcelSheet = (Excel.Worksheet)ExcelWbk.Sheets.Add(missing, sheet, missing, missing);
                //style = ExcelWbk.Styles.Add("Style1");
                //style.NumberFormat = "@";
                //style.Font.Name = "Arial";
                //style.Font.Bold = True
                //style.Font.Size = 12;
                //style.Interior.Pattern = Microsoft.Office.Interop.Excel.XlPattern.xlPattern Solid
                //style.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlighLe ft



                SheetName = StandTable.Name;
                if (SheetName.Length > 30)
                {
                    SheetName = SheetName.Substring(0, 30);
                }
                ExcelSheet.Name = SheetName;


                //Determine whether to use descriptions or codes for domains
                UseDescriptions     = true;
                TableProperties     = MxDoc.TableProperties;
                EnumTableProperties = (IEnumTableProperties)TableProperties;
                EnumTableProperties.Reset();
                TableProperty = (ITableProperty3)EnumTableProperties.Next();

                while (TableProperty != null)
                {
                    if (TableProperty.StandaloneTable != null)
                    {
                        if (TableProperty.StandaloneTable.Equals(StandTable))
                        {
                            TableCharacteristics = (ITableCharacteristics)TableProperty;
                            UseDescriptions      = TableCharacteristics.ShowCodedValueDomainDescriptions;
                            break;
                        }
                    }
                    TableProperty = (ITableProperty3)EnumTableProperties.Next();
                }
                TabSel = (ITableSelection)StandTable;

                DisplayTable = (IDisplayTable)StandTable;
                Table        = (ITable)DisplayTable.DisplayTable;

                //Get subtype info
                ObjectClass = Table as IObjectClass;
                Subtypes    = ObjectClass as ISubtypes;

                //Get TableFields so later we can determine whether that field is visible
                TableFields = (ITableFields)StandTable;


                //loop through each field and write column headings
                Row = 1;
                for (j = 0; j < TableFields.FieldCount; j++)
                {
                    CurField = TableFields.get_Field(j);

                    //skip blob and geometry fields
                    if ((CurField.Type != esriFieldType.esriFieldTypeBlob) && (CurField.Type != esriFieldType.esriFieldTypeGeometry))
                    {
                        Col += 1;
                        //Write field alias name as Excel column header
                        ExcelSheet.Cells[Row, Col] = TableFields.get_FieldInfo(j).Alias;
                        if (CurField.Type == esriFieldType.esriFieldTypeString)
                        {
                            ExcelSheet.get_Range(ExcelSheet.Cells[1, Col], ExcelSheet.Cells[65535, Col]).EntireColumn.NumberFormat = "@";
                        }
                    }
                }

                //Get all selected records for this table (use IDisplayTable to get any joined data)
                DisplayTable.DisplaySelectionSet.Search(null, true, out Cursor);

                //subtype = Subtypes.DefaultSubtypeCode;

                //For each selected record

                TabRow = Cursor.NextRow();
                //stepProgressor.Step();
                //     progressDialog.Description = A4LGSharedFunctions.Localizer.GetString("ExportAsset") + stepProgressor.Position + A4LGSharedFunctions.Localizer.GetString("Of") + MxDoc.FocusMap.SelectionCount.ToString() + ".";

                while (TabRow != null)
                {
                    Row += 1;

                    if (Subtypes != null && Subtypes.HasSubtype == true &&
                        (TabRow.get_Value(Subtypes.SubtypeFieldIndex) != null))
                    {
                        subtype = Convert.ToInt32(TabRow.get_Value(Subtypes.SubtypeFieldIndex));
                    }
                    else
                    {
                        subtype = -99999;
                    }


                    //For each column
                    Col = 0;
                    for (j = 0; j < TableFields.FieldCount; j++)
                    {
                        CurField = TableFields.get_Field(j);

                        //skip blob and geometry fields in data also
                        if ((CurField.Type != esriFieldType.esriFieldTypeBlob) && (CurField.Type != esriFieldType.esriFieldTypeGeometry))
                        {
                            Col += 1;
                            ExcelSheet.Cells[Row, Col] = TabRow.get_Value(j);

                            if (UseDescriptions == true && subtype == -99999)
                            {
                                Domain = CurField.Domain;
                                if (Domain != null)
                                {
                                    if (Domain.Type == esriDomainType.esriDTCodedValue)
                                    {
                                        CodedValueDomain = (ICodedValueDomain)CurField.Domain;
                                        for (i = 0; i < CodedValueDomain.CodeCount; i++)
                                        {
                                            if ((CodedValueDomain.get_Value(i)).ToString() == (TabRow.get_Value(j)).ToString())
                                            {
                                                //System.Diagnostics.Debug.Print(CodedValueDomain.get_Name(0).ToString());
                                                ExcelSheet.Cells[Row, Col] = CodedValueDomain.get_Name(i);
                                                i = CodedValueDomain.CodeCount;
                                            }
                                        }
                                    }
                                }
                            }
                            else if (UseDescriptions == true && subtype != -99999)
                            {
                                if (Subtypes.SubtypeFieldIndex == j)
                                {
                                    ExcelSheet.Cells[Row, Col] = Subtypes.get_SubtypeName(subtype);
                                }
                                else
                                {
                                    Domain = Subtypes.get_Domain(subtype, CurField.Name);
                                    if ((Domain != null) && (Domain.Type == esriDomainType.esriDTCodedValue))
                                    {
                                        CodedValueDomain = (ICodedValueDomain)Domain;
                                        for (i = 0; i < CodedValueDomain.CodeCount; i++)
                                        {
                                            if ((CodedValueDomain.get_Value(i)).ToString() == (TabRow.get_Value(j)).ToString())
                                            {
                                                //System.Diagnostics.Debug.Print(CodedValueDomain.get_Name(0).ToString());
                                                ExcelSheet.Cells[Row, Col] = CodedValueDomain.get_Name(i);
                                                i = CodedValueDomain.CodeCount;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    stepProgressor.Step();
                    progressDialog.Description = A4LGSharedFunctions.Localizer.GetString("ExportAsset") + stepProgressor.Position + A4LGSharedFunctions.Localizer.GetString("Of") + MxDoc.FocusMap.SelectionCount.ToString() + ".";
                    if (!trackCancel.Continue())
                    {
                        return(false);
                    }
                    TabRow = Cursor.NextRow();
                }

                //Hide Columns
                Col = 0;
                for (j = 0; j < TableFields.FieldCount; j++)
                {
                    CurField = TableFields.get_Field(j);

                    //skip blob and geometry fields in data also
                    if ((CurField.Type != esriFieldType.esriFieldTypeBlob) && (CurField.Type != esriFieldType.esriFieldTypeGeometry))
                    {
                        Col += 1;
                        //Autofit
                        ExcelRange = ExcelSheet.get_Range(ExcelSheet.Cells[1, Col], ExcelSheet.Cells[Row, Col]);
                        ExcelRange.EntireColumn.AutoFit();

                        //Hide column if invisible in ArcMap
                        if (TableFields.get_FieldInfo(j).Visible == false)
                        {
                            ExcelRange = ExcelSheet.get_Range(ExcelSheet.Cells[1, Col], ExcelSheet.Cells[Row, Col]);
                            ExcelRange.EntireColumn.Hidden = true;
                        }
                    }
                }
                return(true);
            }
            catch
            {
                MessageBox.Show(A4LGSharedFunctions.Localizer.GetString("ExportXLError"));
                return(true);
            }
            finally
            {
                TableProperties      = null;
                EnumTableProperties  = null;
                TableProperty        = null;
                TableCharacteristics = null;
                TabSel       = null;
                DisplayTable = null;
                Table        = null;
                TabRow       = null;
                ObjectClass  = null;
                Subtypes     = null;
                TableFields  = null;


                if (Cursor != null)
                {
                    Marshal.ReleaseComObject(Cursor);
                }
                Cursor           = null;
                CurField         = null;
                Domain           = null;
                CodedValueDomain = null;

                missing = null;
                sheet   = null;
                style   = null;
            }
        }
Esempio n. 9
0
        private bool ExportLayer(Excel.Workbook ExcelWbk, IMxDocument MxDoc, IFeatureLayer FLayer, ref IProgressDialog2 progressDialog, ref IStepProgressor stepProgressor, ref ITrackCancel trackCancel)
        {
            IFeatureClass FC       = null;
            ISubtypes     Subtypes = null;

            ITableProperties      TableProperties      = null;
            IEnumTableProperties  EnumTableProperties  = null;
            ITableProperty3       TableProperty        = null;
            ITableCharacteristics TableCharacteristics = null;
            IFeatureSelection     FeatSel      = null;
            IDisplayTable         DisplayTable = null;
            ITable       Table       = null;
            ILayerFields LayerFields = null;
            ITableFields TableFields = null;
            ILayer       LayerTest   = null;

            ICursor           Cursor           = null;
            IFeatureCursor    FCursor          = null;
            IField            CurField         = null;
            IDomain           Domain           = null;
            ICodedValueDomain CodedValueDomain = null;
            IFeature          Feat             = null;
            List <IPoint>     pGeo             = null;

            object missing = null;
            object sheet   = null;

            Excel.Worksheet ExcelSheet = null;
            Excel.Range     ExcelRange = null;
            Microsoft.Office.Interop.Excel.Style style = null;

            try
            {
                int    Col = 0;
                int    Row = 0;
                int    i;
                int    j;
                bool   UseDescriptions;
                int    subtype;
                string SheetName;

                missing = System.Reflection.Missing.Value;
                sheet   = ExcelWbk.Sheets[ExcelWbk.Sheets.Count];

                //Add new Excel worksheet
                ExcelSheet = (Excel.Worksheet)ExcelWbk.Sheets.Add(missing, sheet, missing, missing);
                SheetName  = FLayer.Name;
                if (SheetName.Length > 30)
                {
                    SheetName = SheetName.Substring(0, 30);
                }
                ExcelSheet.Name = SheetName;

                //style = ExcelWbk.Styles.Add("Style1");
                //style.NumberFormat = "@";

                LayerTest = (ILayer)FLayer;

                //Get Subtype info
                FC       = FLayer.FeatureClass;
                Subtypes = FC as ISubtypes;
                //Determine whether to use descriptions or codes for domains and subtypes
                UseDescriptions     = true;
                TableProperties     = MxDoc.TableProperties;
                EnumTableProperties = (IEnumTableProperties)TableProperties;
                EnumTableProperties.Reset();
                TableProperty = (ITableProperty3)EnumTableProperties.Next();
                while (TableProperty != null && TableProperty.Layer != null)  //Fixed
                {
                    if (TableProperty.Layer.Equals(LayerTest))
                    {
                        TableCharacteristics = (ITableCharacteristics)TableProperty;
                        UseDescriptions      = TableCharacteristics.ShowCodedValueDomainDescriptions;
                    }
                    TableProperty = (ITableProperty3)EnumTableProperties.Next();
                }
                FeatSel = (IFeatureSelection)FLayer;

                DisplayTable = (IDisplayTable)FLayer;
                Table        = (ITable)DisplayTable.DisplayTable;

                //Get TableFields so later we can determine whether that field is visible
                LayerFields = (ILayerFields)FLayer;
                TableFields = (ITableFields)FLayer;

                //loop through each field and write column headings
                Row = 1;
                for (j = 0; j < TableFields.FieldCount; j++)
                {
                    CurField = TableFields.get_Field(j);

                    //skip blob and geometry fields
                    if ((CurField.Type != esriFieldType.esriFieldTypeBlob) && (CurField.Type != esriFieldType.esriFieldTypeGeometry))
                    {
                        Col += 1;
                        //Write field alias name as Excel column header
                        ExcelSheet.Cells[Row, Col] = TableFields.get_FieldInfo(j).Alias;
                        if (CurField.Type == esriFieldType.esriFieldTypeString)
                        {
                            ExcelSheet.get_Range(ExcelSheet.Cells[1, Col], ExcelSheet.Cells[65535, Col]).EntireColumn.NumberFormat = "@";
                        }
                    }
                }
                Col += 1;
                ExcelSheet.Cells[Row, Col] = "X_COORD";
                Col += 1;
                ExcelSheet.Cells[Row, Col] = "Y_COORD";
                Col += 1;
                ExcelSheet.Cells[Row, Col] = "Lat";
                Col += 1;
                ExcelSheet.Cells[Row, Col] = "Long";
                IField       pFieldTest       = FLayer.FeatureClass.Fields.get_Field(FLayer.FeatureClass.Fields.FindField(FLayer.FeatureClass.ShapeFieldName));
                IGeometryDef pGeometryDefTest = null;
                pGeometryDefTest = pFieldTest.GeometryDef;
                bool bZAware = false;
                bool bMAware = false;
                //Determine if M or Z aware
                if (pGeometryDefTest.GeometryType == esriGeometryType.esriGeometryPoint)
                {
                    bZAware = pGeometryDefTest.HasZ;
                    bMAware = pGeometryDefTest.HasM;
                }
                if (bZAware)
                {
                    Col += 1;
                    ExcelSheet.Cells[Row, Col] = "Z_COORD";
                }
                pFieldTest       = null;
                pGeometryDefTest = null;
                //Get all selected records for this table (use IDisplayTable to get any joined data)
                DisplayTable.DisplaySelectionSet.Search(null, true, out Cursor);
                FCursor = (IFeatureCursor)Cursor;

                //subtype = Subtypes.DefaultSubtypeCode;

                //For each selected record

                Feat = FCursor.NextFeature();
                //  stepProgressor.Step();
                // progressDialog.Description = A4LGSharedFunctions.Localizer.GetString("ExportAsset") + stepProgressor.Position + A4LGSharedFunctions.Localizer.GetString("Of") + MxDoc.FocusMap.SelectionCount.ToString() + ".";

                while (Feat != null)
                {
                    Row += 1;

                    if (Subtypes != null && Subtypes.HasSubtype == true &&
                        (Feat.get_Value(Subtypes.SubtypeFieldIndex) != null))
                    {
                        subtype = Convert.ToInt32(Feat.get_Value(Subtypes.SubtypeFieldIndex));
                    }
                    else
                    {
                        subtype = -99999;
                    }


                    //For each column
                    Col = 0;
                    for (j = 0; j < TableFields.FieldCount; j++)
                    {
                        CurField = TableFields.get_Field(j);

                        //skip blob and geometry fields in data also
                        if ((CurField.Type != esriFieldType.esriFieldTypeBlob) && (CurField.Type != esriFieldType.esriFieldTypeGeometry))
                        {
                            Col += 1;
                            ExcelSheet.Cells[Row, Col] = Feat.get_Value(j);

                            if (UseDescriptions == true && subtype == -99999)
                            {
                                Domain = CurField.Domain;
                                if (Domain != null)
                                {
                                    if (Domain.Type == esriDomainType.esriDTCodedValue)
                                    {
                                        CodedValueDomain = (ICodedValueDomain)CurField.Domain;
                                        for (i = 0; i < CodedValueDomain.CodeCount; i++)
                                        {
                                            if ((CodedValueDomain.get_Value(i)).ToString() == (Feat.get_Value(j)).ToString())
                                            {
                                                //System.Diagnostics.Debug.Print(CodedValueDomain.get_Name(0).ToString());
                                                ExcelSheet.Cells[Row, Col] = CodedValueDomain.get_Name(i);
                                                i = CodedValueDomain.CodeCount;
                                            }
                                        }
                                    }
                                }
                            }
                            else if (UseDescriptions == true && subtype != -99999)
                            {
                                if (Subtypes.SubtypeFieldIndex == j)
                                {
                                    ExcelSheet.Cells[Row, Col] = Subtypes.get_SubtypeName(subtype);
                                }
                                else
                                {
                                    Domain = Subtypes.get_Domain(subtype, CurField.Name);
                                    if ((Domain != null) && (Domain.Type == esriDomainType.esriDTCodedValue))
                                    {
                                        CodedValueDomain = (ICodedValueDomain)Domain;
                                        for (i = 0; i < CodedValueDomain.CodeCount; i++)
                                        {
                                            if ((CodedValueDomain.get_Value(i)).ToString() == (Feat.get_Value(j)).ToString())
                                            {
                                                //System.Diagnostics.Debug.Print(CodedValueDomain.get_Name(0).ToString());
                                                ExcelSheet.Cells[Row, Col] = CodedValueDomain.get_Name(i);
                                                i = CodedValueDomain.CodeCount;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    if (Feat.Shape != null)
                    {
                        if (Feat.Shape.IsEmpty == false)
                        {
                            pGeo = Globals.GetGeomCenter(Feat.Shape);
                            if (pGeo != null)
                            {
                                if (pGeo.Count > 0)
                                {
                                    if (pGeo[0].X != null)
                                    {
                                        ExcelSheet.Cells[Row, Col + 1] = pGeo[0].X;
                                    }
                                    if (pGeo[0].Y != null)
                                    {
                                        ExcelSheet.Cells[Row, Col + 2] = pGeo[0].Y;
                                    }
                                    if (pGeo[0] != null)
                                    {
                                        pGeo[0].Project(srWGS84);

                                        ExcelSheet.Cells[Row, Col + 3] = pGeo[0].Y;
                                        ExcelSheet.Cells[Row, Col + 4] = pGeo[0].X;
                                    }
                                    if (bZAware)
                                    {
                                        ExcelSheet.Cells[Row, Col + 5] = pGeo[0].Z;
                                    }
                                }
                            }
                        }
                    }

                    stepProgressor.Step();
                    progressDialog.Description = A4LGSharedFunctions.Localizer.GetString("ExportAsset") + stepProgressor.Position + A4LGSharedFunctions.Localizer.GetString("Of") + MxDoc.FocusMap.SelectionCount.ToString() + ".";
                    if (!trackCancel.Continue())
                    {
                        return(false);
                    }


                    Feat = FCursor.NextFeature();
                }

                //Hide Columns
                Col = 0;
                for (j = 0; j < TableFields.FieldCount; j++)
                {
                    CurField = TableFields.get_Field(j);

                    //skip blob and geometry fields in data also
                    if ((CurField.Type != esriFieldType.esriFieldTypeBlob) && (CurField.Type != esriFieldType.esriFieldTypeGeometry))
                    {
                        Col += 1;
                        //Autofit
                        ExcelRange = ExcelSheet.get_Range(ExcelSheet.Cells[1, Col], ExcelSheet.Cells[Row, Col]);
                        ExcelRange.EntireColumn.AutoFit();

                        //Hide column if invisible in ArcMap
                        if (TableFields.get_FieldInfo(j).Visible == false)
                        {
                            ExcelRange = ExcelSheet.get_Range(ExcelSheet.Cells[1, Col], ExcelSheet.Cells[Row, Col]);
                            ExcelRange.EntireColumn.Hidden = true;
                        }
                    }
                }
                return(true);
            }
            catch
            {
                MessageBox.Show(A4LGSharedFunctions.Localizer.GetString("ExportXLError"));
                return(true);
            }
            finally
            {
                FC       = null;
                Subtypes = null;

                TableProperties = null;
                if (EnumTableProperties != null)
                {
                    Marshal.ReleaseComObject(EnumTableProperties);
                }

                EnumTableProperties  = null;
                TableProperty        = null;
                TableCharacteristics = null;
                FeatSel      = null;
                DisplayTable = null;
                Table        = null;
                LayerFields  = null;
                TableFields  = null;
                LayerTest    = null;
                if (Cursor != null)
                {
                    Marshal.ReleaseComObject(Cursor);
                }
                Cursor = null;

                if (FCursor != null)
                {
                    Marshal.ReleaseComObject(FCursor);
                }
                FCursor          = null;
                CurField         = null;
                Domain           = null;
                CodedValueDomain = null;
                Feat             = null;
                pGeo             = null;

                missing    = null;
                sheet      = null;
                ExcelSheet = null;
                ExcelRange = null;
                style      = null;
            }
        }
Esempio n. 10
0
 public DataTable GetDataTableByDistrictName()
 {
     try
     {
         FacilityClass fac = FacilityClassManager.Instance.GetFacilityClassByName(_sysFieldName);
         if (fac == null)
         {
             return(null);
         }
         List <FieldInfo> listFI = fac.FieldInfoCollection;
         _dt = new DataTable();
         foreach (FieldInfo fi in listFI)
         {
             if (fi.CanStats)
             {
                 DataColumn dc = new DataColumn(fi.Alias);
                 if (ColumnExist(_dt, fi.Alias))
                 {
                     continue;
                 }
                 _dt.Columns.Add(dc);
             }
         }
         if (_dict != null && _dict.ContainsKey(_disName))
         {
             List <IFeature> listF = _dict[_disName];
             foreach (IFeature fea in listF)
             {
                 DataRow dr = _dt.NewRow();
                 foreach (FieldInfo fi in listFI)
                 {
                     if (fi.CanStats)
                     {
                         int index = fea.Fields.FindField(fi.Name);
                         if (index == -1)
                         {
                             continue;
                         }
                         IDomain pDomain = fea.Fields.get_Field(index).Domain;
                         if (pDomain != null && pDomain.Type == esriDomainType.esriDTCodedValue)
                         {
                             ICodedValueDomain pCD = pDomain as ICodedValueDomain;
                             for (int i = 0; i < pCD.CodeCount; i++)
                             {
                                 if (object.Equals(pCD.get_Value(i), fea.get_Value(index)))
                                 {
                                     dr[fi.Alias] = pCD.get_Name(i);
                                 }
                             }
                         }
                         else if (fi.DataType == "Decimal")
                         {
                             dr[fi.Alias] = Math.Round(Convert.ToDouble(fea.get_Value(index)), 2).ToString();
                         }
                         else
                         {
                             dr[fi.Alias] = fea.get_Value(index).ToString();
                         }
                     }
                 }
                 _dt.Rows.Add(dr);
             }
         }
         return(_dt);
     }
     catch (System.Exception ex)
     {
         return(null);
     }
 }
        /// <summary>
        /// Used for CodedValueDomain
        /// This function is used to construct a query string which when executed on the source Feature Class/Table will return the records that violate domain constraints.
        /// </summary>
        /// <param name="ipCodedDomain">Coded value domain applied to the field whose attributes are getting validated</param>
        /// <param name="strFieldName">Name of the field</param>
        /// <returns></returns>
        private string GetQueryStringForCodedDomain(ICodedValueDomain ipCodedDomain, string strFieldName)
        {
            if (null == ipCodedDomain || string.IsNullOrEmpty(strFieldName))
                return "";

            string strQueryString = "";
            IDomain ipDomain = ipCodedDomain as IDomain;
            if (ipDomain.FieldType == esriFieldType.esriFieldTypeDate)
            {
                strQueryString = GetDateQueryStringForCodedDomain(ipCodedDomain, strFieldName);
            }
            else if (ipDomain.FieldType == esriFieldType.esriFieldTypeDouble ||
                ipDomain.FieldType == esriFieldType.esriFieldTypeInteger ||
                ipDomain.FieldType == esriFieldType.esriFieldTypeSingle ||
                ipDomain.FieldType == esriFieldType.esriFieldTypeSmallInteger
                )
            {
                if(ipCodedDomain.CodeCount > 0)
                {
                    strQueryString = "";
                    strQueryString = strFieldName + " NOT IN (";
                    for (int i = 0; i < ipCodedDomain.CodeCount; i++)
                    {
                        if(i==0)
                            strQueryString += Convert.ToString(ipCodedDomain.get_Value(i));
                        else
                            strQueryString += "," + Convert.ToString(ipCodedDomain.get_Value(i));
                    }
                    strQueryString += ")";
                }
            }
            else if (ipDomain.FieldType == esriFieldType.esriFieldTypeString)
            {
                if (ipCodedDomain.CodeCount > 0)
                {
                    strQueryString = "";
                    strQueryString = strFieldName + " NOT IN (";
                    for (int i = 0; i < ipCodedDomain.CodeCount; i++)
                    {
                        if (i == 0)
                            strQueryString += "'" + Convert.ToString(ipCodedDomain.get_Value(i)) + "'";
                        else
                            strQueryString += ",'" + Convert.ToString(ipCodedDomain.get_Value(i)) + "'";
                    }
                    strQueryString += ")";
                }
            }
            
            return strQueryString;
        }
Esempio n. 12
0
 private void gridView1_CellValueChanged(object sender, CellValueChangedEventArgs e)
 {
     if (this.m_CanDo)
     {
         if (this.m_pFeatLayer == null)
         {
             LayerObject   selectedItem = this.cboLayer.SelectedItem as LayerObject;
             IFeatureLayer layer        = selectedItem.Layer as IFeatureLayer;
             this.m_pFeatLayer = layer;
         }
         if (this.m_pFeatLayer != null)
         {
             object         obj3;
             ISubtypes      featureClass = this.m_pFeatLayer.FeatureClass as ISubtypes;
             GridEditorItem row          = this.gridView1.GetRow(e.RowHandle) as GridEditorItem;
             int            index        = this.m_pFeatLayer.FeatureClass.Fields.FindFieldByAliasName(row.Name);
             IField         pField       = this.m_pFeatLayer.FeatureClass.Fields.get_Field(index);
             if ((featureClass != null) && featureClass.HasSubtype)
             {
                 if (featureClass.SubtypeFieldName == pField.Name)
                 {
                     IEnumSubtype subtypes = featureClass.Subtypes;
                     subtypes.Reset();
                     int subtypeCode = 0;
                     for (string str = subtypes.Next(out subtypeCode);
                          str != null;
                          str = subtypes.Next(out subtypeCode))
                     {
                         if (e.Value.ToString() == str)
                         {
                             this.UpdateFieldValue(pField, subtypeCode);
                             break;
                         }
                     }
                 }
                 else if (e.Value.ToString() == "<空>")
                 {
                     obj3 = DBNull.Value;
                     this.UpdateFieldValue(pField, obj3);
                 }
                 else
                 {
                     this.UpdateFieldValue(pField, e.Value);
                 }
             }
             else if (e.Value.ToString() == "<空>")
             {
                 obj3 = DBNull.Value;
                 this.UpdateFieldValue(pField, obj3);
             }
             else
             {
                 int    num3;
                 string name = (this.m_pFeatLayer.FeatureClass as IDataset).Name;
                 NameValueCollection codeDomain = CodeDomainManage.GetCodeDomain(pField.Name, name);
                 if (codeDomain.Count > 0)
                 {
                     for (num3 = 0; num3 < codeDomain.Count; num3++)
                     {
                         string str3 = codeDomain.Keys[num3];
                         if (str3 == e.Value.ToString())
                         {
                             this.UpdateFieldValue(pField, codeDomain[str3]);
                             break;
                         }
                     }
                 }
                 else
                 {
                     IDomain domain = pField.Domain;
                     if (domain is ICodedValueDomain)
                     {
                         ICodedValueDomain domain2 = domain as ICodedValueDomain;
                         for (num3 = 0; num3 < domain2.CodeCount; num3++)
                         {
                             if (domain2.get_Name(num3) == e.Value.ToString())
                             {
                                 this.UpdateFieldValue(pField, domain2.get_Value(num3));
                                 break;
                             }
                         }
                     }
                     else if (this.UpdateFieldValue(pField, e.Value))
                     {
                         this.m_CanDo = false;
                         this.m_CanDo = true;
                     }
                 }
             }
         }
     }
 }
Esempio n. 13
0
        static void Main(string[] args)
        {
            // s = ArcZona.AZUtil.ParseGeoDBName(@"sde:sqlserver:DPU-PBU-GIS77\sqlexpress");
            // s = ArcZona.AZUtil.ParseGeoDBName("sde:oracle10g:/:dpu_admin");
            // s = ArcZona.AZUtil.ParseGeoDBName("5151:dpu_admin");

            /* Sample Command Line Params:
             *  -n  ssDomainOwner -v -g "\OWNEDBY_Example.gdb"
             *
             * */
            try
            {
                ESRILicenseProductCode = esriLicenseProductCode.esriLicenseProductCodeArcView;
                ArgParser = new CommandLine.Utility.CommandArguments(System.Environment.GetCommandLineArgs());

                // display the usage when
                if (System.Environment.CommandLine.IndexOf("-h", 0, System.StringComparison.CurrentCultureIgnoreCase) >= 0 |
                    System.Environment.CommandLine.IndexOf("--help", 0, System.StringComparison.CurrentCultureIgnoreCase) >= 0 |
                    System.Environment.CommandLine.IndexOf("/?", 0, System.StringComparison.CurrentCultureIgnoreCase) >= 0 |
                    System.Environment.CommandLine.IndexOf("-help", 0, System.StringComparison.CurrentCultureIgnoreCase) >= 0)
                {
                    Usage();
                    return;
                }

                if (ValidateArgs() == true)
                {
                    ESRILicenseInitializer = new GeoprocessingInDotNet.LicenseInitializer();

                    ConsoleWriteLine("Arguments Validated!!");
                    ConsoleWriteLine("Initializing ArcObjects License...");

                    ESRILicenseInitializer.InitializeApplication(ESRILicenseProductCode);

                    if (ESRILicenseInitializer.InitializedProduct > 0)
                    {
                        ConsoleWriteLine("License Initialized.");

                        IWorkspace         ws = UmbrielArcGISHelper.GetWorkspace(ArgParser);
                        IWorkspaceDomains2 workspaceDomains = (IWorkspaceDomains2)ws;


                        IDomain           domain      = workspaceDomains.get_DomainByName(DomainName);
                        ICodedValueDomain codedDomain = (ICodedValueDomain)domain;


                        Stack <string> domainValues = new Stack <string>();

                        for (int i = codedDomain.CodeCount - 1; i >= 0; i--)
                        {
                            codedDomain.DeleteCode(codedDomain.get_Value(i));
                        }

                        workspaceDomains.AlterDomain(domain);
                    }
                    else
                    {
                        Console.WriteLine("\a");
                        Console.WriteLine("Could not initialize ESRI License.");
                    }

                    // Do not make any call to ArcObjects after ShutDownApplication()
                    ConsoleWriteLine("Releasing ArcObjects License...");
                    ESRILicenseInitializer.ShutdownApplication();
                    ConsoleWriteLine("ArcObjects License Released.");
                }
                else
                {
                    Usage();
                    return;
                }
            }
            catch (Exception ex)
            {
                // beep!
                Console.WriteLine("\a");
                Console.WriteLine("An error has occurred: \n\n");
                Console.WriteLine(ex.StackTrace);
            }
            finally
            {
                // try to shut down the ESRI license
                if (ESRILicenseInitializer != null)
                {
                    if (ESRILicenseInitializer.InitializedProduct > 0)
                    {
                        ESRILicenseInitializer.ShutdownApplication();
                    }
                }
            }



            /* SDEMeta sleeps for 2000 milliseconds by default,
             * so that when called from a batch, the license manager has a chance to return
             * the license to the pool before the next SDEMeta attempts to check it out.
             */
            if (!ArgParser.Contains("-nosleep"))
            {
                string sleep = ArgParser.GetValue("sleep");

                try
                {
                    int sleepDuration = 2000;
                    if (!String.IsNullOrEmpty(sleep))
                    {
                        sleepDuration = Convert.ToInt32(sleep);
                    }

                    System.Threading.Thread.Sleep(sleepDuration);
                }
                catch
                {
                }
            }
        }
Esempio n. 14
0
        private string method_7(IRow irow_0, IField ifield_0, int int_0)
        {
            int               num;
            string            str     = irow_0.get_Value(int_0).ToString();
            ISubtypes         table   = irow_0.Table as ISubtypes;
            ICodedValueDomain domain  = null;
            IList             list    = new ArrayList();
            IDomain           domain2 = null;

            if ((table != null) && table.HasSubtype)
            {
                if (table.SubtypeFieldName == ifield_0.Name)
                {
                    try
                    {
                        str = table.get_SubtypeName((irow_0 as IRowSubtypes).SubtypeCode);
                    }
                    catch
                    {
                    }
                }
                else
                {
                    domain2 = table.get_Domain((irow_0 as IRowSubtypes).SubtypeCode, ifield_0.Name);
                    if (domain2 is ICodedValueDomain)
                    {
                        domain = domain2 as ICodedValueDomain;
                        if (ifield_0.IsNullable)
                        {
                            list.Add("<空>");
                        }
                        num = 0;
                        while (num < domain.CodeCount)
                        {
                            if (str == domain.get_Value(num).ToString())
                            {
                                str = domain.get_Name(num);
                                break;
                            }
                            num++;
                        }
                    }
                }
            }
            domain2 = ifield_0.Domain;
            if (domain2 != null)
            {
                if (domain2 is ICodedValueDomain)
                {
                    domain = domain2 as ICodedValueDomain;
                    num    = 0;
                    while (num < domain.CodeCount)
                    {
                        if (str == domain.get_Value(num).ToString())
                        {
                            return(domain.get_Name(num));
                        }
                        num++;
                    }
                }
                return(str);
            }
            string       name         = (irow_0.Table as IDataset).Name;
            CodeDomainEx codeDomainEx = CodeDomainManage.GetCodeDomainEx(ifield_0.Name, name);

            if (codeDomainEx == null)
            {
                return(str);
            }
            if ((codeDomainEx.ParentIDFieldName == null) || (codeDomainEx.ParentIDFieldName.Length == 0))
            {
                NameValueCollection codeDomain = codeDomainEx.GetCodeDomain();
                for (num = 0; num < codeDomain.Count; num++)
                {
                    string str3 = codeDomain.Keys[num];
                    if (str == codeDomain[str3])
                    {
                        str = str3;
                    }
                }
                return(str);
            }
            return(codeDomainEx.FindName(str));
        }
        /// <summary>
        /// Used when the CodedValueDomain field is of Date type
        /// This function is used to construct a query string which when executed on the source Feature Class/Table will return the records that violate domain constraints.
        /// </summary>
        /// <param name="ipCodedDomain">Coded value domain applied to the Date type field whose attributes are getting validated</param>
        /// <param name="strFieldName">Name of the Date type field</param>
        /// <returns></returns>
        private string GetDateQueryStringForCodedDomain(ICodedValueDomain ipCodedDomain, string strFieldName)
        {
            if (null == ipCodedDomain || string.IsNullOrEmpty(strFieldName))
                return "";

            if (null == m_ipWorkspace)
                return "";

            string strQueryString = "";

            DatabaseType eDBType = GetDatabaseType(m_ipWorkspace);
            if (eDBType == DatabaseType.FGDB || eDBType == DatabaseType.SHAPEFILE)
            {
                if (ipCodedDomain.CodeCount > 0)
                {
                    strQueryString = strFieldName + " NOT IN (";
                    for (int i = 0; i < ipCodedDomain.CodeCount; i++)
                    {
                        if (i == 0)
                            strQueryString += "date '" + Convert.ToString(ipCodedDomain.get_Value(i)) + "'";
                        else
                            strQueryString += ", date '" + Convert.ToString(ipCodedDomain.get_Value(i)) + "'";
                    }
                    strQueryString += ")";
                }
            }
            else if (eDBType == DatabaseType.MDB)
            {
                if (ipCodedDomain.CodeCount > 0)
                {
                    strQueryString = strFieldName + " NOT IN (";
                    for (int i = 0; i < ipCodedDomain.CodeCount; i++)
                    {
                        if (i == 0)
                            strQueryString += "#" + Convert.ToString(ipCodedDomain.get_Value(i)) + "#";
                        else
                            strQueryString += ", #" + Convert.ToString(ipCodedDomain.get_Value(i)) + "#";
                    }
                    strQueryString += ")";
                }
            }
            else if (eDBType == DatabaseType.ORACLE)
            {
                if (ipCodedDomain.CodeCount > 0)
                {
                    strQueryString = strFieldName + " NOT IN (";
                    for (int i = 0; i < ipCodedDomain.CodeCount; i++)
                    {
                        DateTime dateTimeValue =  Convert.ToDateTime(ipCodedDomain.get_Value(i));
                        string strYear = dateTimeValue.Year.ToString();

                        string strMonth = dateTimeValue.Month.ToString();
                        if (dateTimeValue.Month < 10)
                            strMonth = "0" + strMonth;
                        
                        string strDay = dateTimeValue.Day.ToString();
                        if (dateTimeValue.Day < 10)
                            strDay = "0" + strDay;

                        string strHour = dateTimeValue.Hour.ToString();
                        if (dateTimeValue.Hour < 10)
                            strHour = "0" + strHour;

                        string strMin = dateTimeValue.Minute.ToString();
                        if (dateTimeValue.Minute < 10)
                            strMin = "0" + strMin;

                        string strSec = dateTimeValue.Second.ToString();
                        if (dateTimeValue.Second < 10)
                            strSec = "0" + strSec;

                        string strFormattedDate = string.Format("to_date('{0}-{1}-{2} {3}:{4}:{5}', 'dd-mm-yyyy hh24:mi:ss')",strDay,strMonth,strYear,strHour,strMin,strSec);

                        if (i == 0)
                            strQueryString += strFormattedDate;
                        else
                            strQueryString += "," + strFormattedDate;
                    }
                    strQueryString += ")";
                }
            }
            else if (eDBType == DatabaseType.POSTGRESQL || eDBType == DatabaseType.SQLSERVER)
            {
                if (ipCodedDomain.CodeCount > 0)
                {
                    strQueryString = strFieldName + " NOT IN (";
                    for (int i = 0; i < ipCodedDomain.CodeCount; i++)
                    {
                        if (i == 0)
                            strQueryString += "'" + Convert.ToString(ipCodedDomain.get_Value(i)) + "'";
                        else
                            strQueryString += ", '" + Convert.ToString(ipCodedDomain.get_Value(i)) + "'";
                    }
                    strQueryString += ")";
                }
            }
            else
            {
                strQueryString = "";
            }
            return strQueryString;
        }
Esempio n. 16
0
        private void Init()
        {
            this.gridControl1.Focus();
            this.m_pVertXtraGrid.Clear();
            int rowHandle = -1;

            if (this.m_pObject == null)
            {
                this.m_CanDo = true;
            }
            else
            {
                this.toolStripDropDownButton1.DropDownItemClicked +=
                    new ToolStripItemClickedEventHandler(this.toolStripDropDownButton1_DropDownItemClicked);
                try
                {
                    ITableAttachments attachments = (ITableAttachments)this.m_pObject.Class;
                    if (attachments != null)
                    {
                        if (attachments.HasAttachments)
                        {
                            this.toolStrip1.Visible = true;
                            this.InitAttachment();
                        }
                        else
                        {
                            this.toolStrip1.Visible = false;
                        }
                    }
                }
                catch
                {
                }
                IFields   fields   = this.m_pObject.Fields;
                string[]  strArray = new string[2];
                ISubtypes subtypes = this.m_pObject.Class as ISubtypes;
                IDomain   domain   = null;
                for (int i = 0; i < fields.FieldCount; i++)
                {
                    IField pField = fields.get_Field(i);
                    if (this.CheckFieldIsVisible(this.m_pFeatureLayer, pField))
                    {
                        strArray[0] = pField.AliasName;
                        if (pField.Type == esriFieldType.esriFieldTypeGeometry)
                        {
                            strArray[1] = this.GetShapeString(pField);
                            this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1], true);
                        }
                        else if (pField.Type == esriFieldType.esriFieldTypeOID)
                        {
                            strArray[1] = this.m_pObject.OID.ToString();
                            this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1], true);
                        }
                        else if (pField.Type == esriFieldType.esriFieldTypeBlob)
                        {
                            strArray[1] = "<二进制数据>";
                            this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1], true);
                        }
                        else
                        {
                            int               num4;
                            double            minValue;
                            double            maxValue;
                            object            obj2    = this.m_pObject.get_Value(i);
                            ICodedValueDomain domain2 = null;
                            IList             list    = new ArrayList();
                            if ((subtypes != null) && subtypes.HasSubtype)
                            {
                                if (subtypes.SubtypeFieldName == pField.Name)
                                {
                                    int num3;
                                    try
                                    {
                                        strArray[1] =
                                            subtypes.get_SubtypeName((this.m_pObject as IRowSubtypes).SubtypeCode);
                                    }
                                    catch
                                    {
                                        strArray[1] = obj2.ToString();
                                    }
                                    IEnumSubtype subtype = subtypes.Subtypes;
                                    subtype.Reset();
                                    for (string str = subtype.Next(out num3); str != null; str = subtype.Next(out num3))
                                    {
                                        list.Add(str);
                                    }
                                    this.m_pVertXtraGrid.AddComBoBox(strArray[0], strArray[1], list,
                                                                     !this.FieldCanEdit(pField));
                                }
                                else
                                {
                                    domain = subtypes.get_Domain((this.m_pObject as IRowSubtypes).SubtypeCode,
                                                                 pField.Name);
                                    if (domain is ICodedValueDomain)
                                    {
                                        domain2 = domain as ICodedValueDomain;
                                        if (pField.IsNullable)
                                        {
                                            list.Add("<空>");
                                        }
                                        strArray[1] = obj2.ToString();
                                        num4        = 0;
                                        while (num4 < domain2.CodeCount)
                                        {
                                            list.Add(domain2.get_Name(num4));
                                            if (obj2.ToString() == domain2.get_Value(num4).ToString())
                                            {
                                                strArray[1] = domain2.get_Name(num4);
                                            }
                                            num4++;
                                        }
                                        this.m_pVertXtraGrid.AddComBoBox(strArray[0], strArray[1], list,
                                                                         !this.FieldCanEdit(pField));
                                    }
                                    else if ((((pField.Type == esriFieldType.esriFieldTypeSmallInteger) ||
                                               (pField.Type == esriFieldType.esriFieldTypeSingle)) ||
                                              (pField.Type == esriFieldType.esriFieldTypeDouble)) ||
                                             (pField.Type == esriFieldType.esriFieldTypeInteger))
                                    {
                                        minValue = 0.0;
                                        maxValue = 0.0;
                                        if (domain is IRangeDomain)
                                        {
                                            minValue = (double)(domain as IRangeDomain).MinValue;
                                            maxValue = (double)(domain as IRangeDomain).MaxValue;
                                        }
                                        if (pField.Editable)
                                        {
                                            this.m_pVertXtraGrid.AddSpinEdit(strArray[0], obj2, false, minValue,
                                                                             maxValue);
                                        }
                                        else
                                        {
                                            this.m_pVertXtraGrid.AddTextEdit(strArray[0], obj2, true);
                                        }
                                    }
                                    else if (pField.Type == esriFieldType.esriFieldTypeDate)
                                    {
                                        this.m_pVertXtraGrid.AddDateEdit(strArray[0], obj2, !this.FieldCanEdit(pField));
                                    }
                                    else
                                    {
                                        strArray[1] = obj2.ToString();
                                        this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1],
                                                                         !this.FieldCanEdit(pField));
                                    }
                                }
                            }
                            else
                            {
                                domain = pField.Domain;
                                if (domain != null)
                                {
                                    if (domain is ICodedValueDomain)
                                    {
                                        domain2 = domain as ICodedValueDomain;
                                        if (pField.IsNullable)
                                        {
                                            list.Add("<空>");
                                        }
                                        strArray[1] = obj2.ToString();
                                        num4        = 0;
                                        while (num4 < domain2.CodeCount)
                                        {
                                            list.Add(domain2.get_Name(num4));
                                            if (obj2.ToString() == domain2.get_Value(num4).ToString())
                                            {
                                                strArray[1] = domain2.get_Name(num4);
                                            }
                                            num4++;
                                        }
                                        this.m_pVertXtraGrid.AddComBoBox(strArray[0], strArray[1], list,
                                                                         !this.FieldCanEdit(pField));
                                    }
                                    else if ((((pField.Type == esriFieldType.esriFieldTypeSmallInteger) ||
                                               (pField.Type == esriFieldType.esriFieldTypeSingle)) ||
                                              (pField.Type == esriFieldType.esriFieldTypeDouble)) ||
                                             (pField.Type == esriFieldType.esriFieldTypeInteger))
                                    {
                                        minValue = 0.0;
                                        maxValue = 0.0;
                                        if (domain is IRangeDomain)
                                        {
                                            minValue = (double)(domain as IRangeDomain).MinValue;
                                            maxValue = (double)(domain as IRangeDomain).MaxValue;
                                        }
                                        if (pField.Editable)
                                        {
                                            this.m_pVertXtraGrid.AddSpinEdit(strArray[0], obj2, false, minValue,
                                                                             maxValue);
                                        }
                                        else
                                        {
                                            this.m_pVertXtraGrid.AddTextEdit(strArray[0], obj2, true);
                                        }
                                    }
                                    else if (pField.Type == esriFieldType.esriFieldTypeDate)
                                    {
                                        this.m_pVertXtraGrid.AddDateEdit(strArray[0], obj2, !this.FieldCanEdit(pField));
                                    }
                                    else
                                    {
                                        strArray[1] = obj2.ToString();
                                        this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1],
                                                                         !this.FieldCanEdit(pField));
                                    }
                                }
                                else
                                {
                                    string       name         = (this.m_pObject.Class as IDataset).Name;
                                    CodeDomainEx codeDomainEx = CodeDomainManage.GetCodeDomainEx(pField.Name, name);
                                    if (codeDomainEx != null)
                                    {
                                        if ((codeDomainEx.ParentIDFieldName == null) ||
                                            (codeDomainEx.ParentIDFieldName.Length == 0))
                                        {
                                            NameValueCollection codeDomain = codeDomainEx.GetCodeDomain();
                                            if (pField.IsNullable)
                                            {
                                                list.Add("<空>");
                                            }
                                            strArray[1] = obj2.ToString();
                                            for (num4 = 0; num4 < codeDomain.Count; num4++)
                                            {
                                                string str3 = codeDomain.Keys[num4];
                                                list.Add(str3);
                                                if (obj2.ToString() == codeDomain[str3])
                                                {
                                                    strArray[1] = str3;
                                                }
                                            }
                                            this.m_pVertXtraGrid.AddComBoBox(strArray[0], strArray[1], list,
                                                                             !this.FieldCanEdit(pField));
                                        }
                                        else
                                        {
                                            strArray[1] = obj2.ToString();
                                            this.m_pVertXtraGrid.AddTreeviewComBoBox(strArray[0],
                                                                                     codeDomainEx.FindName(strArray[1]), codeDomainEx,
                                                                                     !this.FieldCanEdit(pField));
                                        }
                                    }
                                    else
                                    {
                                        if ((((pField.Type == esriFieldType.esriFieldTypeSmallInteger) ||
                                              (pField.Type == esriFieldType.esriFieldTypeSingle)) ||
                                             (pField.Type == esriFieldType.esriFieldTypeDouble)) ||
                                            (pField.Type == esriFieldType.esriFieldTypeInteger))
                                        {
                                            if (pField.Editable)
                                            {
                                                this.m_pVertXtraGrid.AddSpinEdit(strArray[0], obj2, false, 0.0, 0.0);
                                            }
                                            else
                                            {
                                                this.m_pVertXtraGrid.AddTextEdit(strArray[0], obj2, true);
                                            }
                                        }
                                        else if (pField.Type == esriFieldType.esriFieldTypeDate)
                                        {
                                            this.m_pVertXtraGrid.AddDateEdit(strArray[0], obj2,
                                                                             !this.FieldCanEdit(pField));
                                        }
                                        else
                                        {
                                            strArray[1] = obj2.ToString();
                                            this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1],
                                                                             !this.FieldCanEdit(pField));
                                        }
                                        if (strArray[0] == this.m_EditFeildName)
                                        {
                                            rowHandle = i;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                if (rowHandle >= 0)
                {
                    this.gridView1.SelectRow(rowHandle);
                }
                this.gridView1.Focus();
                this.m_CanDo = true;
                base.Parent.Focus();
            }
        }
Esempio n. 17
0
 private void cboLayer_SelectedIndexChanged(object sender, EventArgs e)
 {
     this.m_pVertXtraGrid.Clear();
     if (this.cboLayer.SelectedIndex != -1)
     {
         LayerObject   selectedItem = this.cboLayer.SelectedItem as LayerObject;
         IFeatureLayer pLayer       = selectedItem.Layer as IFeatureLayer;
         this.m_pFeatLayer = pLayer;
         if (pLayer != null)
         {
             ICursor cursor;
             (pLayer as IFeatureSelection).SelectionSet.Search(null, false, out cursor);
             IList <IRow> pLists = new List <IRow>();
             for (IRow row = cursor.NextRow(); row != null; row = cursor.NextRow())
             {
                 pLists.Add(row);
             }
             ComReleaser.ReleaseCOMObject(cursor);
             IFields   fields       = pLayer.FeatureClass.Fields;
             string[]  strArray     = new string[2];
             ISubtypes featureClass = pLayer.FeatureClass as ISubtypes;
             IDomain   domain       = null;
             for (int i = 0; i < fields.FieldCount; i++)
             {
                 IField pField = fields.get_Field(i);
                 if (this.CheckFieldIsVisible(pLayer, pField))
                 {
                     strArray[0] = pField.AliasName;
                     if (pField.Type == esriFieldType.esriFieldTypeGeometry)
                     {
                         strArray[1] = this.GetShapeString(pField);
                         this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1], true);
                     }
                     else if (pField.Type == esriFieldType.esriFieldTypeBlob)
                     {
                         strArray[1] = "<二进制数据>";
                         this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1], true);
                     }
                     else if ((pField.Type != esriFieldType.esriFieldTypeOID) && pField.Editable)
                     {
                         int               num3;
                         double            minValue;
                         double            maxValue;
                         ICodedValueDomain domain2 = null;
                         IList             list2   = new ArrayList();
                         if ((featureClass != null) && featureClass.HasSubtype)
                         {
                             if (featureClass.SubtypeFieldName == pField.Name)
                             {
                                 int num2;
                                 if (this.CheckValueIsEqual(pLists, i))
                                 {
                                     object obj4 = pLists[0].get_Value(i);
                                     if (obj4 is DBNull)
                                     {
                                         strArray[1] = "<空>";
                                     }
                                     else
                                     {
                                         try
                                         {
                                             strArray[1] =
                                                 featureClass.get_SubtypeName(
                                                     (pLists[0] as IRowSubtypes).SubtypeCode);
                                         }
                                         catch
                                         {
                                             strArray[1] = obj4.ToString();
                                         }
                                     }
                                 }
                                 else
                                 {
                                     strArray[1] = "<空>";
                                 }
                                 IEnumSubtype subtypes = featureClass.Subtypes;
                                 subtypes.Reset();
                                 for (string str = subtypes.Next(out num2);
                                      str != null;
                                      str = subtypes.Next(out num2))
                                 {
                                     list2.Add(str);
                                 }
                                 this.m_pVertXtraGrid.AddComBoBox(strArray[0], strArray[1], list2,
                                                                  !pField.Editable);
                             }
                             else
                             {
                                 domain = featureClass.get_Domain((pLists[0] as IRowSubtypes).SubtypeCode,
                                                                  pField.Name);
                                 if (domain is ICodedValueDomain)
                                 {
                                     domain2 = domain as ICodedValueDomain;
                                     if (pField.IsNullable)
                                     {
                                         list2.Add("<空>");
                                     }
                                     if (this.CheckValueIsEqual(pLists, i))
                                     {
                                         strArray[1] = pLists[0].get_Value(i).ToString();
                                     }
                                     else
                                     {
                                         strArray[1] = "<空>";
                                     }
                                     num3 = 0;
                                     while (num3 < domain2.CodeCount)
                                     {
                                         list2.Add(domain2.get_Name(num3));
                                         if (strArray[1] == domain2.get_Value(num3).ToString())
                                         {
                                             strArray[1] = domain2.get_Name(num3);
                                         }
                                         num3++;
                                     }
                                     this.m_pVertXtraGrid.AddComBoBox(strArray[0], strArray[1], list2,
                                                                      !pField.Editable);
                                 }
                                 else
                                 {
                                     if (this.CheckValueIsEqual(pLists, i))
                                     {
                                         strArray[1] = pLists[0].get_Value(i).ToString();
                                     }
                                     else
                                     {
                                         strArray[1] = "<空>";
                                     }
                                     if ((((pField.Type == esriFieldType.esriFieldTypeSmallInteger) ||
                                           (pField.Type == esriFieldType.esriFieldTypeSingle)) ||
                                          (pField.Type == esriFieldType.esriFieldTypeDouble)) ||
                                         (pField.Type == esriFieldType.esriFieldTypeInteger))
                                     {
                                         minValue = 0.0;
                                         maxValue = 0.0;
                                         if (domain is IRangeDomain)
                                         {
                                             minValue = (double)(domain as IRangeDomain).MinValue;
                                             maxValue = (double)(domain as IRangeDomain).MaxValue;
                                         }
                                         if (pField.Editable)
                                         {
                                             this.m_pVertXtraGrid.AddSpinEdit(strArray[0], strArray[1], false,
                                                                              minValue, maxValue);
                                         }
                                         else
                                         {
                                             this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1], true);
                                         }
                                     }
                                     else if (pField.Type == esriFieldType.esriFieldTypeDate)
                                     {
                                         this.m_pVertXtraGrid.AddDateEdit(strArray[0], strArray[1],
                                                                          !pField.Editable);
                                     }
                                     else
                                     {
                                         if (this.CheckValueIsEqual(pLists, i))
                                         {
                                             strArray[1] = pLists[0].get_Value(i).ToString();
                                         }
                                         else
                                         {
                                             strArray[1] = "<空>";
                                         }
                                         this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1],
                                                                          !pField.Editable);
                                     }
                                 }
                             }
                         }
                         else
                         {
                             domain = pField.Domain;
                             if (domain != null)
                             {
                                 if (domain is ICodedValueDomain)
                                 {
                                     domain2 = domain as ICodedValueDomain;
                                     if (pField.IsNullable)
                                     {
                                         list2.Add("<空>");
                                     }
                                     if (this.CheckValueIsEqual(pLists, i))
                                     {
                                         strArray[1] = pLists[0].get_Value(i).ToString();
                                     }
                                     else
                                     {
                                         strArray[1] = "<空>";
                                     }
                                     num3 = 0;
                                     while (num3 < domain2.CodeCount)
                                     {
                                         list2.Add(domain2.get_Name(num3));
                                         if (strArray[1] == domain2.get_Value(num3).ToString())
                                         {
                                             strArray[1] = domain2.get_Name(num3);
                                         }
                                         num3++;
                                     }
                                     this.m_pVertXtraGrid.AddComBoBox(strArray[0], strArray[1], list2,
                                                                      !pField.Editable);
                                 }
                                 else
                                 {
                                     if (this.CheckValueIsEqual(pLists, i))
                                     {
                                         strArray[1] = pLists[0].get_Value(i).ToString();
                                     }
                                     else
                                     {
                                         strArray[1] = "<空>";
                                     }
                                     if ((((pField.Type == esriFieldType.esriFieldTypeSmallInteger) ||
                                           (pField.Type == esriFieldType.esriFieldTypeSingle)) ||
                                          (pField.Type == esriFieldType.esriFieldTypeDouble)) ||
                                         (pField.Type == esriFieldType.esriFieldTypeInteger))
                                     {
                                         minValue = 0.0;
                                         maxValue = 0.0;
                                         if (domain is IRangeDomain)
                                         {
                                             minValue = (double)(domain as IRangeDomain).MinValue;
                                             maxValue = (double)(domain as IRangeDomain).MaxValue;
                                         }
                                         if (pField.Editable)
                                         {
                                             this.m_pVertXtraGrid.AddSpinEdit(strArray[0], strArray[1], false,
                                                                              minValue, maxValue);
                                         }
                                         else
                                         {
                                             this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1], true);
                                         }
                                     }
                                     else if (pField.Type == esriFieldType.esriFieldTypeDate)
                                     {
                                         this.m_pVertXtraGrid.AddDateEdit(strArray[0], strArray[1],
                                                                          !pField.Editable);
                                     }
                                     else
                                     {
                                         this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1],
                                                                          !pField.Editable);
                                     }
                                 }
                             }
                             else
                             {
                                 if (this.CheckValueIsEqual(pLists, i))
                                 {
                                     strArray[1] = pLists[0].get_Value(i).ToString();
                                 }
                                 else
                                 {
                                     strArray[1] = "<空>";
                                 }
                                 string name = (pLayer.FeatureClass as IDataset).Name;
                                 NameValueCollection codeDomain = CodeDomainManage.GetCodeDomain(pField.Name,
                                                                                                 name);
                                 if (codeDomain.Count > 0)
                                 {
                                     if (pField.IsNullable)
                                     {
                                         list2.Add("<空>");
                                     }
                                     for (num3 = 0; num3 < codeDomain.Count; num3++)
                                     {
                                         string str3 = codeDomain.Keys[num3];
                                         list2.Add(str3);
                                         if (strArray[1] == codeDomain[str3])
                                         {
                                             strArray[1] = str3;
                                         }
                                     }
                                     this.m_pVertXtraGrid.AddComBoBox(strArray[0], strArray[1], list2,
                                                                      !pField.Editable);
                                 }
                                 else if ((((pField.Type == esriFieldType.esriFieldTypeSmallInteger) ||
                                            (pField.Type == esriFieldType.esriFieldTypeSingle)) ||
                                           (pField.Type == esriFieldType.esriFieldTypeDouble)) ||
                                          (pField.Type == esriFieldType.esriFieldTypeInteger))
                                 {
                                     if (pField.Editable)
                                     {
                                         this.m_pVertXtraGrid.AddSpinEdit(strArray[0], strArray[1], false, 0.0,
                                                                          0.0);
                                     }
                                     else
                                     {
                                         this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1], true);
                                     }
                                 }
                                 else if (pField.Type == esriFieldType.esriFieldTypeDate)
                                 {
                                     this.m_pVertXtraGrid.AddDateEdit(strArray[0], strArray[1], !pField.Editable);
                                 }
                                 else
                                 {
                                     this.m_pVertXtraGrid.AddTextEdit(strArray[0], strArray[1], !pField.Editable);
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
 }