Пример #1
0
 /// <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);
         }
     });
 }
Пример #2
0
        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)
            { }
        }
Пример #3
0
        /// <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);
            }
        }
Пример #4
0
        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;
        }
Пример #5
0
        /// <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);
        }