Files
Nuvolar/Nuvolar.Module.Win/Controllers/ZIPHUVC.vb
T
2020-06-09 10:30:25 +02:00

167 lines
6.4 KiB
VB.net

Imports System
Imports System.ComponentModel
Imports System.Collections.Generic
Imports System.Diagnostics
Imports System.Text
Imports DevExpress.ExpressApp
Imports DevExpress.ExpressApp.Actions
Imports DevExpress.Persistent.Base
Imports DevExpress.ExpressApp.Editors
Imports System.Windows.Forms
Imports DevExpress.Data.Filtering
Imports DevExpress.Persistent.BaseImpl
Imports System.Data.OleDb
Public Class ZIPHUVC
Inherits DevExpress.ExpressApp.ViewController
Dim _WaitFormClass As New WaitFormClass
Public Sub New()
MyBase.New()
InitializeComponent()
RegisterActions(components)
End Sub
Protected Overloads Overrides Sub OnActivated()
MyBase.OnActivated()
If View.Id = "Address_DetailView" Then
For Each editor As PropertyEditor In (CType(View, DetailView)).GetItems(Of PropertyEditor)()
If editor.PropertyName = "ZipPostal" Then
AddHandler editor.ControlCreated, AddressOf editor_ControlCreated
Exit For
End If
Next editor
End If
End Sub
Private Sub editor_ControlCreated(ByVal sender As Object, ByVal e As EventArgs)
' You can access the corresponding property editor control by the following code:
Dim editorControl As Control = TryCast((CType(sender, PropertyEditor)).Control, Control)
AddHandler editorControl.HandleCreated, AddressOf editorControl_HandleCreated
Dim _ZipPostal As DevExpress.XtraEditors.TextEdit = TryCast(editorControl, DevExpress.XtraEditors.TextEdit)
If _ZipPostal IsNot Nothing Then
AddHandler _ZipPostal.TextChanged, AddressOf ZipPostal_TextChanged
End If
End Sub
Private Sub editorControl_HandleCreated(ByVal sender As Object, ByVal e As EventArgs)
' Sometimes it is necessary to access editor's control after it is visible (its handle is created).
RemoveHandler (CType(sender, Control)).HandleCreated, AddressOf editorControl_HandleCreated
End Sub
Private Sub ZipPostal_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
Dim _ocur As Xpo.XPObjectSpace = TryCast(View.ObjectSpace, Xpo.XPObjectSpace)
Dim _StringEdit As DevExpress.ExpressApp.Win.Editors.StringEdit = TryCast(sender, DevExpress.ExpressApp.Win.Editors.StringEdit)
If _StringEdit.Text.Length = 4 Then
Dim _ZIPHU As ZIPHU = _ocur.FindObject(Of ZIPHU)(CriteriaOperator.Parse("Zip=?", _StringEdit.Text))
If _ZIPHU IsNot Nothing Then
Dim _Address As Address = TryCast(View.SelectedObjects(0), Address)
_Address.ZipPostal = _StringEdit.Text
_Address.City = _ZIPHU.City
_Address.StateProvince = _ZIPHU.County
End If
End If
End Sub
Private Sub aAddress_LoadZIPHUFromXLS_Execute(sender As Object, e As SimpleActionExecuteEventArgs) Handles aAddress_LoadZIPHUFromXLS.Execute
Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
Dim _ZIP As New ArrayList
Dim _City As New ArrayList
Dim _Country As New ArrayList
Dim _OpenFileDialog As New OpenFileDialog
_OpenFileDialog.Filter = "XLS file (.xls)|*.xls|XLSX file (.xlsx)|*.xlsx|All Files (*.*)|*.*"
If _OpenFileDialog.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
Dim _xlsFile As String = _OpenFileDialog.FileName
Dim _cs As String = "Provider=Microsoft.ACE.OLEDB.12.0;"
_cs += "Data Source=" & _xlsFile.ToString & ";"
_cs += "Extended Properties=""Excel 12.0 Xml;HDR=YES;"""
Dim conn As New OleDbConnection(_cs)
Dim cmd As New OleDbCommand
Dim dr As OleDbDataReader
Dim dr1 As OleDbDataReader
Dim mSQL As String
Dim _UpdatedCount As Long = 0
Try
mSQL = "select * from [Munka1$]"
cmd.CommandTimeout = 60
cmd.Connection = conn
cmd.CommandType = CommandType.Text
cmd.CommandText = mSQL
conn.Open()
If conn.State = ConnectionState.Open Then
Dim _Count As Long = 0
dr1 = cmd.ExecuteReader(CommandBehavior.SingleResult)
While dr1.Read
If dr1(0).ToString <> "" And dr1(0).ToString <> "ZIP" Then
_Count += 1
End If
End While
dr1.Close()
dr = cmd.ExecuteReader(CommandBehavior.SingleResult)
_WaitFormClass.Initwork(1, 1, _Count)
While dr.Read
If dr(0).ToString <> "" And dr(0).ToString <> "ZIP" Then
_ZIP.Add(dr(0).ToString)
_City.Add(dr(1).ToString)
_Country.Add(dr(2).ToString)
_WaitFormClass.DoWork
System.Windows.Forms.Application.DoEvents()
End If
End While
dr.Close()
End If
conn.Close()
Catch ex As Exception
MsgBox(ex.Message)
conn.Close()
End Try
_WaitFormClass.Finalwork
End If
Dim _LineIndex As Long = 0
For Each _ZIP_String As String In _ZIP
System.Windows.Forms.Application.DoEvents()
Dim _ZIPHU As ZIPHU = _onew.FindObject(Of ZIPHU)(CriteriaOperator.Parse("Zip=? AND City=? AND County=?", _ZIP(_LineIndex), _City(_LineIndex), _Country(_LineIndex)))
If _ZIPHU Is Nothing Then
With _ZIPHU
.ID = _LineIndex + 1
.Zip = _ZIP(_LineIndex)
.City = _City(_LineIndex)
.County = _Country(_LineIndex)
End With
End If
Dim _Country_O As Country = _onew.FindObject(Of Country)(CriteriaOperator.Parse("Name=?", _Country(_LineIndex)), True)
If _Country_O Is Nothing Then
_Country_O = New Country(_onew.Session)
With _Country_O
.Name = _Country(_LineIndex)
End With
End If
_LineIndex += 1
Next
_WaitFormClass.Finalwork
_onew.CommitChanges()
End Sub
End Class