DataTable GetDefinitionTable(string sql) { DataTable result = null; var finalSQL = sql; try { if (IsSQL) { DbConnection connection = _source.GetOpenConnection(); Helper.ExecutePrePostSQL(connection, Model == null ? ReportModel.ClearCommonRestrictions(PreSQL) : Model.ParseCommonRestrictions(PreSQL), this, IgnorePrePostError); finalSQL = Model == null?ReportModel.ClearCommonRestrictions(sql) : Model.ParseCommonRestrictions(sql); result = Helper.GetDataTable(connection, finalSQL); Helper.ExecutePrePostSQL(connection, Model == null ? ReportModel.ClearCommonRestrictions(PostSQL) : Model.ParseCommonRestrictions(PostSQL), this, IgnorePrePostError); connection.Close(); } else { result = BuildNoSQLTable(false); } } catch (Exception ex) { throw new Exception(ex.Message + "\r\n" + finalSQL); } return(result); }
DataTable GetDefinitionTable(string sql) { DataTable result = null; if (IsSQL) { DbConnection connection = _source.GetOpenConnection(); Helper.ExecutePrePostSQL(connection, ReportModel.ClearCommonRestrictions(PreSQL), this, IgnorePrePostError); result = Helper.GetDataTable(connection, ReportModel.ClearCommonRestrictions(sql)); Helper.ExecutePrePostSQL(connection, ReportModel.ClearCommonRestrictions(PostSQL), this, IgnorePrePostError); connection.Close(); } else { result = BuildNoSQLTable(false); } return(result); }
/// <summary> /// Fill a list of columns from a table catalog /// </summary> 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.ClearCommonRestrictions(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.ClearCommonRestrictions(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 { } } }