C # «Преобразование не удалось при преобразовании даты / времени из символьной строки» Но запрос работает хорошо при запуске на сервере - PullRequest
1 голос
/ 16 марта 2019

Я включаю запрос SQL Server в C # и использую отчет RDLC для отображения результатов запроса.Мой запрос дает правильный результат при запуске на SQL Server, но я получаю ошибку

Преобразование не удалось при преобразовании даты / времени из символьной строки

при использовании его из C #код.Я не мог понять, почему получил эту ошибку.Пожалуйста, помогите мне

C # код:

DateTime Date =DateTime.Parse(d2.Value.Date.ToString());
string format = "yyyy-MM-dd";
MessageBox.Show(Date.ToString(format));             
this.soldItemsDetailsTableAdapter.Fill(this.Daily_Sales_Report.SoldItemsDetails, Date.ToString(format));

Ошибка возникает в последней строке этого кода.

Дата хранится в базе данных в формате 'yyyy-MM-dd', и приведенный выше код создает формат даты в соответствии с требованиями следующего кода:

MessageBox.Show(Date.ToString(format));

Запрос SQL Server:

SELECT 
    b.CompanyID, b.Category, a.ModelNo, a.ProductCode, a.Qty
FROM    
    (SELECT 
         s.DateSold, p.ProductID, p.ModelNo, p.ProductCode, 
         SUM(sipl.SubTotal) AS Qty
     FROM 
         SalesInvoiceProductsList AS sipl 
     INNER JOIN 
         SalesInvoice AS s ON sipl.SalesInvoiceID = s.SalesInvoiceID 
     INNER JOIN 
         Product AS p ON sipl.ProductID = p.ProductID
     GROUP BY 
         p.ModelNo, p.ProductCode, p.ProductID, s.DateSold) AS a 
INNER JOIN 
    (SELECT DISTINCT 
         p.ProductID, p.CompanyID, cat.Category
     FROM 
         Product AS p 
     INNER JOIN 
         Category AS cat ON p.CatID = cat.CatID 
     INNER JOIN 
         Company AS c ON p.CompanyID = c.CompanyID) AS b ON a.ProductID = b.ProductID
WHERE  
    (a.DateSold = @Date)
ORDER BY 
    b.CompanyID

Если я использую простой запрос, который также принимает date ввод вместо этого сложного запроса, то НЕТ ошибки.Однако его сложный запрос прекрасно работает на SQL Server.

1 Ответ

1 голос
/ 16 марта 2019

Я решил проблему, не изменив ничего, кроме запроса.Оба запроса хорошо выполняются на сервере, но интеграция первого запроса вызывает обсуждаемую ошибку, но следующий запрос не выдает никакой ошибки, хотя формат даты одинаков в обоих запросах.Я не мог понять причину.Кто-нибудь может объяснить, почему?

SELECT com.CompanyID AS company, c.Category, p.ModelNo AS Model, (sipl.SubTotal) AS Qty
FROM    SalesInvoiceProductsList AS sipl 
        INNER JOIN SalesInvoice AS s ON sipl.SalesInvoiceID = s.SalesInvoiceID 
        INNER JOIN Product AS p ON sipl.ProductID = p.ProductID 
        INNER JOIN Company AS com ON p.CompanyID = com.CompanyID 
        INNER JOIN Category AS c ON p.CatID = c.CatID
WHERE  (s.DateSold = @Date)
GROUP BY com.CompanyID, c.Category, p.ModelNo,sipl.SubTotal
...