コード例 #1
0
        DataTable GetDefinitionTable(string sql)
        {
            DataTable result = null;

            if (IsSQL)
            {
                DbConnection connection = _source.GetOpenConnection();
                Helper.ExecutePrePostSQL(connection, ReportModel.ClearSharedRestrictions(PreSQL), this, IgnorePrePostError);
                result = Helper.GetDataTable(connection, ReportModel.ClearSharedRestrictions(sql));
                Helper.ExecutePrePostSQL(connection, ReportModel.ClearSharedRestrictions(PostSQL), this, IgnorePrePostError);
                connection.Close();
            }
            else
            {
                result = BuildNoSQLTable(false);
            }
            return(result);
        }
コード例 #2
0
        public void AddColumnsFromCatalog(List <MetaColumn> columns, DbConnection connection, MetaTable table)
        {
            if (table.Name == null)
            {
                throw new Exception("No table name has been defined...");
            }

            //handle if table name = dbname.owner.tablename
            string name = table.Name.Replace("[", "").Replace("]", "");

            string[]  names         = name.Split('.');
            DataTable schemaColumns = null;

            Helper.ExecutePrePostSQL(connection, ReportModel.ClearSharedRestrictions(table.PreSQL), table, table.IgnorePrePostError);
            if (names.Length == 3)
            {
                schemaColumns = connection.GetSchema("Columns", names);
            }
            else if (names.Length == 2)
            {
                schemaColumns = connection.GetSchema("Columns", new string[] { null, names[0], names[1] });
            }
            else
            {
                schemaColumns = connection.GetSchema("Columns", new string[] { null, null, name });
            }
            Helper.ExecutePrePostSQL(connection, ReportModel.ClearSharedRestrictions(table.PostSQL), table, table.IgnorePrePostError);

            foreach (DataRow row in schemaColumns.Rows)
            {
                try
                {
                    string     tableName = (!string.IsNullOrEmpty(table.AliasName) ? table.AliasName : Helper.DBNameToDisplayName(row["TABLE_NAME"].ToString().Trim()));
                    MetaColumn column    = MetaColumn.Create(tableName + "." + GetColumnName(row["COLUMN_NAME"].ToString()));
                    column.DisplayName  = table.KeepColumnNames ? row["COLUMN_NAME"].ToString().Trim() : Helper.DBNameToDisplayName(row["COLUMN_NAME"].ToString().Trim());
                    column.DisplayOrder = table.GetLastDisplayOrder();

                    MetaColumn col = table.Columns.FirstOrDefault();
                    if (col != null)
                    {
                        column.Category = col.Category;
                    }
                    else
                    {
                        column.Category = !string.IsNullOrEmpty(table.AliasName) ? table.AliasName : Helper.DBNameToDisplayName(table.Name.Trim());
                    }
                    column.Source = this;
                    string odbcType = "";
                    if (row.Table.Columns.Contains("TYPE_NAME"))
                    {
                        odbcType = row["TYPE_NAME"].ToString();
                    }
                    column.Type = connection is OdbcConnection?Helper.ODBCToNetTypeConverter(odbcType) : Helper.DatabaseToNetTypeConverter(row["DATA_TYPE"]);

                    column.SetStandardFormat();
                    if (!columns.Exists(i => i.Name == column.Name))
                    {
                        columns.Add(column);
                    }
                }
                catch { }
            }
        }