示例#1
0
        private void Execute(CommandType commandType, bool executeEach)
        {
            if (executeWorker.IsBusy)
            {
                MessageBox.Show(this, "A command is already in execution, please wait...", this.ProductName);
            }
            else
            {
                try {
                    var args = new CommandArgs();
                    args.CommandType = commandType;
                    args.ExecuteEach = executeEach;

                    IDbCommand command = DbCommandParser.Parse(this.database, SelectedText);
                    if (command.Parameters.Count > 0)
                    {
                        using (ParamsDialog dialog = new ParamsDialog()) {
                            IList <IDataParameter> newParameters = MergeParameters(command.Parameters);
                            dialog.Parameters = newParameters;
                            if (dialog.ShowDialog(this) == DialogResult.OK)
                            {
                                this.parameters = newParameters;
                                command.Parameters.Clear();
                                foreach (IDataParameter p in newParameters)
                                {
                                    command.Parameters.Add(p);
                                }
                            }
                            else
                            {
                                command.Dispose();
                                return;
                            }
                        }
                    }
                    command.CommandTimeout = 0;
                    args.DbCommand         = command;
                    args.RawCommandText    = this.SelectedText;

                    dataGridView.DataSource = null;
                    ClearMessages();
                    statusLabel.Text = "Executing...";
                    EnableUI(false);
                    stopwatch.Reset();
                    executingTimer.Start();
                    executeWorker.RunWorkerAsync(args);
                } catch (Exception ex) {
                    ShowMessage("Exception:");
                    AppendMessage(ex.Message);
                    executingTimer.Stop();
                }
            }
        }
示例#2
0
        private void executeAndSaveToXslxToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var command = DbCommandParser.Parse(this.database, SelectedText);

            if (command.Parameters.Count > 0)
            {
                using (ParamsDialog dialog = new ParamsDialog()) {
                    IList <IDataParameter> newParameters = MergeParameters(command.Parameters);
                    dialog.Parameters = newParameters;
                    if (dialog.ShowDialog(this) == DialogResult.OK)
                    {
                        this.parameters = newParameters;
                        command.Parameters.Clear();
                        foreach (IDataParameter p in newParameters)
                        {
                            command.Parameters.Add(p);
                        }
                    }
                    else
                    {
                        command.Dispose();
                        return;
                    }
                }
            }

            using (var xlsxDialog = new SaveFileDialog()) {
                xlsxDialog.Filter = "Excel Spreadsheet Document (*.xlsx)|*.xlsx";
                if (xlsxDialog.ShowDialog(this) == DialogResult.OK)
                {
                    var args = new ExecuteToXlsxArgs()
                    {
                        Command = command, FileName = xlsxDialog.FileName
                    };
                    ProgressDialog.Run(this, "Executing...", executeToXlsxWorker, true, args);
                }
            }
        }