tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
ADOを使ってCSVファイルをMSChartコントロールにセットする(VB6.0) ( No.22 )  [親スレッドへ]
日時: 2007/07/28 14:26
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:ADO,ADODC,データ連結,Recordset,DataSource,                          *
***********************************************************************************
-----------------------------------------------------------------------------------
投稿者:花ちゃん ADOを使ってCSVファイルをMSChartコントロールにセットする 2007/07/26
-----------------------------------------------------------------------------------
HDR=NO や HDR=YES としても、国語、数学、英語 のデータが読み込まれなかったり、2行目の
データが読み込まれなかったりします。

(下記サイトでも問題になっており、解決していないようです。)
http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200405/200405_04050078.html

MSChartコントロール では、最初の行・列のデータが文字列なら項目行として扱うように設定
されているのに対し、ADOでは、1行目を項目行として扱うか、扱わないかの設定になっている
のでこのような事がおきます。
逆に、列の方の項目列は上手く読み込まれる事で理解して頂けるかと思います。

そこで、そう言った事を無視して全ての行、列、をデータ行として読み込むようにしてやれば
いい訳で、HDR=YES とし(既定でHDR=YESなので省略してもよい)、RS.MoveFirst で最初のレコー
ドに移動してから、MSChartコントロール に、Set MSChart1.DataSource = RS としてやれば
全てのデータが、MSChartコントロールにセットされるので、後は、MSChartコントロールが
文字列は、項目として扱ってくれるので上手く表示されるようになります。

当初は、1行目のデータは凡例としてしか使用しないので、別途コードで記入するようにして
いたのですが、テストしていた時に偶然回避策が見つかったので、その方法を掲載して置きます。
(コロンブスの卵と同じで理由と対策が解れば何でもない事です。)


----------------------------------------------------------------------------------
デザイン画面は同じものを使って下さい。
参照設定で Microsoft ActiveX Data Objects 2.* Libraryにチェックを入れておいて下さい

Option Explicit
Private Sub Form_Load()
   Form1.Move 0, 0, 10400, 7000
   MSChart1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
   Dim CN As New ADODB.Connection, RS As New ADODB.Recordset, strSQL As String
   Dim FolderName As String, DataFile As String
   FolderName = App.Path      'データのあるフォルダを取得
   DataFile = "Test.csv"      'データファイル名を取得

    'データベースに接続するための情報を設定する
   CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _
      & FolderName & ";Extended Properties=""text;HDR=YES;FMT=Delimited;"";"
   CN.Open     'コネクションをオープン

   'Recordsetオブジェクトのオープン
   strSQL = "Select * From " & DataFile
   RS.Open strSQL, CN, adOpenStatic, adLockReadOnly, adCmdText
  
   '※ 一旦先頭(最初)のレコードに移動(ここがミソ)
   RS.MoveFirst

   Set MSChart1.DataSource = RS        'MSChartにデータを代入
   MSChart1.ShowLegend = True          '凡例を表示
   'Recordset・Connection を閉じる
   RS.Close
   CN.Close
  
   '参照を解放。
   Set RS = Nothing
   Set CN = Nothing
End Sub

------------------------------------------------------------------------------
 Excel で作成したCSVファイルの図
  http://hanatyan.sakura.ne.jp/samplepic/chartno22-1.gif

  上記コードの実行図
  http://hanatyan.sakura.ne.jp/samplepic/chartno22-2.gif



 [スレッド一覧へ] [親スレッドへ]