Member 13864666 Ответов: 1

Как добавить несколько строк данных в datagridview, который имеет один и тот же идентификатор в базе данных VB.NET SQL server


Привет!

Мой ввод-это идентификатор счета, где пользователь ссылается на идентификатор счета для поиска своих деталей заказа. Теперь, если пользователь сделал несколько заказов под одним идентификатором счета-фактуры, будут строки данных для заказа, который имеет один и тот же идентификатор счета-фактуры. Проблема с моим кодом заключается в том, что он читает только первую строку данных, которая имеет тот же идентификатор счета, и не читает остальные строки данных, которые имеют тот же идентификатор.

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

Imports System.Data.SqlClient
Public Class payment
    Dim con As New SqlConnection("server = DESKTOP-SNQAJCQ;Database=SDP;Integrated security=SSPI")
    Dim dr As SqlDataReader
    Private Sub btnsearch_Click(sender As Object, e As EventArgs) Handles btnsearch.Click

        Dim i As Integer
        con.Open()

        Dim searchQuery As String = "SELECT * From Order_ WHERE id=@id "

        Dim cmd As New SqlCommand(searchQuery, con)
        cmd.Parameters.Add("@id", SqlDbType.Int).Value = txtinvoice.Text
        dr = cmd.ExecuteReader
        While dr.Read
            i += 1
            dgwPayment.Rows.Add(dr.Item("item_description").ToString,
                                dr.Item("unit_price").ToString,
                                dr.Item("weight_").ToString,
                                dr.Item("quantity").ToString,
                                dr.Item("total").ToString,
                                dr.Item("special_remarks").ToString)
        End While

    End Sub
End Class

Maciej Los

Вы уверены, что есть записи с одинаковым идентификатором?

1 Ответов

Рейтинг:
0

OriginalGriff

Мы не можем сказать: у нас нет никакого доступа к вашим данным.
Так что все будет зависеть от тебя.
К счастью, у вас есть инструмент, который поможет вам выяснить, что происходит: отладчик.
Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что то, что вы ожидали, произойдет именно так, как и произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Извините, но мы не можем этого сделать для вас - пришло время освоить новый (и очень, очень полезный) навык: отладку!

Но сделай себе одолжение или два:
1) не жестко кодируйте строки подключения: это означает, что вам нужно изменить их в огромном количестве мест, когда вы выпускаете программное обеспечение. Используйте конфигурационный файл для его хранения. (Как я это делаю, немного сложнее, но это экономит время позже: Хранилище экземпляров - простой способ обмена конфигурационными данными между приложениями[^] - код написан на C#, но это довольно очевидно).

2) Не передавайте непроверенные данные в SQL: проверьте содержимое текстового поля, прежде чем предполагать, что оно содержит допустимые числовые данные! Если вы этого не сделаете, SQL выдаст исключение, и ваше приложение выйдет из строя. Воспользуйся Целое число.Метод tryparse[^] чтобы проверить и преобразовать, затем передайте целочисленное значение в SQL и пожалуйтесь пользователю, если это не так!