Imports Microsoft.VisualBasic Imports System Imports System.Collections.Generic Imports System.ComponentModel Imports DevExpress.ExpressApp.Win Imports SISBusiness.Module.Win Imports DevExpress.ExpressApp Imports DevExpress.Xpo Imports DevExpress.Data.Filtering Imports DevExpress.XtraBars.Alerter Imports DevExpress.ExpressApp.Utils Imports DevExpress.ExpressApp.Xpo Imports SISBusiness.Module.GeneralFunction Imports System.Data.SqlClient Partial Public Class SISBusinessWindowsFormsApplication Inherits WinApplication Public Sub New() InitializeComponent() End Sub Private Sub SISBusinessWindowsFormsApplication_DatabaseVersionMismatch(ByVal sender As Object, ByVal e As DevExpress.ExpressApp.DatabaseVersionMismatchEventArgs) Handles MyBase.DatabaseVersionMismatch #If EASYTEST Then e.Updater.Update() e.Handled = True #Else If System.Diagnostics.Debugger.IsAttached Then e.Updater.Update() e.Handled = True Else Throw New InvalidOperationException( _ "The application cannot connect to the specified database, because the latter doesn't exist or its version is older than that of the application." & vbCrLf & _ "This error occurred because the automatic database update was disabled when the application was started without debugging." & vbCrLf & _ "To avoid this error, you should either start the application under Visual Studio in debug mode, or modify the " & _ "source code of the 'DatabaseVersionMismatch' event handler to enable automatic database update, " & _ "or manually create a database using the 'DBUpdater' tool." & vbCrLf & _ "Anyway, refer to the 'Update Application and Database Versions' help topic at http://www.devexpress.com/Help/?document=ExpressApp/CustomDocument2795.htm " & _ "for more detailed information. If this doesn't help, please contact our Support Team at http://www.devexpress.com/Support/Center/") End If #End If End Sub Protected Overrides Function GetTraceLogDirectory() As String Return MyBase.GetTraceLogDirectory() End Function Protected Overrides Function CreateLogonWindowControllers() As System.Collections.Generic.List(Of DevExpress.ExpressApp.Controller) Dim _result As System.Collections.Generic.List(Of DevExpress.ExpressApp.Controller) Dim _CreateLogonWindowsControllerVC As New CreateLogonWindowsControllerVC _result = MyBase.CreateLogonWindowControllers() _result.Add(_CreateLogonWindowsControllerVC) Return _result End Function Protected Overrides Sub CreateDefaultObjectSpaceProvider(args As CreateCustomObjectSpaceProviderEventArgs) args.ObjectSpaceProvider = New XPObjectSpaceProvider(args.ConnectionString, args.Connection) End Sub Protected Overrides Sub OnLoggedOn(args As DevExpress.ExpressApp.LogonEventArgs) MyBase.OnLoggedOn(args) Dim _onew As Xpo.XPObjectSpace = Me.ObjectSpaceProvider.CreateObjectSpace() Dim _uow As New UnitOfWork(_onew.Session.DataLayer) Dim _User As DevExpress.Persistent.BaseImpl.User = _onew.FindObject(Of DevExpress.Persistent.BaseImpl.User)(CriteriaOperator.Parse("Oid=?", SecuritySystem.CurrentUserId)) SISBusiness.Module.LockingModule.ReleaseAllLocking(_uow, _User) Dim cnn As New Object Dim sql As String = "" Select Case GLOBAL_SQLType Case [Module].eSQLType.MSSQL sql = "BEGIN TRANSACTION ROUNDQTT" + vbNewLine sql += "UPDATE StorageComputed SET QTTFree=ROUND(QTTFree,4) WHERE QTTFree<>ROUND(QTTFree,4)" + vbNewLine sql += "UPDATE StorageInRows SET QTT=ROUND(QTT,4) WHERE QTT<>ROUND(QTT,4)" + vbNewLine sql += "UPDATE StorageInRows SET QTT_Out=ROUND(QTT_Out,4) WHERE QTT_Out<>ROUND(QTT_Out,4)" + vbNewLine sql += "UPDATE StorageOutRows SET QTT=ROUND(QTT,4) WHERE QTT<>ROUND(QTT,4)" + vbNewLine sql += "UPDATE StorageOutRows SET QTT_To_DeliveryOut=ROUND(QTT_To_DeliveryOut,4) WHERE QTT_To_DeliveryOut<>ROUND(QTT_To_DeliveryOut,4)" + vbNewLine sql += "UPDATE DeliveryNoteInRows SET QTT=ROUND(QTT,4) WHERE QTT<>ROUND(QTT,4)" + vbNewLine sql += "UPDATE DeliveryNoteOutRows SET QTT=ROUND(QTT,4) WHERE QTT<>ROUND(QTT,4)" + vbNewLine sql += "UPDATE DeliveryNoteOutRows SET QTT_Invoiced=ROUND(QTT_Invoiced,4) WHERE QTT_Invoiced<>ROUND(QTT_Invoiced,4)" + vbNewLine sql += "COMMIT TRANSACTION ROUNDQTT;" Case [Module].eSQLType.MySQL sql = "START TRANSACTION;" + vbNewLine sql += "UPDATE StorageComputed SET QTTFree=ROUND(QTTFree,4) WHERE QTTFree<>ROUND(QTTFree,4);" + vbNewLine sql += "UPDATE StorageInRows SET QTT=ROUND(QTT,4) WHERE QTT<>ROUND(QTT,4);" + vbNewLine sql += "UPDATE StorageInRows SET QTT_Out=ROUND(QTT_Out,4) WHERE QTT_Out<>ROUND(QTT_Out,4);" + vbNewLine sql += "UPDATE StorageOutRows SET QTT=ROUND(QTT,4) WHERE QTT<>ROUND(QTT,4);" + vbNewLine sql += "UPDATE StorageOutRows SET QTT_To_DeliveryOut=ROUND(QTT_To_DeliveryOut,4) WHERE QTT_To_DeliveryOut<>ROUND(QTT_To_DeliveryOut,4);" + vbNewLine sql += "UPDATE DeliveryNoteInRows SET QTT=ROUND(QTT,4) WHERE QTT<>ROUND(QTT,4);" + vbNewLine sql += "UPDATE DeliveryNoteOutRows SET QTT=ROUND(QTT,4) WHERE QTT<>ROUND(QTT,4);" + vbNewLine sql += "UPDATE DeliveryNoteOutRows SET QTT_Invoiced=ROUND(QTT_Invoiced,4) WHERE QTT_Invoiced<>ROUND(QTT_Invoiced,4);" + vbNewLine sql += "COMMIT;" Case [Module].eSQLType.PostgreSQL sql = "BEGIN;" + vbNewLine sql += "UPDATE ""StorageComputed"" SET ""QTTFree""=ROUND(""QTTFree"",4)"" WHERE ""QTTFree""<>ROUND(""QTTFree"",4);" + vbNewLine sql += "UPDATE ""StorageInRows"" SET ""QTT""=ROUND(""QTT"",4)"" WHERE ""QTT""<>ROUND(""QTT"",4);" + vbNewLine sql += "UPDATE ""StorageInRows"" SET ""QTT_Out""=ROUND(""QTT_Out"",4)"" WHERE ""QTT_Out""<>ROUND(""QTT_Out"",4);" + vbNewLine sql += "UPDATE ""StorageOutRows"" SET ""QTT""=ROUND(""QTT"",4)"" WHERE ""QTT""<>ROUND(""QTT"",4);" + vbNewLine sql += "UPDATE ""StorageOutRows"" SET ""QTT_To_DeliveryOut""=ROUND(""QTT_To_DeliveryOut"",4)"" WHERE ""QTT_To_DeliveryOut""<>ROUND(""QTT_To_DeliveryOut"",4);" + vbNewLine sql += "UPDATE ""DeliveryNoteInRows"" SET ""QTT""=ROUND(""QTT"",4)"" WHERE ""QTT""<>ROUND(""QTT"",4);" + vbNewLine sql += "UPDATE ""DeliveryNoteOutRows"" SET ""QTT""=ROUND(""QTT"",4)"" WHERE ""QTT""<>ROUND(""QTT"",4);" + vbNewLine sql += "UPDATE ""DeliveryNoteOutRows"" SET ""QTT_Invoiced""=ROUND(""QTT_Invoiced"",4)"" WHERE ""QTT_Invoiced""<>ROUND(""QTT_Invoiced"",4);" + vbNewLine sql += "COMMIT;" End Select Try Dim _row As Integer = _onew.Session.ExecuteNonQuery(sql) Catch ex As Exception End Try End Sub Protected Overrides Sub OnLoggingOff(args As DevExpress.ExpressApp.LoggingOffEventArgs) MyBase.OnLoggingOff(args) Dim _onew As Xpo.XPObjectSpace = Me.ObjectSpaceProvider.CreateObjectSpace() Dim _uow As New UnitOfWork(_onew.Session.DataLayer) Dim _User As DevExpress.Persistent.BaseImpl.User = _onew.FindObject(Of DevExpress.Persistent.BaseImpl.User)(CriteriaOperator.Parse("Oid=?", SecuritySystem.CurrentUserId)) SISBusiness.Module.LockingModule.ReleaseAllLocking(_uow, _User) End Sub End Class