/// <summary> /// Асинхронно выполняет загрузку данных и при ошибках показывает сообщение, иначе если все успешно прошло, выполняет делегат /// </summary> /// <param name="sender"></param> /// <param name="caption"></param> /// <param name="argument"></param> /// <param name="execCommand"></param> /// <param name="workSuccessEnded"></param> public static void RunAsyncWithWaitDialog(DependencyObject sender, string caption, object argument, UniDbCommand execCommand, RunWorkerCompletedEventHandler workSuccessEnded) { AbortableBackgroundWorker.RunAsyncWithWaitDialog(sender, caption, (p, pw) => { UniDbAdapter a = pw.Argument as UniDbAdapter; DataSet ds = new DataSet(); a.Fill(ds); pw.Result = ds; }, argument, execCommand, (p, pw) => { if (pw.Cancelled) { return; } else if (pw.Error != null) { MessageBox.Show(pw.Error.GetFormattedException(), "Ошибка получения данных"); } else { workSuccessEnded(p, pw); } }); }
public MessageModel() { try { if (System.ComponentModel.DesignerProperties.GetIsInDesignMode(this)) { return; } _ds = new DataSet(); _ds.Tables.Add("MESSAGE"); _daMessage = new UniDbAdapter( @"select MAX(M.MESSAGE_ID) OVER() MAX_MESSAGE_ID, ROW_NUMBER() over (order by date_message desc) MESSAGE_NUMBER, M.CONTENT_MESSAGE, M.DATE_MESSAGE, MESSAGE_ID from APSTAFF.MESSAGE M where M.APP_NAME_ID = :p_APP_NAME_ID and ((M.MESSAGE_ID > :p_MESSAGE_ID and :p_MESSAGE_ID is not null) or (M.DATE_MESSAGE between trunc(:p_begin_date) and trunc(:p_end_date)+86399/86400)) ORDER BY DATE_MESSAGE DESC", UniDbConnection.Current); _daMessage.SelectCommand.Parameters.Add("p_APP_NAME_ID", UniDbType.Int); _daMessage.SelectCommand.Parameters.Add("p_MESSAGE_ID", UniDbType.Decimal); _daMessage.SelectCommand.Parameters.Add("p_begin_date", UniDbType.DateTime); _daMessage.SelectCommand.Parameters.Add("p_end_date", UniDbType.DateTime); } catch (Exception ex) { } }
/// <summary> /// Создание структуры таблицы по имени таблицы в БД /// </summary> /// <param name="tableName"></param> /// <returns></returns> public static DataTable CreateTable(string tableName, string schemaTable = null) { if (string.IsNullOrWhiteSpace(tableName)) { throw new Exception("Ошибка получения схемы. Не задано имя таблицы"); } UniSchemaTable st = GetTable(tableName); if (st != null) { DataTable table = new DataTable(tableName); foreach (var item in st.Columns) { table.Columns.Add(item.DbColumnName, item.ColumnType); } table.DisplayExpression = st.TableComment; return(table); } else { DataTable t = new DataTable(tableName); UniDbAdapter oda = new UniDbAdapter(UniDbCommand.GetSelectCommand(tableName, schemaTable, "1=2")); oda.Fill(t); return(t); } }
public TestGridView() { InitializeComponent(); DataSet _ds = new DataSet(); UniDbAdapter _da = new UniDbAdapter("SELECT PER_NUM FROM APSTAFF.EMP", UniDbConnection.Current); _da.Fill(_ds, "EMP"); dgEmp.DataContext = _ds.Tables["EMP"].DefaultView; }
/// <summary> /// Инициализация адаптера сохранения данных /// </summary> public virtual void InitializeAdapter() { _dataAdapter = new UniDbAdapter(); UniSchemaColumn[] cols = SchemaTableManager.GetUpdatedColumns(TableName, DataTable).ToArray(); if (cols == null) { return; } _dataAdapter.AcceptChangesDuringUpdate = false; _dataAdapter.InsertCommand = UniCommandBuilder.GetInsertCommand(SchemaTable, TableName, cols); _dataAdapter.UpdateCommand = UniCommandBuilder.GetUpdateCommand(SchemaTable, TableName, cols); _dataAdapter.DeleteCommand = UniCommandBuilder.GetDeleteCommand(SchemaTable, TableName, cols); }