1. 程式人生 > 其它 >TeeChart for .NET圖表控制元件如何ADO資料庫訪問?

TeeChart for .NET圖表控制元件如何ADO資料庫訪問?

任何系列都可以使用TeeChart編輯器連線到ADO.NET表或查詢。每個系列都可以使用相同或不同的ADO.NET資料庫連線到相同或不同的表或查詢。

TeeChart for .NET是優秀的 4.0 WinForm 圖表控制元件,官方獨家授權漢化,集功能全面、效能穩定版、優惠等優勢。NET 的 TeeChart for .NET 中文承諾讓您在使用和學習上沒有語言障礙,最少可以節省30%的開發時間。

簡介

將TeeChart控制元件連線到ADO.NET資料庫可以在設計時使用TeeChart編輯器完成,也可以在執行時使用幾行程式碼。

任何系列都可以使用TeeChart編輯器連線到ADO.NET表或查詢。每個系列都可以使用相同或不同的ADO.NET資料庫連線到相同或不同的表或查詢。

這種設計使你在如何將圖表連線到資料庫方面具有完全的靈活性,因為你不會被限制在只有一個數據庫或只有一個表或查詢。

資料也是在設計時檢索的,所以你在開發時可以看到實際的資料。

在設計時連線到ADO.NET

DataAdapter [VS2003]
在設計時,將一個系列連線到一個ADO.NET資料來源的必要步驟是。

1. 從VS.NET工具箱的資料選項卡中,將一個OleDbDataAdapter拖到一個WinForm上,上面有一個TeeChart for .Net物件。
2. 在資料介面卡配置嚮導中點選 "下一步",在下一頁中點選 "新連線... "按鈕。
3. 現在點選新視窗的 "提供者 "標籤,選擇 "Microsoft Jet OLE DB提供者",如下圖所示。

4. 現在點選同一視窗的 "連線 "標籤,從TeeChart for .Net根目錄下的樣本資料資料夾中選擇TeeChart.mdb檔案。

5. 點選 "測試連線 "按鈕來測試連線,然後點選同一視窗的 "確定 "按鈕。

6. 現在點選資料介面卡配置嚮導視窗的 "下一步 "按鈕,在出現的視窗中選擇 "使用SQL語句 "並再次點選 "下一步 "按鈕。

7. 現在點選 "查詢生成器 "按鈕,新增 "僱員 "表。關閉 "新增表 "視窗,選擇 "*(所有列)"複選框。

8. 現在確定這個視窗,點選 "下一步",然後點選 "完成"。

9. 現在開啟TeeChart編輯器,新增一個BarSeries,並導航到Series標籤的DataSource標籤。
10. 從組合框中選擇 "資料庫",從資料集組合框中選擇oleDbDataAdapter1 [System.Data.OleDb.OleDbDataAdapter] 。
11. 設定Labels為 "LASTNAME",Y為 "SALARY",如下圖所示。

12. 現在點選應用按鈕並執行表單;你現在應該有如下的東西。

BindingSource [VS2005,VS2008,VS2010,VS2012,VS2013]

在設計時,將一個系列連線到一個ADO.NET資料來源的必要步驟是。
1. 從VS.NET工具箱的資料選項卡中,將一個BindingSource拖到一個帶有TeeChart for .Net物件的WinForm上。

2. 進入資料標籤,選擇 "顯示資料來源"

3. 在資料來源工具箱上點選右鍵,選擇 "新增新資料來源"。

4. 選擇資料庫,選擇/建立連線字串,在我們的例子中,我們使用Microsoft Access DataBase File(OLE DB),點選繼續。

注意:點選測試連線按鈕,檢查你的資料來源的連線情況。
5. 最後在瀏覽中選擇你要連線的表。

6. 從資料來源工具箱中選擇你想用作資料來源的表,並把它拖到你的表單中。

7. 現在開啟TeeChart編輯器,加入一個BarSeries,並導航到Series標籤的DataSource標籤。
8. 從組合框中選擇 "資料庫",從資料集組合框中選擇bindingSource1。
9. 設定標籤為 "LASTNAME",Y為 "SALARY",如下圖所示。

10. 現在點選 "應用 "按鈕並執行表單;你現在應該有如下內容。

單一記錄

單一記錄圖表允許在TeeChart上顯示單一資料庫記錄的全部或部分記錄。它可能對資料庫檢視或表格很有用,例如,每年的銷售數字被儲存為單獨的月份列,"JAN"、"FEB"、"MAR"......等,通過記錄顯示連續幾年的月度銷售。

單一記錄圖表法支援資料集、表格和資料檢視。使用圖表編輯器選擇單記錄作為圖表系列的資料來源型別。

連線到單一記錄資料所需的大部分步驟都可以通過圖表編輯器實現。為了導航資料來源並相應地更新圖表,你需要使用Windows.Form的CurrencyManager編寫幾行程式碼。請看編碼步驟部分的使用示範。

在執行時連線到ADO.NET

[版本 .net 2003]
DataAdapter
上述設計時的步驟可以通過幾行程式碼以程式設計方式重現。這給了你更多的自由和對資料庫操作的控制。

每個系列都有 "DataSource "屬性,它決定了資料庫值的來源(表或查詢),還有 "YValues.DataMember "和 "LabelMember "屬性,用於指定我們要繪製的欄位。
把一個新的TeeChart for .Net物件拖到一個新的專案和一個新的表格上。

[C#] 
using System.Data; 
using System.Data.OleDb; 
using System.Security; 
using System.Security.Permissions; 
 
private void Form1_Load(object sender, System.EventArgs e) { 
            DataSet masterDataSet = new DataSet(); 
            Bar bar1 = new Bar(tChart1.Chart); 
            try 
            { 
                OpenConnWithJet40(ref masterDataSet); 
                DataTable employeeTable = masterDataSet.Tables["EMPLOYEE"]; 
                bar1.YValues.DataMember = employeeTable.Columns["SALARY"].ToString(); 
                bar1.LabelMember = employeeTable.Columns["LASTNAME"].ToString(); 
                bar1.DataSource = employeeTable; 
            } 
            catch (SecurityException) 
            { 
                MessageBox.Show("The calling method has not been granted sufficient permission to access the Microsoft Jet 4.0 OLE DB Provider."); 
            } 
} 
        
 
 [OleDbPermission(SecurityAction.Demand, Provider = "Microsoft.Jet.OLEDB.4.0")] 
  
private void OpenConnWithJet40(ref DataSet masterDataSet) { 
             
            OleDbConnection testConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data Source=C:\Program Files\Steema Software\TeeChart for .NET v3\Sample data\TeeChart.mdb;");           
            testConn.Open(); 
            string strCom = "SELECT * FROM Employee"; 
            OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom,testConn); 
            myCommand.Fill(masterDataSet, "Employee"); 
            testConn.Close(); 
 
        } 
 
[VB.Net] 
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
            Dim MasterDataSet As New DataSet() 
            Dim Bar1 As New Steema.TeeChart.Styles.Bar(TChart1.Chart) 
            Try 
                OpenConnWithJet40(MasterDataSet) 
                Dim employeeTable As DataTable = MasterDataSet.Tables("Employee") 
                Bar1.YValues.DataMember = employeeTable.Columns("SALARY").ToString() 
                Bar1.LabelMember = employeeTable.Columns("LASTNAME").ToString() 
                Bar1.DataSource = employeeTable 
            Catch ex As Exception 
                MessageBox.Show("Microsoft Jet 4.0 OLE DB Provider problem: " & ex.Message) 
            End Try 
End Sub 
 
Private Sub OpenConnWithJet40(ByRef MasterDataSet As DataSet) 
            Dim TestConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\Program Files\Steema Software\TeeChart for .NET v3\Sample data\TeeChart.mdb;") 
            TestConn.Open() 
 
            Dim StrCom As String = "SELECT * FROM Employee" 
            Dim MyCommand As New OleDbDataAdapter(StrCom, TestConn) 
            MyCommand.Fill(MasterDataSet, "Employee") 
            TestConn.Close() 
        End Sub 
End Class

在.NET 2005版本中,對2005版本的變化不大
[version .net 2005]
DataAdapter

[C#] 
using System.Data; 
using System.Data.OleDb; 
using System.Security; 
using System.Security.Permissions; 
private void Form1_Load(object sender, EventArgs e) 
 { 
            //string ConnString = SqlDataSource1.ConnectionString;       
            string sQuery = "select * from Employee"; 
           
            //SqlConnection myConnection = new SqlConnection(ConnString);             
            string myConnString = "Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\\Program Files\\Steema Software\\TeeChart for .NET v3\\Sample data\\TeeChart.mdb;Uid=Admin;Pwd=;"; 
            System.Data.Odbc.OdbcConnection myConnection = new System.Data.Odbc.OdbcConnection(myConnString); 
           
            //SqlCommand myCommand = new SqlCommand(sQuery, myConnection); 
            System.Data.Odbc.OdbcCommand myCommand = new System.Data.Odbc.OdbcCommand(sQuery, myConnection); 
            myConnection.Open(); 
           
            //SqlDataReader myReader = myCommand.ExecuteReader(); 
            System.Data.Odbc.OdbcDataReader myReader = myCommand.ExecuteReader(); 
 
            int XColumn = myReader.GetOrdinal("ID"); 
            int YColumn = myReader.GetOrdinal("SALARY"); 
            int LabelColumn = myReader.GetOrdinal("LASTNAME"); 
 
            Steema.TeeChart.Styles.Bar bar1 = new Steema.TeeChart.Styles.Bar(tChart1.Chart); 
 
            while (myReader.Read()) 
            { 
                bar1.Add(Convert.ToInt32(myReader[XColumn]), Convert.ToDouble(myReader[YColumn]), Convert.ToString(myReader[LabelColumn])); 
            } 
 
            myReader.Close(); 
            myConnection.Close(); 
} 

[VB.Net] 
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim MasterDataSet As New DataSet() 
        Dim Bar1 As New Steema.TeeChart.Styles.Bar(TChart1.Chart) 
        Try 
            OpenConnWithJet40(MasterDataSet) 
            Dim employeeTable As DataTable = MasterDataSet.Tables("EMPLOYEE") 
            Bar1.YValues.DataMember = employeeTable.Columns("SALARY").ToString() 
            Bar1.LabelMember = employeeTable.Columns("LASTNAME").ToString() 
            Bar1.DataSource = employeeTable 
        Catch ex As Exception 
            MessageBox.Show("Microsoft Jet 4.0 OLE DB Provider problem: " & ex.Message) 
        End Try 
 End Sub 
 
 Private Sub OpenConnWithJet40(ByRef MasterDataSet As DataSet) 
        
        Dim TestConn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\Program Files\Steema Software\TeeChart for .NET v3\Sample data\TeeChart.mdb;") 
        TestConn.Open() 
        Dim StrCom As String = "SELECT * FROM Employee" 
        Dim MyCommand As New OleDb.OleDbDataAdapter(StrCom, TestConn) 
        MyCommand.Fill(MasterDataSet, "Employee") 
        TestConn.Close() 
    End Sub 
 
End Class

如果資料庫的值發生了變化,你想 "重新整理 "連線並再次檢索這些值,你應該這樣做。
TChart1.Series(0).CheckDataSource
CheckDataSource "方法將強制該系列再次檢索所有記錄。
所有的系列也都有 "XValues.ValueSource "屬性。這個屬性只用於XY圖表(當你為每個點有一個X座標時)。

單一記錄

與表的連線

使用圖表編輯器將在表格的初始化中建立以下程式碼。類似的程式碼可以在執行時用於建立和連線新的SingleRecord資料來源。
假設有一個名為sourceTableSet的資料集,表為:sourceTable)。

this.singleRecordSource1 = new Steema.TeeChart.Data.SingleRecordSource(); 
this.sourceTableSet.DataSetName = "NewDataSet"; 
this.sourceTableSet.Tables.AddRange(new System.Data.DataTable[] {this.sourceTable}); 
this.singleRecordSource1.DataSource = this.sourceTableSet; 
this.singleRecordSource1.ValueMembers = new string[] { 
                                                             "JAN", 
                                                             "FEB", 
                                                             "MAR"};

this.bar1 = new Steema.TeeChart.Styles.Bar(); 
this.bar1.DataSource = this.singleRecordSource1; 

表格導航

TeeChart的SingleRecord使用CurrencyManager元件來導航資料庫表並更新Chart。在改變表的記錄後,使用CheckDatasource來更新Chart。

例子

private CurrencyManager myCurrencyManager; 
 
public void ConnectChartToTable() 
{ 
     myCurrencyManager = (CurrencyManager)this.BindingContext[sourceTable]; 
     singleRecordSource1.RecordCurrency=myCurrencyManager; 
     tChart1[0].CheckDataSource(); 
}

該表(和圖表)可以通過使用CurrencyManager來導航。

    private void MovePrevious() 
    { 
      if (myCurrencyManager.Position>0) 
      { 
        myCurrencyManager.Position=myCurrencyManager.Position+1; 
        tChart1[0].CheckDataSource(); 
      } 
    } 
 
    private void MoveNext() 
    { 
      if (myCurrencyManager.Position<myCurrencyManager.Count) 
      { 
        myCurrencyManager.Position=myCurrencyManager.Position+1; 
        tChart1[0].CheckDataSource(); 
      } 
    }

在ASP.NET中使用ADO.NET

你可以通過ASP.NET連線資料來源,在ASP.NET WebForm上使用TeeChart WebChart,其方式與資料來源連線到WinForm上的TeeChart元件的方式幾乎相同。關於ASP.NET的更多資訊,請參見網際網路應用教程。

如果你看到了可愛的動物群,歡迎加入展示區QQ:740060302