初めまして。トッティ10と申します。
WindowsXpにおきましてVisualBasic6.0にて
開発を行っております。
現在、社員毎の商品毎の販売数を下記のように
一覧表示するDataReportを作成しております。
--------------------
社員ID 社員名
商品名1 販売個数
商品名2 販売個数
・・・
商品名10 販売個数
--------------------
"SHAPE {...} compute ...by..." を使用し、
社員IDでグループ化し、商品毎の販売個数の行を
動的に表示させています。販売個数が5個未満の時に
販売個数を表示しているRptTextBoxの背景色を
赤色に変更しようと思い、以下のようにデザイン、
ソースを組みました。
====================
【デザイン】
--- グループヘッダー ---
textPid textName
--- 詳細(section1) ---
textPname textCount
--- グループフッター ---
(特になし)
・textPid
DataField:id
・textName
DataField:name
・textPname
DataField:productname
DataMember:dbrecord
・textCount
DataField:count
DataMember:dbrecord
【ソース】
--- DataReportを表示するためのフォーム側 ---
Private Sub Command5_Click()
Dim sql As String
Dim cndb As Object
Dim rsdb As Object
Set cndb = CreateObject("ADODB.Connection")
Set rsdb = CreateObject("ADODB.Recordset")
cndb.Open "Provider=MSDataShape;" & _
"Data Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:product.mdb"
sql = "shape {SELECT id, name, productname, count " & _
"FROM product_record INNER JOIN (personal INNER JOIN product_result ON " & _
"personal.id = product_result.p_id) ON " & _
"(product_record.product_id = product_result.product_id) " & _
"} as dbrecord " & _
"compute dbrecord by id, name"
rsdb.Open strsql, conndb
Set Report1.DataSource = rsdb
Report1.Show
End Sub
--- DataReport側 ---
Private WithEvents SetFormat As StdDataFormat
Private Sub DataReport_Initialize()
Set SetFormat = New StdDataFormat
SetFormat.Type = fmtGeneral
Set Me.Sections("section1").Controls("textCount").DataFormat = SetFormat
End Sub
Private Sub SetFormat_Format(ByVal DataValue As StdFormat.StdDataValue)
If DataValue.Value < 5 Then
DataValue.TargetObject.BackColor = vbRed ←×
End If
End Sub
====================
一覧表示は正常に行われているのですが、上記の×の行の
DataValueオブジェクトのTargetObjectが"nothing"のため変更を
行うことができません。何か方法自体に間違いがありますでしょうか?
お気づきの点または解決方法をご存知の方はご教授お願い致します。
ツイート | ![]() |