Crystal Reports требует входа при каждой загрузке отчета с использованием C # - PullRequest
0 голосов
/ 28 ноября 2018

Всякий раз, когда я загружаю Crystal Report, он запрашивает мою регистрационную информацию.Я добавил свой код ниже.Может ли какое-нибудь тело помочь мне решить эту проблему?

private void button1_Click(object sender, EventArgs e)
{
    if (TxtCustomer.Text == "" && TxtSONofrom.Text == "" && TxtSONoto.Text == "" && DTSODateFrom.Text != "" && DTSODateTO.Text != "")
    {
        if (MessageBox.Show("Do You Want to Print This Report?", "YESNO", MessageBoxButtons.YesNo) == DialogResult.Yes)
        {
            BrownERP.ReportViewer cr = new BrownERP.ReportViewer();
            cr.BringToFront();
            cr.Show();
            BrownERP.QuatationReport QTNREP = new BrownERP.QuatationReport();
            SqlConnection con = new SqlConnection(connectionpath);
            con.Open();
            SqlCommand cmd = new SqlCommand("select * from Tbl_QTN where SODate between CONVERT(DATETIME,'" + DTSODateFrom.Text + "',103) and CONVERT(DATETIME,'" + DTSODateTO.Text + "',103) ", con);
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            sda.Fill(ds, "Tbl_QTN");
            QTNREP.SetDataSource(ds);

            cr.CRV.ReportSource = QTNREP;
            cr.CRV.Refresh();
            con.Close();

        }
        else
        {
            this.Close();
        }
    }
}

1 Ответ

0 голосов
/ 28 ноября 2018

Поскольку вы создаете новое соединение с SQL каждый раз, когда нажимаете кнопку 1.

SqlConnection con = new SqlConnection(connectionpath);
con.Open(); 

Он запросит учетные данные, если вы не включили учетные данные в свой "путь к соединению".

Я предполагаю, что ваш "путь к соединению" в настоящее время выглядит примерно так.

"Data Source=SERVERNAME;Initial Catalog=DATABASENAME"

Таким образом, вы можете изменить его, чтобы использовать встроенную защиту, то есть пользователь Windows, запускающий приложение.

"Data Source=SERVERNAME;Initial Catalog=DATABASENAME;Integrated Security=SSPI"

Или измените, чтобы использовать определенное имя пользователя и пароль

"Data Source=SERVERNAME;Initial Catalog=DATABASENAME;User ID=YourUserID;Password=YourPassword"

Выполнение этого должно прекратить каждый раз вызывать у вас запрос, но оно будет создавать, открывать, а затем закрывать соединение при каждом нажатии кнопки 1.Если вы хотите открыть соединение и создавать несколько отчетов при открытом соединении, вам нужно создать это вне button1.Я бы порекомендовал установить тайм-аут на это.

Справка по классу соединений SQL https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlconnection?view=netframework-4.7.2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...