Andreas322 Ответов: 1

Фатальная ошибка, возникшая во время выполнения команды


MysqlConn = New MySqlConnection
        MysqlConn.ConnectionString = "server=localhost;userid=root;database=stock_sales_system"
        Dim SDA As New MySqlDataAdapter
        Dim dbDataSet As New DataTable
        Dim bSource As New BindingSource

        Try
            MysqlConn.Open()
            Dim query As String
            query = "SELECT SUM(Quantity) AS Sold
                     FROM invoice_products AS IP, invoice AS I
                     WHERE ProductBarcode LIKE @ProductBarcode AND IP.InvoiceNumber = I.InvoiceNumber AND I.InvoiceDate >= @FromDate AND I.InvoiceDate <= @ToDate;"

            Command.Parameters.Add("@ProductBarcode", MySqlDbType.VarChar).Value = frmManageProducts.ProductTableAdapter.GetBarcode1(cbxProductName.Text)
            Command.Parameters.Add("@FromDate", MySqlDbType.Date).Value = dtpFrom.Value
            Command.Parameters.Add("@ToDate", MySqlDbType.Date).Value = dtpTo.Value

            Command = New MySqlCommand(query, MysqlConn)
            SDA.SelectCommand = Command
            SDA.Fill(dbDataSet)
            bSource.DataSource = dbDataSet
            DataGridView1.DataSource = bSource
            SDA.Update(dbDataSet)
            MysqlConn.Close()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        Finally
            MysqlConn.Dispose()
        End Try


Что я уже пробовал:

я не могу найти, в чем ошибка.. пожалуйста, помогите

Richard MacCutchan

Но вы ожидаете, что мы догадаемся, в чем заключается ошибка и где она происходит?

Andreas322

"Фатальная ошибка, возникшая во время выполнения команды" - это сообщение об исключении.. это происходит в 'SDA.Fill(dbDataSet)'

Richard MacCutchan

В вашем предложении SELECT что-то отсутствует или неверно. Вполне возможно, что вы пытаетесь заполнить Datatable одним значением, то есть суммой предложения SELECT.

Andreas322

я попытался выбрать*, но ничего не изменилось.. я скопировал этот запрос из MySqlWorkbench, где все работают хорошо

Richard MacCutchan

Бесполезно просто беспорядочно менять что-то и надеяться, что это сработает как по волшебству. Используйте отладчик для проверки всех значений параметров, а также правильного написания имен столбцов. Вы уверены, что заявления Command.Parameters.Add("@ToDate", MySqlDbType.Date).Value = dtpTo.Value правильно ли строятся поля параметров?

1 Ответов

Рейтинг:
0

phil.o

Попробуй

query = "SELECT SUM(IP.Quantity) AS Sold FROM invoice_products AS IP INNER JOIN invoice AS I ON IP.InvoiceNumber = I.InvoiceNumber WHERE ProductBarcode LIKE @ProductBarcode AND I.InvoiceDate >= @FromDate AND I.InvoiceDate <= @ToDate"