Mini Kabibi Habibi

Current Path : C:/Users/Public/Documents/DXperience 13.1 Demos/WinForms/VB/XpoTutorials/FreeJoin/
Upload File :
Current File : C:/Users/Public/Documents/DXperience 13.1 Demos/WinForms/VB/XpoTutorials/FreeJoin/FreeJoin.vb

Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Imports DevExpress.Xpo.DB
Imports DevExpress.Data.Filtering
Imports System.Globalization

Namespace DevExpress.Xpo.Demos
    Partial Public Class FreeJoin
        Inherits TutorialControl
        Public Overrides Property SetNewWhatsThisPadding() As Boolean
            Get
                Return True
            End Get
            Set(ByVal value As Boolean)
                MyBase.SetNewWhatsThisPadding() = value
            End Set
        End Property

        Private firstShow() As Boolean = {True, True}

        Public Sub New()
            InitializeComponent()
            CreateConnection()
            xtraTabControl1_SelectedPageChanged(Me, New DevExpress.XtraTab.TabPageChangedEventArgs(xtpSimple, xtpSimple))
        End Sub
        Private session As UnitOfWork
        Private Sub CreateConnection()
            Dim DBFileName As String = DevExpress.Utils.FilesHelper.FindingFileName(Application.StartupPath, "Data\nwind.mdb")
            If (Not String.IsNullOrEmpty(DBFileName)) Then
                Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBFileName

                Dim dataStore As IDataStore = XpoDefault.GetConnectionProvider(connectionString, AutoCreateOption.None)
                Dim dataLayer As IDataLayer = New SimpleDataLayer(dataStore)
                session = New UnitOfWork(dataLayer)
            End If
        End Sub

        Private Sub splitContainerControl1_Resize(ByVal sender As Object, ByVal e As EventArgs) Handles splitContainerControl1.SplitterMoved, splitContainerControl1.Resize
            splitContainerControl1.SplitterPosition = splitContainerControl1.Width \ 2
        End Sub

        Private Sub xtraTabControl1_SelectedPageChanged(ByVal sender As Object, ByVal e As DevExpress.XtraTab.TabPageChangedEventArgs) Handles xtraTabControl1.SelectedPageChanged
            If firstShow(xtraTabControl1.SelectedTabPageIndex) Then
                firstShow(xtraTabControl1.SelectedTabPageIndex) = False
                Select Case xtraTabControl1.SelectedTabPageIndex
                    Case 0
                        LoadFreeJoin()
                    Case 1
                        LoadSuppliersAssociation()
                        LoadSuppliersFreeJoin()
                    Case Else
                End Select
            End If
        End Sub


        '<splitContainerControl1>
        Private Sub LoadSuppliersAssociation()
            Dim sups As New XPCollection(Of Suppliers)(session, CriteriaOperator.Parse("Products[].Count() > 2"))
            gclAssociation.DataSource = sups
        End Sub
        Private Sub LoadSuppliersFreeJoin()
            Dim sups As New XPCollection(Of Suppliers)(session, CriteriaOperator.Parse("[<Products>][^.SupplierID = SupplierID].Count() > 2"))
            gclFreeJoin.DataSource = sups
        End Sub
        '</splitContainerControl1>

        '<gclFreeJoinMain>
        Private Sub LoadFreeJoin()
            Dim view As New XPView(session, GetType(Employees))
            view.Criteria = CriteriaOperator.Parse("[<Orders>][^.EmployeeID = EmployeeID].Count() > 50")
            view.AddProperty("FirstName", "FirstName")
            view.AddProperty("LastName", "LastName")
            view.AddProperty("OrderCount", "[<Orders>][^.EmployeeID = EmployeeID].Count()")
            view.AddProperty("OrderCount2", New JoinOperand("Orders", New OperandProperty("^.EmployeeID") = New OperandProperty("EmployeeID"), Aggregate.Count, Nothing))
            view.AddProperty("City", "City")
            view.AddProperty("CustomersInTheCity", "[<Customers>][^.City = City].Count()")
            view.AddProperty("LastAlphabeticalCustomerInTheCity", "[<Customers>][^.City = City].Max(ContactName)")
            gclFreeJoinMain.DataSource = view
        End Sub
        '</gclFreeJoinMain>
    End Class
End Namespace