[リストへもどる]
一括表示

投稿時間:2003/12/09(Tue) 10:40
投稿者名:しょっぺい
URL :
タイトル:
MSChart.ColumnCountについて
現在VB5.0にてDBから検索したデータの表をMSFlexGridを用いて作成し、
そのデータをMSChartで積み上げ棒グラフ表示するモジュールを作成しています。
データ数が可変なので
MSChart1.ColumnCount = MSFlexGrid1.Rows - 1 (-1 は表の列名部分を引いているからです)
としてグラフのデータ数をセットしているのですが「関数の引数が不正です」というエラーが出てしまいます。
Error.Numberで確認したコード「1101」についてもヘルプに乗っていなくて困っています。
デバックした所MSFlexGrid1.Rowsには6が入っているので問題無い筈なのですが、
MSChart1.ColumnCount の値を変更できない場合(状況)というものが有るのでしょうか??

投稿時間:2003/12/09(Tue) 18:48
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: MSChart.ColumnCountについて
多分、どこかコードが間違っているものと思われます。
問題を絞り込む意味でも、まず行数と列数を指定すればそのファイルからグラフを
作成できるのか、実コードで確認して下さい。
その後、行数と列数を変数で渡すようにして見て下さい。

又は、その事象が再現できるコードを投稿して頂かないと今の貴方の説明では
どなたも回答できないかと思います。
正確なエラーメッセージやエラーが発生している部分も定かでないし、ひょっとして
DBの方でのエラーという事ないですかね。
あなた自身が >問題無い筈なのですが、 と言っておられる物を他の人が解るはずがないかと。

投稿時間: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
    
    '******グラフにデータをいれる**************************************
    '省略・・

投稿時間:2003/12/10(Wed) 12:07
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: MSChart.ColumnCountについて
前回も書きましたが、事象を再現できるコードを投稿して頂かないと
判断できないかと思います。
途中を省略したりしてしまったのでは、原因がどこにあるのか、解らないと
思うのですが、
Private Sub Command1_Click()
    MSChart1.ColumnCount = 4 '<><><>ここではエラーは起きない
    MSChart1.ColumnCount = 5    'MSFlexGrid1.Rows - 1
    '<><><>  ここでエラー このとき MSFlexGrid1.Rows=6
    '↑この位置で MSChart1.ColumnCount = 5 としてみたがエラー
End Sub
当然これではエラーが発生しないのだから。
それと、正確なエラーメッセージは?
一旦、MSChart の部分はすべてコメントアウトして、イミディエイトウィンドウに
データーを表示してみて下さい。
そうすれば、少しは原因が絞り込めるかと思います。