2011-12-12 9 views
1

まず第一に、英語はありません!私の最初の/母国語。VB.Net動的チャート作成。レイアウトのヘルプが必要

私のインターンシップでは、私はこの会社のためにいくつかのデータを収集しようとしています。ネットワークには200台のPCがあります。すべてのHP SFF PCすべてのPCはソフトウェアとポリシーを含む会社のディスクイメージで上書きされます。彼らはまた、BIOSアップデートを取得します。しかし、数ヶ月が経過すると、これらのバージョンは時代遅れになります。それはBIOSを更新する必要はありません、私たちは今どのバージョンのどのPCにどのモデルが必要です。

複数のPCモデルがあります。 など。 HP DC7600、HP 7700.

いくつかのBIOSバージョンがあります。 など。 786G1 v01.10、786G1 v01.16

このデータは、次の方法で収集しています。すべてが特定のディスクへのネットワーク共有を持っています(会社の文書)。

クライアント私は必要な情報を収集するためにWMI(Windows Management Instrumentation)を使用しています。

Sub RetrieveInfo() 
    Dim _PCName As String = My.Computer.Name 
    Dim _Info As String = vbNullString 
    Dim _FileName As String = "G:\BiosVersion\" & _PCName & ".txt" 
    Dim _ManagmentC As New ManagementClass("Win32_ComputerSystem") 
    Dim _Moc As ManagementObjectCollection = _ManagmentC.GetInstances 

    For Each _Mo As ManagementObject In _Moc 
     Dim Model() As String = Split(_Mo.Properties("Model").Value.ToString, " ") 
     For i = 0 To Model.Length - 1 
      If Model(i).ToLower.Contains("dc") Then _Info &= Model(i) 
     Next 
    Next 

    _ManagmentC = New ManagementClass("win32_bios") 
    _Moc = _ManagmentC.GetInstances 
    For Each _Mo As ManagementObject In _Moc 
     _Info &= "|" & _Mo.Properties("SMBIOSBIOSVersion").Value.ToString 
    Next 

    Try 
     If IO.File.Exists(_FileName) Then 
      IO.File.Delete(_FileName) 
     End If 
    Catch ex As IO.IOException 
     _FileName = _FileName.Replace(_PCName, _PCName & "-" & New Random().Next(10, 10000)) 
    End Try 

    IO.File.WriteAllText(_FileName, _Info) 

End Sub 

ご覧のとおり、これは文字列PCName(例:PC1001)の共有にテキストファイルとして作成されます。 PCモデル番号& Biosバージョンをテキストファイルに書き込みます。 (例えばdc7900 | 786G1のv01.16)サーバー側については


、チャートの建物部分、私は次のことをやっています。

Dim Path As String = "G:\BiosVersion\" 
Sub UpdateChart() 
    Dim PCModels As New List(Of String) 
    Dim BiosVersions As New List(Of String) 
    Dim Files As IO.FileInfo() = New IO.DirectoryInfo(Path).GetFiles 

    For Each File As IO.FileInfo In Files 
     If File.Extension = ".txt" Then 
      PCModels.Add(IO.File.ReadAllText(File.FullName).Split("|")(0)) 
      BiosVersions.Add(IO.File.ReadAllText(File.FullName).Split("|")(1)) 
     End If 
    Next 
    PCModels = RemoveDuplicates(PCModels) 
    BiosVersions = RemoveDuplicates(BiosVersions) 

    For i = 0 To chartBios.Series.Count - 1 
     chartBios.Series.Remove(chartBios.Series.Item(i)) 
    Next 

    Dim Dictionary As New Dictionary(Of String, Integer) 
    For Each Version As String In BiosVersions 
     chartBios.Series.Add(Version) 
     Dim Count As Integer = 0 
     For Each File As IO.FileInfo In Files 
      If IO.File.ReadAllText(File.FullName).Split("|")(1).ToLower.Trim = Version.ToLower.Trim Then 
       Count += 1 
      End If 
     Next 
     Dictionary.Add(Version, Count) 
    Next 

    For Each Entry As KeyValuePair(Of String, Integer) In Dictionary 
     chartBios.Series(Entry.Key).Points.AddY(Entry.Value) 
    Next 
End Sub 

Function RemoveDuplicates(ByVal inputList As List(Of String)) As List(Of String) 
    Dim uniqueStore As New Dictionary(Of String, Integer)() 
    Dim finalList As New List(Of String)() 
    For Each currValue As String In inputList 
     If Not uniqueStore.ContainsKey(currValue) Then 
      uniqueStore.Add(currValue, 0) 
      finalList.Add(currValue) 
     End If 
    Next 
    Return finalList 
End Function 

chartBios = chartコントロール。

以下になり

:私は何をしようとしている 私はまだ(スパム対策)を任意の画像を投稿することができません http://i.imgur.com/bGpyH.jpg

は以下の通りです。 私は3つのVars、Biosバージョン、各バージョンが何回インストールされています&モデル名。

これは、私が必要とするチャートレイアウトの例です。誰でもこのレイアウトを作成する方法を知っていますか?実行時または静的では、実行時にそれが満たされている限り、私は気にしません。

各Biosのバージョン番号には、BIOSモデルのインストール回数を表すラベル付きの各PCモデルのバーが必要です。

例: 私はMSのチャートコントロールでまだ http://i.imgur.com/tP0Sf.jpg

答えて

0

を(スパム対策)を任意の画像を投稿することはできません、あなたが1つのグラフに複数の系列を追加することができ、各シリーズは、各タイプのためのあなたのPCの種類を表すことになりBIOSのバージョン番号と発生回数が表示されます。

enter image description here

http://msdn.microsoft.com/en-us/library/dd456769.aspx

関連する問題