110 likes | 246 Views
Van Access naar DOT.NET. Ynte Jan Kuindersma, BIRD Automation Nationale Officedag 2009 EDE, 14 Oktober 2009. Dit gaan we maken. DOT.NET. Disconnected data Gegevens en Programma zijn strikt gescheiden Tabellen en queries beheren in Access/SQL server Formulieren zijn Winforms
E N D
Van Access naar DOT.NET Ynte Jan Kuindersma, BIRD Automation Nationale Officedag 2009EDE, 14 Oktober 2009
DOT.NET • Disconnected data • Gegevens en Programma zijn strikt gescheiden • Tabellen en queries beheren in Access/SQL server • Formulieren zijn Winforms • Rapporten zijn Reporting Tool reports (RDLC) • Echte Windowstoepassing (EXE)
Dataset • Representatie van de databasestructuur, zonder data = tabellen en hun relaties • Bevat tabeladapters die op aanvraag de toegang tot de database regelen en de gegevens echt ophalen • Tabeladapter bevat SQL en de eventuele parameters
Formulier met Klanten • Voeg nieuw Windowsform toe en sleep tabel customers uit dataset (Datasources) naar pagina als Details • 5 objecten op pagina: Tableadaptermanager, Tableadapter, Dataset, Bindingsource en Navigator • Achter de schermen wordt code gemaakt om tableadapter de dataset te laten vullen Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.CustomersTableAdapter.Fill(Me.NorthwindDataSet.Customers) End Sub
Orders per klant in een gridview • Sleep Orders naar Pagina als DataGridView • Gemakkelijkst is de gekoppelde orders slepen dan gaat koppeling hoofd-subformulier automatisch goed • Als je wilt coderen, sleep dan de niet gekoppelde tabel orders naar het formulier • Kleuren even rijen in DataGridView via DataGridViewCellStyle • Verander kolom ProductID van textbox naar Combobox en edit databinding. • Voeg eventueel code toe aan bindingsource (alleen nodig als je hierboven de niet gekoppelde tabel hebt gesleept) Private Sub CustomersBindingSource_CurrentItemChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CustomersBindingSource.CurrentItemChanged Dim taOrders As New NorthwindDataSetTableAdapters.OrdersTableAdapter Dim dtOrder As NorthwindDataSet.OrdersDataTable = taOrders.GetDataBy(Me.CustomerIDTextBox.Text) Me.OrdersDataGridView.DataSource = dtOrder End Sub
Rapport maken • Voeg rapport toe • Voeg Report-tabel toe • Sleep velden uit dataset naar rijen • Voeg Parameter ORDERID toe aan rapport (integer) • Voeg aan tabel filter toe (=Fields!OrderID.Value=Parameters!ORDERID.Value)
Rapport op Pagina • Reportviewer control • Report kiezen als reportsource • Code toevoegen aan DataGridView Private Sub OrdersDataGridView_RowLeave(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles OrdersDataGridView.RowLeave Dim params(0) As Microsoft.Reporting.WinForms.ReportParameter params(0) = New Microsoft.Reporting.WinForms.ReportParameter("ORDERID", Me.OrdersDataGridView.CurrentRow.Cells(0).Value.ToString) ReportViewer1.LocalReport.SetParameters(params) Me.ReportViewer1.RefreshReport() End Sub
Hyperlinks • Visual Basic Express editie • http://www.microsoft.com/express/download • Inclusief SQL-server express • Visual Basic Express editie • http://www.microsoft.com/express/download • Inclusief SQL-server express • Visual Basic Home (Learn/downloads) • http://msdn.microsoft.com/en-us/vbasic/default.aspx
Public Class Form1 Private Sub CustomersBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CustomersBindingNavigatorSaveItem.Click Me.Validate() Me.CustomersBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.NorthwindDataSet) End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.dsFacturenTableAdapter.Fill(Me.NorthwindDataSet.dsFacturen) Me.EmployeesTableAdapter.Fill(Me.NorthwindDataSet.Employees) Me.OrdersTableAdapter.Fill(Me.NorthwindDataSet.Orders) Me.CustomersTableAdapter.Fill(Me.NorthwindDataSet.Customers) Me.ReportViewer1.RefreshReport() End Sub Sub updatelijst() Dim taOrders As New NorthwindDataSetTableAdapters.OrdersTableAdapter Dim dtOrder As NorthwindDataSet.OrdersDataTable = taOrders.GetDataBy(Me.CustomerIDTextBox.Text) Me.OrdersDataGridView.DataSource = dtOrder End Sub Private Sub CustomersBindingSource_CurrentItemChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CustomersBindingSource.CurrentItemChanged Call updatelijst() End Sub Private Sub Form1_Shown(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Shown Call updatelijst() End Sub Private Sub OrdersDataGridView_RowLeave(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles OrdersDataGridView.RowLeave Dim params(0) As Microsoft.Reporting.WinForms.ReportParameter params(0) = New Microsoft.Reporting.WinForms.ReportParameter("ORDERID", Me.OrdersDataGridView.CurrentRow.Cells(0).Value.ToString) ReportViewer1.LocalReport.SetParameters(params) Me.ReportViewer1.RefreshReport() End Sub End Class