示例#1
0
        public override List <RecordSource> FetchRecordSources(bool activeOnly)
        {
            string commandText = @"SELECT RecordSourceType.RSTID, Description, RecordSourceID, Name, IsActive, ConnectionString, CacheLife, SharedSecret
FROM RecordSource
JOIN RecordSourceType on RecordSource.RSTID = RecordSourceType.RSTID";

            if (activeOnly)
            {
                commandText += " WHERE IsActive=1";
            }

            SQLiteCommand command = new SQLiteCommand(commandText, connection);

            SQLiteDataReader reader = command.ExecuteReader();

            List <RecordSource> sources = new List <RecordSource>();

            while (reader.Read())
            {
                RecordSourceType srcType = new RecordSourceType(reader.GetInt32(0), reader.GetString(1));

                sources.Add(new RecordSource(reader.GetInt32(2), srcType, reader.GetString(3), Convert.ToBoolean(reader.GetInt32(4)), reader.GetString(5), reader.GetInt32(6), reader.GetStringSafe(7)));
            }

            return(sources);
        }
示例#2
0
        private void _btnNext_Click(object sender, System.EventArgs e)
        {
            TabPage pg = _tab.SelectedTab;

            // leaving data source page: save changes, update field lists
            if (pg == _pgData)
            {
                DataSource       ds               = _rpt.DataSource;
                DataProvider     dataProvider     = _dsPicker.DataProvider;
                string           conn             = _dsPicker.ConnectionString;
                string           rs               = _dsPicker.RecordSource;
                RecordSourceType recordSourceType = _dsPicker.RecordSourceType;
                object           recordset        = _dsPicker.Recordset;

                // update report's parameters
                _rpt.Parameters.Clear();
                IList <DataSourcePicker.ReportParameterDesc> prms = _dsPicker.GetRecordSourceParameters();
                if (prms != null && prms.Count > 0)
                {
                    // add parameters to the report if it does not contains it
                    foreach (DataSourcePicker.ReportParameterDesc rpd in prms)
                    {
                        ReportParameter rp = new ReportParameter()
                        {
                            Name = rpd.Name, DataType = rpd.Type
                        };
                        _rpt.Parameters.Add(rp);
                    }
                }

                if (ds.DataProvider != dataProvider || ds.ConnectionString != conn || ds.Recordset != recordset || ds.RecordSource != rs || ds.RecordSourceType != recordSourceType)
                {
                    ds.DataProvider     = dataProvider;
                    ds.ConnectionString = conn;
                    ds.RecordSource     = rs;
                    ds.Recordset        = recordset;
                    ds.RecordSourceType = recordSourceType;
                    UpdateFieldLists();
                }

                // set next page
                pg = _pgFields;
            }

            // leaving fields page: enable/disable outline layouts
            // and validate current selection
            else if (pg == _pgFields)
            {
                // enable/disable layout buttons
                bool hasGroups = _lstGroups.Items.Count > 0;
                for (int i = 0; i < _btnsGrp.Length; i++)
                {
                    // enable/disable
                    _btnsGrp[i].Enabled  = hasGroups;
                    _btnsFlat[i].Enabled = !hasGroups;

                    // validate current selection
                    if (hasGroups && _btnsFlat[i].Checked)
                    {
                        _btnsGrp[i].Checked = true;
                    }
                    if (!hasGroups && _btnsGrp[i].Checked)
                    {
                        _btnsFlat[i].Checked = true;
                    }
                }

                // set next page
                pg = _pgLayout;
            }

            // leaving layout page: next is styles or labels
            else if (pg == _pgLayout)
            {
                pg = (_btnLabels.Checked)
                    ? _pgLabels
                    : _pgStyle;
            }

            // leaving style/labels pages: next is always title
            else if (pg == _pgStyle || pg == _pgLabels)
            {
                string title = _txtReportName.Text;
                if (title.Length == 0)
                {
                    title = _dsPicker.RecordSource;
                    title = (title == null || title.Length == 0 ||
                             title.IndexOfAny("*,[];".ToCharArray()) > -1)
                        ? Strings.ReportWizard.NewReport
                        : title + Strings.ReportWizard.SpaceReport;
                    _txtReportName.Text = title;
                }
                _btnNext.Text = Strings.ReportWizard.Finish;
                pg            = _pgTitle;
            }

            // finish wizard
            else if (pg == _pgTitle)
            {
                // we need a report name...
                if (_txtReportName.Text.Trim().Length == 0)
                {
                    MessageForm.Warn(Strings.ReportWizard.EnterNewReportName);
                    _txtReportName.Text = Strings.ReportWizard.NewReport;
                    _txtReportName.Focus();
                    return;
                }

                // done
                CreateReport();
                DialogResult = DialogResult.OK;
                return;
            }

            // show next page
            _tab.SelectedTab = pg;
        }