私は、VB で DataTables を作成するために使用する SQL SP と、VB 形式でリストボックス/チャートなどを埋めるために使用する SQL SP を持っています。VB では、OOP を使用しようとしているため、変数にクラスを使用しています。VBには、SPを使用してデータをプルするコードを含む関数があります。この関数は、データをプルするたびに使用したいので、異なるデータ要求ごとに、異なる入力、パラメーターを関数に送信します。
整数データ型の入力パラメーターに対してこれを実現できますが、DataTable 型に対して同じことを行うことに固執しています。できれば同じ DataTable を使用したいのですが、関数を再度実行して別のコンテナー (リストボックス、チャートなど) を埋めると、DataTable に新しいデータが読み込まれるため、最初のコンテナーのデータが失われ、空になります。これはもちろん、最初のデータセットが最初のコンテナを満たすために使用された後です。DataTable にはコンテナへの「永続的な」リンクがあり、データが取り込まれたままになっていると思いますか?
これにより、複数の DataTable を宣言し、コンテナーごとに異なるものを渡すことになりました。ここで、DataTable 型を宣言して渡すという問題が発生します。この問題の解決策はありますか? 別の質問は、DataTable クラスを持つことは可能ですか?? MS SQL Server 2012 と MS Visual Studio 2010 を使用しています。
これは、DataTable を埋める関数がどのように見えるかです。
Public Function outputData(ByVal beg_Date, ByVal end_Date, ByVal ID1, ByVal proC, ByRef dDataTable)
If conn.State = ConnectionState.Open Then pData.Clear()
SQLcomm = New SqlClient.SqlCommand(proC, conn)
SQLcomm.CommandType = CommandType.StoredProcedure
SQLcomm.Parameters.AddWithValue("@begDate", SqlDbType.Date).Value = beg_Date
SQLcomm.Parameters.AddWithValue("@endDate", SqlDbType.Date).Value = end_Date
SQLcomm.Parameters.AddWithValue("@ID1", SqlDbType.Int).Value = ID1
aDapter.SelectCommand = SQLcomm
aDapter.Fill(dDataTable)
Return pData
End Function
proC は SQL プロシージャ パラメータ、dDataTable は DataTable パラメータです。ヒントをいただければ幸いです。
ありがとうございました、