#眉標=VS2008、VSTO 3.0、Word Content #副標=體驗新一代整合開發環境(16) #大標=自訂套表列印實作 #作者=文/圖 王寧疆 ===<反灰>============= private void btnFirst_Click(object sender, RibbonControlEventArgs e) { Globals.ThisDocument.ordersBindingSource.MoveFirst(); /瀏覽至第一筆記錄 Globals.ThisDocument.ShowAmount(); //計算訂單的總計 } ================ ===<反灰>============= private void btnPrev_Click(object sender, RibbonControlEventArgs e) { Globals.ThisDocument.ordersBindingSource.MovePrevious(); //瀏覽至上一筆 Globals.ThisDocument.ShowAmount(); //計算訂單的總計 } private void btnNext_Click(object sender, RibbonControlEventArgs e) { Globals.ThisDocument.ordersBindingSource.MoveNext(); //瀏覽至下一筆 Globals.ThisDocument.ShowAmount(); } private void btnLast_Click(object sender, RibbonControlEventArgs e) { Globals.ThisDocument.ordersBindingSource.MoveLast(); //瀏覽至最末筆 Globals.ThisDocument.ShowAmount(); } ================ ===<反灰>============= SELECT Orders.OrderID, Orders.ShippedDate, Orders.ShipVia, Orders.ShipAddress + ', ' + Orders.ShipCity + ', ' + Orders.ShipPostalCode + ', ' + Orders.ShipCountry AS ShipAddress, Customers.CompanyName, Customers.ContactName, Customers.Address + ', ' + Customers.City + ', ' + Customers.PostalCode + ', ' + Customers.Country AS Address, Employees.LastName + ' ' + Employees.FirstName AS SalesPerson, Orders.CustomerID, Orders.EmployeeID, Orders.OrderDate, Orders.RequiredDate FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID ================ ===<反灰>============= SELECT Products.ProductName, [Order Details].UnitPrice, [Order Details].Quantity, [Order Details].Discount, ([Order Details].UnitPrice * [Order Details].Quantity) * (1 - [Order Details].Discount) AS Subtotal FROM Orders INNER JOIN [Order Details] ON Orders.OrderID = [Order Details].OrderID INNER JOIN Products ON [Order Details].ProductID = Products.ProductID WHERE (Orders.OrderID = @OrderID) ================ ===<反灰>============= private void ordersBindingNavigatorSaveItem_Click(object sender, EventArgs e) { this.Validate(); //驗証輸入資料 this.ordersBindingSource.EndEdit(); //結束編輯 this.tableAdapterManager.UpdateAll(this.northwindDataSet); //資料寫回資料庫 } private void bindingNavigatorMoveFirstItem_Click(object sender, EventArgs e) { Globals.ThisDocument.ordersBindingSource.MoveFirst(); //瀏覽至第一筆 Globals.ThisDocument.ShowAmount(); //顯示於Word文件訂單的總價 } private void bindingNavigatorMovePreviousItem_Click(object sender, EventArgs e) { Globals.ThisDocument.ordersBindingSource.MovePrevious(); //瀏覽至上一筆 Globals.ThisDocument.ShowAmount(); //顯示於Word文件訂單的總價 } private void bindingNavigatorMoveNextItem_Click(object sender, EventArgs e) { Globals.ThisDocument.ordersBindingSource.MoveNext(); //瀏覽至下一筆 Globals.ThisDocument.ShowAmount(); //顯示於Word文件訂單的總價 } private void bindingNavigatorMoveLastItem_Click(object sender, EventArgs e) { Globals.ThisDocument.ordersBindingSource.MoveLast(); //瀏覽至最末筆 Globals.ThisDocument.ShowAmount(); //顯示於Word文件訂單的總價 } ================ ===<反灰>============= private void ViewOrders_Load(object sender, EventArgs e) { northwindDataSet.EnforceConstraints = false; //關閉記錄內容檢查機制 ordersTableAdapter.Fill(northwindDataSet.Orders); //自資料庫查出訂單記錄並填入資料集 } ================ ===<反灰>============= private void ThisDocument_Startup(object sender, System.EventArgs e) { ViewOrders vo=new ViewOrders(); //建立ViewOrders this.ActionsPane.Controls.Add(vo); //將ViewOrders加入ActionPane的Controls集合 if (this.NeedsFill("northwindDataSet")) //若尚未執行查詢 { northwindDataSet.EnforceConstraints = false; //關閉記錄內容檢查 this.ordersTableAdapter.Fill(this.northwindDataSet.Orders); //讀出訂單記錄 this.orderDetailsTableAdapter.Fill(this.northwindDataSet.OrderDetails, int.Parse(plainTextContentControl6.Text)); //依OrderID查出訂單明細 ShowAmount(); //計算並顯示訂單的總價 } } ================ ===<反灰>============= public void ShowAmount() { double sum = 0; //宣告存放訂單總價的數值 this.orderDetailsTableAdapter.Fill(this.northwindDataSet.OrderDetails, int.Parse(plainTextContentControl6.Text)); //依OrderID查出訂單明細 foreach (NorthwindDataSet.OrderDetailsRow dr in northwindDataSet.OrderDetails.Rows) //取出每一筆明細 { sum += dr.Subtotal; //小計加總到sum變數 } lbTotal.Text = sum.ToString("C"); //將總計值轉成貨幣格式顯示到lbTotal控制項 lbTax.Text = (sum * 0.05).ToString("C"); //將稅金後轉成貨幣格式再顯示到lbTax控制項 lbAmount.Text = (sum * 1.05).ToString("C"); //將總計值加上稅金後轉成貨幣格式再顯示到lbAmount控制項 } ================