Проблема с DataAdapter.Fill

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Emzari
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 129
Зарегистрирован: 06.09.2002 (Пт) 9:08
Откуда: Georgia

Проблема с DataAdapter.Fill

Сообщение Emzari » 10.06.2012 (Вс) 15:38

Привет. Суть проблемы втом что на форме имеется DataGridView контполл в которую загружется разные данные с базы данных SQLExpress в зависимости от выбора пользователя. В принципе всё работает нормално но проблема появляется после сортировки данных в DataGridView. После сортировки новые данные не загружаются а вылетает ошибка "Object reference not set to an instance of an object" при вызове метода DataAdapter.Fill. если ползователть не сортировал данные в DataGridView тогда всё работает правилно и без ошибок. Много рылся но не смог наити причину.

Код выглядит следующим образом:


процедура заполнения DataGridView
Код: Выделить всё
Private Sub FillData()
        Dim sSQL As String = GetQueryString()  'вызов метода задающего SQL команду
        If sSQL = "" Then Exit Sub
        Me.Cursor = Cursors.WaitCursor
        If DSet.Tables.Contains("Temp") Then
            tbl = DSet.Tables("Temp")
            tbl.Clear()
            tbl.Columns.Clear()
        Else
            tbl = DSet.Tables.Add("Temp")
        End If
        If SqlDAL.GetTabular(sSQL, tbl) Then   'SqlDAL это класс который выполняет собственно получение данных из базы данных SQL
            dgDetail.DataSource = Nothing
            dgDetail.Rows.Clear()
            dgDetail.Columns.Clear()
            dgDetail.DataSource = tbl
        Else
            MsgBox(String.Format("Не удалось запольныть таблицу!{0}{1}", vbLf, _
                                 SqlDAL.GetLastException.Message), MsgBoxStyle.Critical)
        End If
        Me.Cursor = Cursors.Default
    End Sub


функция GetTabular определенная в классе SqlDAL вкотором возникает исключение
Код: Выделить всё
Public Shared Function GetTabular(ByVal strSQL As String, ByRef DTable As DataTable, Optional ByVal trans As SqlTransaction = Nothing) As Boolean
        Using cn As New SqlConnection
            cn.ConnectionString = SqlDAL.ConnectionString
            Try
                cn.Open()
            Catch ex As Exception
                _Ex = ex
                Return False
            End Try
            DTable.Clear()
            Dim cmd As SqlCommand = cn.CreateCommand
            cmd.CommandText = strSQL
            cmd.CommandType = CommandType.Text
            Using DAdapter As New SqlDataAdapter(cmd)
                Try
                    DAdapter.Fill(DTable)    'вот на этом вызове возникает исключение если данные в DataGridView были отсорторованы по каоаму нибуды столбцу
                Catch ex As Exception
                    cn.Close()
                    _Ex = ex
                    Return False
                End Try
            End Using
            cn.Close()
        End Using
        Return True
    End Function

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Проблема с DataAdapter.Fill

Сообщение FireFenix » 10.06.2012 (Вс) 17:38

Код сортировки в студию!
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Emzari
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 129
Зарегистрирован: 06.09.2002 (Пт) 9:08
Откуда: Georgia

Re: Проблема с DataAdapter.Fill

Сообщение Emzari » 10.06.2012 (Вс) 17:57

Нету кода сортировки. Сортировка происходит с помошю шелчка на загаловке столбца в DataGridView


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 48

    TopList