投稿日 | : 2003/12/10(Wed) 10:47 |
投稿者 | : しょっぺい |
URL | : |
タイトル | : Re^2: MSChart.ColumnCountについて |
御指摘ありがとうございます。今後気をつけたいと思います。
> 多分、どこかコードが間違っているものと思われます。
> 問題を絞り込む意味でも、まず行数と列数を指定すればそのファイルからグラフを
> 作成できるのか、実コードで確認して下さい。
> その後、行数と列数を変数で渡すようにして見て下さい。
すみません、もう一度コードを見直してみます。
> 又は、その事象が再現できるコードを投稿して頂かないと今の貴方の説明では
> どなたも回答できないかと思います。
すみません。コードが多少長いのですが掲載させて頂きます。
処理の流れは検索条件を選択し、フラグによりSELECT文の条件を変えて検索をし
その検索データをもとに表を作成する。
という物で、この処理は検索して、その検索データをもとに表を作成する部分です。
Private Sub Lv_Type()
'**** 変数 ****
Dim vArray(500, 500) As Variant
Dim w_row As Integer
Dim buf As String
Dim record_count1 As Integer
Dim i As Integer
Dim j As Integer
Dim tmp_col As Integer
Dim tmp_row As Integer
Dim wk_prod_class As String
Dim w_cnt As Integer
On Error GoTo err_Lv_Type
Erase w_data
MSChart1.Legend.Location.Visible = False
Screen.MousePointer = vbHourglass
MSFlexGrid1.Clear
'タイトル表示
MSChart1.TitleText = "データ一覧"
'接続チェック
If fnc_active_check = False Then
MsgBox "接続できませんでした"
Screen.MousePointer = vbDefault
prc_form_end
End If
'グラフ,表の設定 初期値
MSChart1.RowCount = 4
MSChart1.ColumnCount = 4 '<><><>ここではエラーは起きない
MSFlexGrid1.Cols = 5
'表&グラフに月表示
'省略・・
'*****データを取得****************************************
buf1 = fnc_get_data(2) 'サブプログラムにてsql文作成(フラグにより判別)
Set OraDynaset = OraDatabase.DbCreateDynaset(buf1, 0&)
'レコード件数の取得
record_count1 = OraDynaset.RecordCount
'データ配列作成
ReDim w_data(record_count1)
'データを得る
For i = 1 To record_count1
w_data(i).month = OraDynaset.fields("tuki").Value
w_data(i).code = OraDynaset.fields("item_code").Value
w_data(i).name = OraDynaset.fields("item_name").Value
If IsNull(OraDynaset.fields("atai").Value) Then
w_data(i).atai = 0
Else
w_data(i).atai = OraDynaset.fields("atai").Value
End If
OraDynaset.movenext
Next i
i = 0
'表の行を設定 初期値
MSFlexGrid1.Rows = 2
'*****表にセット****************************************
For i = 1 To record_count1
If i = 1 Then
w_cnt = 1
wk_prod_class = w_data(i).code
MSFlexGrid1.Row = 1
MSFlexGrid1.Col = 0
MSFlexGrid1.Text = w_data(i).name
p_prod_class_e = wk_prod_class
End If
'データが変わると行を変える
If wk_prod_class <> w_data(i).code Then
w_cnt = w_cnt + 1
With MSFlexGrid1
.Rows = .Rows + 1
.Row = w_cnt
.Col = 0
.Text = w_data(i).name
End With
wk_prod_class = w_data(i).code
p_prod_class_e = wk_prod_class
End If
'月だけ変わる場合は同じ行にする
If wk_prod_class = w_data(i).code Then
With MSFlexGrid1
.Row = w_cnt
End With
End If
w_row = MSFlexGrid1.Row
For j = 1 To 4
With MSFlexGrid1
.Row = 0
.Col = j
'0行目の月データから入力する列数を判断する
If .Text = month(w_data(i).month) Then
.Row = w_row
.Col = j
'値の表示
.Text = w_data(i).atai
If w_data(i).atai = 0 Then
.Text = ""
End If
End If
End With
Next j
Next i
i = 0
j = 0
'グラフの設定 行数から月、の行を引いた数の凡例
MSChart1.ColumnCount = MSFlexGrid1.Rows - 1
'<><><> ここでエラー このとき MSFlexGrid1.Rows=6
'↑この位置で MSChart1.ColumnCount = 5 としてみたがエラー
'系列の積み重ね
MSChart1.Stacking = True
'******グラフにデータをいれる**************************************
'省略・・