дата не сравнивается с базой данных, где выбран комбо - PullRequest
0 голосов
/ 10 января 2020

Я создаю проект, в котором пользователь должен выбрать дату в Combobox, но там, где я должен выбрать эту дату в Combobox, которая отображает дату ошибки

Строка не была распознана как допустимый DateTime. ' Я пытаюсь получить дату из базы данных в slq. Ниже мой код

            System.Data.DataTable dt;
       SqlConnection con=new SqlConnection(@"Data Source=krupal;Initial Catalog=LOANNOTICE;Integrated Security=True");
        con.Open();
        this.cmbmonth.FormatString = "yyyy/ MM/dd";
        // DateTime dat = Convert.ToDateTime(cmbmonth.SelectedItem.ToString("yyyy/MM/dd"));
        //var date = cmbmonth.Text;
       //var d1 = Convert.ToDateTime(cmbmonth.Text);
       // MessageBox.Show("" + d1);
        string Querie=("SELECT HCODE ,(select top 1  rtrim(Name) From RNSB_TEST.dbo.FC014076 p with(nolock) where  convert(varchar,PrdCd) = convert(varchar,HCODE)) as PrdName,count(*) as NoOfAcc,round(Sum(BAL2802),2) as PrintAmt ,round(SUM(IntAmt),2) as TotalInt,0 as TDSAmount, round(SUM(IntAmt),2) as NetIntAmt, round((Sum(BAL2802) + SUM(IntAmt)),2)as TotalAmt from LOANNOTICE.dbo.UNCLAIM_DEPO with(nolock) where EffeDate='"+Convert.ToDateTime(cmbmonth.SelectedText).ToString("yyyy/MM/dd") + "' group by HCODE union SELECT HCODE, (select top 1  rtrim(Name) From RNSB_TEST.dbo.FC014076 p with(nolock) where  convert(varchar, PrdCd) = convert(varchar, HCODE)) as PrdName,count(*) as NoOfAcc,round(Sum(MatAmt), 2) as PrintAmt ,round(SUM(IntAmt), 2) as TotalInt,round(sum(TDS_Amount), 2) as TDSAmount, round(SUM(Net_Int), 2) as NetIntAmt, round((Sum(MatAmt) + SUM(Net_Int)), 2) as TotalAmt from LOANNOTICE.dbo.UNCLAIM_DEPO_TDR with(nolock) where EffeDate = '"+Convert.ToDateTime(cmbmonth.SelectedText).ToString("yyyy/MM/dd") + "' group by HCODE");
        SqlCommand cmd = new SqlCommand(Querie, con);
        SqlDataAdapter sda = new SqlDataAdapter(cmd);
        dt = new System.Data.DataTable();
        sda.Fill(dt);

У кого-нибудь есть решение, пожалуйста, дайте мне знать быстро. Спасибо.

Ответы [ 2 ]

0 голосов
/ 10 января 2020

Обращаю ваше внимание на то, что у вас здесь есть пробел:

this.cmbmonth.FormatString = "yyyy/ MM/dd"

В любом случае, вы всегда должны проверять даты, переданные в виде строки, и выдавать исключение, если вы не можете их привести:

if (!DateTime.TryParse(_date, out DateTime date))
{
    throw new InvalidCastException("Not a valid date.");
}

И, наконец, попробуйте установить параметры SqlCommand таким образом, это более читабельно, и вам не нужно иметь дело с интерполяцией строк (проверка:

using (DbConnection connection = new SqlConnection("MyConnectionString"))
{
    using (DbCommand command = new SqlCommand(connection))
    {
        command.CommandType = System.Data.CommandType.Text;
        command.CommandText = "SELECT * FROM MyTable WHERE Date = @Date";
        command.Parameters.Add("@Date", SqlDbType.Date);
        command.Parameters["@Date"].Value = date;
    }
}

Дайте его попробовать! :)

С уважением!

0 голосов
/ 10 января 2020

Вам нужно разобрать строку в допустимое время даты.

Ваша конверсия была неправильной, пожалуйста, преобразуйте строку в дату и затем перейдите к соответствующим полям даты.

см. Ссылку .

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