Код выглядит следующим образом:
процедура заполнения 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