コード例 #1
0
        public void Populate(appDB.ddTableRow drTable)
        {
            DataTable dtTyped = null;

            try
            {
                atLogic.BEManager mngr = myA.GetFile(0).GetBEMngrForTable(drTable.DBTableName);
                dtTyped = mngr.MyDS.Tables[drTable.DBTableName];
            }
            catch (Exception x)
            {
                //ignore
            }

            DataTable dtViews = myA.GetGeneralRec("select * from information_schema.columns where table_schema='dbo' and table_name='v" + drTable.DBTableName + "' ");
            DataTable dtTable = myA.GetGeneralRec("select * from information_schema.columns where table_schema='dbo' and table_name='" + drTable.DBTableName + "' ");

            if (dtTable.Rows.Count == 0)
            {
                drTable.isDBTable = false;
            }
            else
            {
                drTable.isDBTable = true;
            }

            if (dtTyped != null)
            {
                foreach (DataColumn dc in dtTyped.Columns)
                {
                    appDB.ddFieldRow drField;
                    if (myA.DB.ddField.Select("Tableid=" + drTable.TableId.ToString() + " and DBFieldName='" + dc.ColumnName + "'").Length == 0)
                    {
                        drField             = (appDB.ddFieldRow)Add(drTable);
                        drField.FieldName   = dc.ColumnName;
                        drField.DBFieldName = dc.ColumnName;
                        if (drTable.isDynamic)
                        {
                            drField.AllowInRelatedFields = false;
                        }
                    }
                    else
                    {
                        drField = (appDB.ddFieldRow)myA.DB.ddField.Select("Tableid=" + drTable.TableId.ToString() + " and DBFieldName='" + dc.ColumnName + "'")[0];
                    }
                    drField.isMissing = true;
                    drField.DataType  = dc.DataType.Name;

                    if (drField.IsLeftEngNull())
                    {
                        drField.LeftEng = SplitCamelCase(drField.FieldName);
                        drField.LeftFre = SplitCamelCase(drField.FieldName);
                    }

                    if (dtViews.Select("Column_name='" + dc.ColumnName + "'", "").Length == 0)
                    {
                        drField.isVirtualColumn = true;
                    }
                    else
                    {
                        drField.isMissing       = false;
                        drField.isVirtualColumn = false;
                    }

                    if (!drField.isVirtualColumn && dtTable.Select("Column_name='" + dc.ColumnName + "'", "").Length == 0)
                    {
                        drField.isFromView = true;
                    }
                    else
                    {
                        drField.isMissing  = false;
                        drField.isFromView = false;
                    }
                }

                //check for "obsolete" columns
                foreach (appDB.ddFieldRow drf in drTable.GetddFieldRows())
                {
                    if (!dtTyped.Columns.Contains(drf.DBFieldName))
                    {
                        drf.AllowInRelatedFields = false;
                        drf.DescEng = "OBSOLETE";
                    }
                }
            }
            else
            {
                foreach (DataRow dr in dtViews.Rows)
                {
                    if (myA.DB.ddField.Select("Tableid=" + drTable.TableId.ToString() + " and DBFieldName='" + dr["Column_name"].ToString() + "'").Length == 0)
                    {
                        appDB.ddFieldRow drField = (appDB.ddFieldRow)Add(drTable);
                        drField.FieldName = dr["Column_name"].ToString();

                        if (dtTable.Select("Column_name='" + drField.FieldName + "'", "").Length == 0)
                        {
                            drField.isFromView = true;
                            drField.isMissing  = false;
                        }
                    }
                }
            }
        }
コード例 #2
0
        public DataTable Codes(string name, FileManager fm)
        {
            if (myddLookupDT.Count == 0)
            {
                Load();
            }

            appDB.ddLookupRow[] dlrs = (appDB.ddLookupRow[])myddLookupDT.Select("LookupName='" + name + "'");
            if (dlrs.Length == 1)
            {
                DataTable         dtList;
                appDB.ddLookupRow dlr = dlrs[0];

                string sListname = name + myA.AppMan.Language;

                if (dlr.Cache && myA.myColCodes.ContainsKey(sListname))
                {
                    return((DataTable)myA.myColCodes[sListname]);
                }

                WhereClause wc = new WhereClause();
                if (dlr.UseFileContext && fm != null && !fm.IsVirtualFM)
                {
                    wc.Add("Fileid", "=", fm.CurrentFileId);
                }
                if (!dlr.IncludeObsolete)
                {
                    wc.Add("Obsolete", "=", 0);
                }
                if (!dlr.IsWhereClauseNull())
                {
                    wc.And(dlr.WhereClause);
                }
                switch (dlr.LookupType)
                {
                case "SP":
                    if (dlr.UseFileContext && fm != null && !fm.IsVirtualFM)
                    {
                        dtList = myA.AppMan.ExecuteDataset(dlr.Source, fm.CurrentFileId).Tables[0];
                    }
                    else
                    {
                        dtList = myA.AppMan.ExecuteDataset(dlr.Source, System.DBNull.Value).Tables[0];
                    }
                    break;

                case "SQL":
                    dtList = myA.GetGeneralRec(dlr.Source);
                    break;

                case "VIEW":
                case "TABLE":

                    dtList = myA.GetGeneralRec(dlr.Source, wc);

                    break;

                case "GEN":
                default:
                    wc.Add("LookupId", "=", dlr.LookupId);

                    DataView dv = new DataView(myA.DB.ddGeneric, wc.Filter(), "", DataViewRowState.CurrentRows);
                    dtList = dv.ToTable();
                    dtList.Columns.Remove("LookupId");
                    dtList.Columns.Remove("ParentId");
                    dtList.PrimaryKey = new DataColumn[] { dtList.Columns["GenericId"] };
                    //dtList = myA.GetGeneralRec("vddGenericList",wc);
                    break;
                }

                string sort = "";
                if (!dlr.IsSortcolumnsNull())
                {
                    sort = dlr.Sortcolumns;
                }
                else
                {
                    sort = dtList.Columns[0].ColumnName;
                }

                DataView dv1 = new DataView(dtList, "", sort, DataViewRowState.CurrentRows);
                dtList = dv1.ToTable();

                if (dtList.PrimaryKey.Length == 0)
                {
                    if (!dlr.IsPKNameNull())
                    {
                        dtList.PrimaryKey = new DataColumn[] { dtList.Columns[dlr.PKName] };
                    }
                    else
                    {
                        dtList.PrimaryKey = new DataColumn[] { dtList.Columns[0] };
                    }
                }

                if (dlr.Cache)
                {
                    myA.myColCodes.Add(sListname, dtList);
                }

                return(dtList);
            }
            else
            {
                throw new AtriumException(name + " is not a valid lookup table");
            }
        }