あなたが大量のデータ取得している場合は読み取り専用このようなルーチンを試してみてください。
Function GetDataTable(ByVal SQL As String, Optional ByVal ConnectString As String = "", Optional ByVal SingleRow As Boolean = False) As DataTable ' returns read only Datatable
Try
If ConnectString.Length = 0 Then ConnectString = g.OISConnectString()
Using con As New System.Data.SqlClient.SqlConnection(ConnectString)
Dim rdr As Data.SqlClient.SqlDataReader
con.Open()
Dim cmd As New SqlCommand(SQL, con)
If SingleRow Then
rdr = cmd.ExecuteReader(CommandBehavior.SingleRow Or CommandBehavior.CloseConnection)
Else
rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)
End If
Dim dt As New DataTable
dt.Load(rdr)
rdr.Close()
Return dt
End Using
Catch ex As Exception
MsgBox(ex.Message, , "GetDataTable")
Return Nothing
End Try
End Function
それが使用するデータテーブル/データセットのオーバーヘッドを通過するOワット
"Current"がすでに取得した行のサブセットである場合は、DatatableからDataviewを作成し、そのビューをグリッドのデータソースとして使用します。データビューフィルタを変更して、「現在の」レコードを表示します。
おそらく、上記のいずれもありません。 CurrentがAllのサブセットである場合、Load allとCurrentをクリックすると、WHERE句で使用したのとほぼ同じテキストを使用して結果をフィルタリングするRowFilterを適用します。 – Plutonix
Plutonix、それはallのサブセットです。私は間違いなくあなたが提案したことをします。私はビジュアルスタジオ2015で両方の方法でテストしようとしていましたが、両方の方法でデータセットをロードするのにかかる時間を見ていましたが、そのようなことをどうやって行うのかわかりません。私はちょうどアップグレードしたので、私はその地域でもっと掘り起こす必要があるかもしれません。しかし、あなたの入力のためにありがとう:) – mee123