|
分類:[VB.NET (Windows)]
開発環境:VB.NET 2005
.NET 初心者です。
やりたいことを簡単に説明しますと、
複数テーブルから取得したテーブルをDataGridに初期表示しています。
そのデータから、重複分だけを絞り込み(管理コードで重複分を絞込み)表示させ,ブレイク処理で先頭データだけ色分け
ということをやりたいのですが、プログラム初心者なので、どなたかご教授願いたいです。
@テーブルから、あるコード(管理コード)をキーにして重複分のデータを取得
ADataGrid.RowFilterに検索用として設定しDataGrid表示
BDataGridに表示された結果のデータを読込んでブレイク処理
↓
管理コードブレイク時、1件目のデータのDataGridの行のBackcolorを変えて(例えばグレーなど)
再度、DataGridに表示したいです。
イメージはこちらです。
**************************************
管理CD 列B 列C
A001 \500 ・・・・グレー
A001 \300
A001 \200
A002 \100 ・・・・グレー
A002 \200
A003 \150 ・・・グレー
A003 \250
************************************** 管理CDでソートをして、管理CDの先頭のデータの行だけ色を変えたいです。
<ソースコード>(変数宣言等省略)
@管理コードが重複しているデータを取得
stbSql.Append("select 管理コード from テーブル ")
stbSql.Append("where 管理コード in (select 管理コード from テーブル group by 管理コード having count(*) > 1) ")
cmd.CommandText = stbSql.ToString
cmd.Connection = Conn
Try
Conn.Open()
rdr = cmd.ExecuteReader()
While rdr.Read()
stbDataResult.Append("," & rdr.Item(0))
intDataCount = intDataCount + 1
End While
Catch ex As Exception
MsgBox(ex.ToString)
Exit Sub
Finally
Conn.Close()
Conn = Nothing
End Try
If intDataCount > 0 Then
If stbDataResult.Length >= 2 Then stbDataResult.Remove(0, 1)
txtFilter1.Text = "管理コード in (" & stbDataResult.ToString & ")"
Else
txtFilter1.Text = "1=0"
End If
Else
txtFilter1.Text = ""
End If
FilterOn()
End Sub
Aフィルタ処理して、@で取得した結果をDataGridの検索用に設定
Public Sub FilterOn()
Dim iCount As Integer = 0
Dim stbFilterCondition As New StringBuilder("")
'フィルタ条件の設定
If Not txtFilter1.Text = "" Then stbFilterCondition.Append(" and " & txtFilter1.Text)
If stbFilterCondition.Length >= 4 Then stbFilterCondition.Remove(0, 4) '最初のandを削除
'フィルタ処理
dvSalesMng.RowFilter = stbFilterCondition.ToString
BDataGridに表示された結果のデータを読込んでブレイク処理
出来れば初心者なので、どういう書き方で出来るかソースをご教授していただけたらありがたい限りです。
また、他の方法があれば、ご教授ください。
よろしくお願い致します。
|