C # Преобразование не удалось при преобразовании даты и / или времени из строки символов - PullRequest
2 голосов
/ 06 декабря 2011

Я гуглил последние несколько часов, и ни один из этих вопросов не может быть применим к моему делу, так что, надеюсь, вы, ребята, можете помочь. У меня есть приложение для отчетов, в котором пользователь может выбрать дату из DateTimePicker, и будет отображен элемент с наибольшим количеством. Я использую элемент управления просмотра отчетов для отображения информации.

Вот SQL-запрос в моем табличном адаптере:

SELECT TOP (1) 
   Drink_Name, 
   SUM(Quantity) AS NoDrink, 
   Bill_No, 
   Staff_No, 
   Bill_Date, 
   Bill_Value, 
   Customer_No, 
   Unit_Price, 
   Quantity
FROM            

   (SELECT        
        Bill.Bill_No,
        Bill.Staff_No, 
        Bill.Bill_Date, 
        Bill.Bill_Value, 
        Bill.Customer_No, 
        Bill_Detail.Drink_Name, 
        Bill_Detail.Bill_No AS Expr1, 
        Bill_Detail.Unit_Price, 
        Bill_Detail.Quantity
    FROM 
        Bill INNER JOIN
         Bill_Detail ON Bill.Bill_No = Bill_Detail.Bill_No
    WHERE        
        (Bill.Bill_Date = @Bill_Date)
   ) AS Temp
   GROUP BY Drink_Name, 
        Bill_No, 
        Staff_No, 
        Bill_Date, 
        Bill_Value, 
        Customer_No, 
        Unit_Price, 
        Quantity
ORDER BY NoDrink DESC

А вот код для генерации и загрузки данных в набор данных отчета

CoffeeShopDataSetTableAdapters.DataTable1TableAdapter adapter = 
    new CoffeeShopDataSetTableAdapters.DataTable1TableAdapter();
CoffeeShopDataSet.DataTable1DataTable table = 
    new CoffeeShopDataSet.DataTable1DataTable();
adapter.FillByMax(table, dateTimePicker1.Value.ToShortDateString());
ReportDataSource maxdatasource = 
    new ReportDataSource("DataSet1form3", (DataTable)table);

this.reportViewer1.LocalReport.DataSources.Clear();
this.reportViewer1.LocalReport.DataSources.Add(maxdatasource);
this.reportViewer1.LocalReport.Refresh();
this.reportViewer1.RefreshReport();

Проблема в том, что я всегда получаю эту ошибку:

"Произошло необработанное исключение типа 'System.Data.SqlClient.SqlException' в System.Data.dll

Дополнительная информация: преобразование не выполнено при преобразовании даты и / или времени из строки символов. "

Когда я пытаюсь выполнить SQL-запрос с SQL Server Management 2008, он работает просто отлично, поэтому я думаю, что это проблема VS. Спасибо всем заранее. Извините за плохой английский

1 Ответ

0 голосов
/ 06 декабря 2011

Я бы явно указал ваши даты, чтобы не было путаницы между форматами даты и времени.

1) Измените строку, конвертирующую дату, в строку с явным форматом

dateTimePicker1.Value.ToString("yyyyMMdd");

2) Измените SQL (при условии, что столбец Bill.Bill_Date представляет собой дату

(Bill.Bill_Date = CONVERT(DATE, @Bill_Date, 112)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...