Playground Sunshine Inc.

' Dim love = (from heart In you select heart.I_Love_You).FirstOrDefault

IISWMSVC_AUTHENTICATION_UNABLE_TO_READ_CONFIG Error Setting up FTP on IIS —

Details error :

An unexpected error occurred while retrieving the authentication information.
Exception:System.UnauthorizedAccessException: Filename: \\?\C:\Windows\system32\inetsrv\config\redirection.config
Error: Cannot read configuration file due to insufficient permissions
at Microsoft.Web.Administration.Interop.AppHostAdminManager.GetAdminSection(String bstrSectionName, String bstrSectionPath)
at Microsoft.Web.Administration.Configuration.GetSectionInternal(ConfigurationSection section, String sectionPath, String locationPath)
at Microsoft.Web.Administration.ConfigurationManager.LoadRedirectionInfo()
at Microsoft.Web.Administration.ConfigurationManager.GetAdministrationConfigMapIfNeeded()
at Microsoft.Web.Administration.ConfigurationManager.SetAdminManagerProperties(WebConfigurationMap webConfigMap, Boolean isAdminConfig, IAppHostAdminManager adminManager, Boolean isRemote)</em></div>
at Microsoft.Web.Administration.ConfigurationManager.CreateAdminManager[TClass,TInterface](WebConfigurationMap webConfigMap, Boolean isAdminConfig)
at Microsoft.Web.Administration.ConfigurationManager.CreateConfiguration(WebConfigurationMap configMap, String configPathToEdit, Boolean isAdminConfig)
at Microsoft.Web.Administration.ConfigurationManager.GetConfiguration(String rawConfigurationPath, String cacheKey, Boolean isAdminConfig)
at Microsoft.Web.Management.Server.ConfigurationAuthenticationProvider.GetSection(ServerManager serverManager)
Process:dllhost
User=NT AUTHORITY\NETWORK SERVICE
An unexpected error occurred while retrieving the authentication information.
Exception:System.UnauthorizedAccessException: Filename: \\?\C:\Windows\system32\inetsrv\config\redirection.configError: Cannot read configuration file due to insufficient permissions

at Microsoft.Web.Administration.Interop.AppHostAdminManager.GetAdminSection(String bstrSectionName, String bstrSectionPath)   at Microsoft.Web.Administration.Configuration.GetSectionInternal(ConfigurationSection section, String sectionPath, String locationPath)   at Microsoft.Web.Administration.ConfigurationManager.LoadRedirectionInfo()   at Microsoft.Web.Administration.ConfigurationManager.GetAdministrationConfigMapIfNeeded()   at Microsoft.Web.Administration.ConfigurationManager.SetAdminManagerProperties(WebConfigurationMap webConfigMap, Boolean isAdminConfig, IAppHostAdminManager adminManager, Boolean isRemote)   at Microsoft.Web.Administration.ConfigurationManager.CreateAdminManager[TClass,TInterface](WebConfigurationMap webConfigMap, Boolean isAdminConfig)   at Microsoft.Web.Administration.ConfigurationManager.CreateConfiguration(WebConfigurationMap configMap, String configPathToEdit, Boolean isAdminConfig)   at Microsoft.Web.Administration.ConfigurationManager.GetConfiguration(String rawConfigurationPath, String cacheKey, Boolean isAdminConfig)   at Microsoft.Web.Management.Server.ConfigurationAuthenticationProvider.GetSection(ServerManager serverManager)
Process:dllhostUser=NT AUTHORITY\NETWORK SERVICE

Solution:

You need to give permission to C:\Windows\System32\inetsrv\config folder to Network Service user.


File Upload using JQuery Plupload plugin and ASP.NET —

Plupload is another JQuery plugin for multiple files upload that employs various runtime including gears, flash, silverlight, browserplus and html5 to performs the file upload process.  In this post i will show everyone on how to integrate this plugin into ASP.NET + some tweak to existing plugin to reset the interface..

Things you needed :

  1. jQuery 1.4 ++
  2. plupload.full.js
  3. jquery.plupload.queue.js
  4. jquery.plupload.queue.css

Note: all the plugin resources and script can be download from here

Alright let’s start with the copy and paste code (add an aspx page into you project, and follow the instruction below):
The Head….

    <link href="assets/css/jquery.plupload.queue.css" rel="stylesheet" type="text/css" />
    <script src="assets/js/jquery-1.6.1.js" type="text/javascript"></script>
    <script src="assets/js/plupload.full.js" type="text/javascript"></script>
    <script src="assets/js/jquery.plupload.queue.js" type="text/javascript"></script>

The Script….

        $(function () {
            $("#uploader").pluploadQueue({
                // General settings,silverlight,browserplus,html5gears,
                runtimes: 'gears,flash,silverlight,browserplus,html5',
                url: 'FileUpload.ashx',
                max_file_size: '10mb',
                chunk_size: '1mb',
                unique_names: true,

                // Specify what files to browse for
                /*filters: [
                { title: "Image files", extensions: "jpg,gif,png" },
                { title: "Zip files", extensions: "zip" }
                ],*/

                // Flash settings
                flash_swf_url: 'assets/resources/plupload.flash.swf',

                // Silverlight settings
                silverlight_xap_url: 'assets/resources/plupload.silverlight.xap',

                init: {
                    FileUploaded: function (up, file, info) {

                    }
                }
            });

            // Client side form validation
            $('form').submit(function (e) {
                var uploader = $('#uploader').pluploadQueue();

                // Validate number of uploaded files
                if (uploader.total.uploaded == 0) {
                    // Files in queue upload them first
                    if (uploader.files.length > 0) {
                        // When all files are uploaded submit form
                        uploader.bind('UploadProgress', function () {
                            if (uploader.total.uploaded == uploader.files.length)
                                $('form').submit();
                        });

                        uploader.start();
                    } else
                        alert('You must at least upload one file.');

                    e.preventDefault();
                }
            });

            //tweak to reset the interface for new file upload, the core API didn't provide this functionality
            $('#btnReset').click(function () {
                var uploader = $('#uploader').pluploadQueue();

                //clear files object
                uploader.files.length = 0;

                $('div.plupload_buttons').css('display', 'block');
                $('span.plupload_upload_status').html('');
                $('span.plupload_upload_status').css('display', 'none');
                $('a.plupload_start').addClass('plupload_disabled');
                //resetting the flash container css property
                $('.flash').css({
                    position: 'absolute', top: '292px',
                    background: 'none repeat scroll 0% 0% transparent',
                    width: '77px',
                    height: '22px',
                    left: '16px'
                });
                //clear the upload list
                $('#uploader_filelist li').each(function (idx, val) {
                    $(val).remove();
                });
            });
        });

The Body….

    <input id="btnReset" type="button" value="New Upload" />
    <div id="uploader">
        <p>
            You browser doesn't have Flash, Silverlight, Gears, BrowserPlus or HTML5 support.</p>
    </div>

The Code (HttpPostedFile Handler), Add ASP.NET Generic Handler File (.ashx)
Note : use this if you are using HttpPostedFile Functionality

<%@ WebHandler Language="VB" Class="FileUpload" %>

Imports System
Imports System.Web

Public Class FileUpload : Implements IHttpHandler

    Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
        If context.Request.Files.Count > 0 Then

            For a As Integer = 0 To context.Request.Files.Count - 1
                Dim file As HttpPostedFile = context.Request.Files(a)
                file.SaveAs(context.Server.MapPath("upload/" & file.FileName))
            Next
        End If

    End Sub

    Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
        Get
            Return False
        End Get
    End Property

End Class

The Code (FTP Upload Handler), Add ASP.NET Generic Handler File (.ashx)
Note: Use this if you are using FTP File Upload Functionality

<%@ WebHandler Language="VB" Class="FileFTPUpload" %>

Imports System
Imports System.Web
Imports System.Net
Imports System.IO

Public Class FileFTPUpload : Implements IHttpHandler

    Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
        If context.Request.Files.Count > 0 Then

            For a As Integer = 0 To context.Request.Files.Count - 1
                Dim clsRequest As System.Net.FtpWebRequest = _
                    DirectCast(System.Net.WebRequest.Create(
                            "ftp://ftphost/" & context.Request.Files(a).FileName),
                            System.Net.FtpWebRequest)
                clsRequest.Credentials = New System.Net.NetworkCredential("ftpuser", "ftppass")
                clsRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile

                Dim streamReader As Stream = context.Request.Files(a).InputStream
                Dim bFile(streamReader.Length) As Byte

                streamReader.Read(bFile, 0, streamReader.Length)
                streamReader.Close()
                streamReader.Dispose()

                Dim clsStream As System.IO.Stream = _
                    clsRequest.GetRequestStream()
                clsStream.Write(bFile, 0, bFile.Length)
                clsStream.Close()
                clsStream.Dispose()
            Next
        End If

    End Sub

    Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
        Get
            Return False
        End Get
    End Property

End Class

Alright it’s done… you can copy and paste the source code above or simply download the entire source code here and tested it… Happy programming :)


“Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLength property.” —

Today i receive this error after try loading big chunk of data into JSON via ASP.NET Ajax Web Method. After reading through document inside the MSDN documentation i found out that the default maximum length of character allowed is  102400. In order to change this default character length copy and paste configuration below and place it inside web.config file.

<system.web.extensions>
    <scripting>
      <webServices>
        <jsonSerialization maxJsonLength="2147483644"></jsonSerialization>
      </webServices>
    </scripting>
</system.web.extensions>

Read below article on MSDN to get further information about how to configure Service in Microsoft AJAX
How to: Configure ASP.NET Services in Microsoft Ajax

Happy Programming :0


Generate random password or key with System.Security.Cryptography in .NET —

Let’s make it short… if you need a functionality to randomize alphanumeric + special character password in .NET, below is the code that you can copy and paste to make it work for you.. it utilize static class (RandomGenerator) from System.Security.Cryptography namespace.

Imports System
Imports System.IO
Imports System.Text
Imports System.Security.Cryptography

Public NotInheritable Class clsRandomGenerator

        Protected Const ALPHA_UPPERCASE As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        Protected Const ALPHA_LOWERCASE As String = "abcdefghijklmnopqrstuvwxyz"
        Protected Const NUMERIC As String = "0123456789"
        Protected Const SPECIAL_CHAR As String = "!@#$%^&*"
        Protected Const ALPHA_NUMERIC As String = ALPHA_UPPERCASE & ALPHA_LOWERCASE & NUMERIC & SPECIAL_CHAR

        Public Shared Function GetRandomPassword() As String
            Dim RandomData As String = String.Empty
            Dim intPosition As Integer = 0
            Dim intLength As Integer = 10

            Dim data As Byte() = New Byte(intLength) {}
            Dim charSetLength As Integer = ALPHA_NUMERIC.Length
            Dim randomize As RandomNumberGenerator = RandomNumberGenerator.Create()
            randomize.GetBytes(data)
            For index As Integer = 0 To intLength - 1
                intPosition = data(index)
                intPosition = intPosition Mod charSetLength
                RandomData = (RandomData + ALPHA_NUMERIC.Substring(intPosition, 1))
            Next
            Return RandomData
        End Function
End Class

To read more about System.Security.Cryptography.RandomNumberGenerator class visit here .

Happy programming :)


System.Security.SecurityException: Requested registry access is not allowed —

I have face this error message while trying to write log information to Windows Server EventLog via code below :

My.Application.Log.WriteEntry(ex.ToString, TraceEventType.Error)

and here’s my web configuration for logging functionality:

<system.diagnostics>
		<sources>
			<source name="DefaultSource" switchName="DefaultSwitch">
				<listeners>
					<add name="EventLog"/>
				</listeners>
			</source>
		</sources>
		<switches>
			<add name="DefaultSwitch" value="Information"/>
		</switches>
		<sharedListeners>
			<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="PRRT">
				<filter type="System.Diagnostics.EventTypeFilter" initializeData="Error"/>
			</add>
		</sharedListeners>
	</system.diagnostics>

When i deployed this application inside IIS on window server i keep on getting this error message:

System.Security.SecurityException: Requested registry access is not allowed

In order to solve this problem what we need to do is, open up window server registry editor via (regedit command) and navigate to this key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application.
Add a new key to this entry and in my cases it would be ‘PRRT‘, now try refreshing your page… and things would be going just fine.

Happy Programming :)


Using WebClient to Read XML File from Silverlight Application —

I always love XML, most of the software i developed will have it’s own xml file, mostly for storing custom configuration. For today i will show a simple example on how to use WebClient class to access xml file in Silverlight application. So let’s get started and fired up our favorite tools Visual Studio and create a new Silverlight Project.

First of all we need to create a sample xml file and put it inside ClientBin folder that resides on our Silverlight Web Project. Here’s my sample xml file:

<?xml version="1.0" encoding="utf-8" ?>
<!-- Configuration files for Web Map Services (BaseMap and Dynamic Layer)-->
<Services GeometryServices="http://localhost/ArcGIS/rest/services/Geometry/GeometryServer">
  <Service>
    <RestWebServices>
      <BaseMap Id="MelakaBaseMap" Name="Melaka BaseMap" Href="http://localhost/ArcGIS/rest/services/MelakaBaseMap/MapServer" />
      <DynamicLayer>
        <Layer Id="MelakaNDCDBLot" Name="NDCDB Lot Layer" Href="http://localhost/ArcGIS/rest/services/MelakaNDCDBLot/MapServer" />
        <Layer Id="MelakaQT" Name="QT Layer" Href="http://localhost/ArcGIS/rest/services/MelakaQT/MapServer" />
        <Layer Id="MelakaFT" Name="FT Layer" Href="http://localhost/ArcGIS/rest/services/MelakaFT/MapServer" />
      </DynamicLayer>
      <QueryLayer>
        <Layer Id="WMSDaerah" Name="Daerah" Href="http://localhost/ArcGIS/rest/services/MelakaBaseMap/MapServer/8" />
        <Layer Id="WMSMukim" Name="Mukim" Href="http://localhost/ArcGIS/rest/services/MelakaBaseMap/MapServer/7" />
        <Layer Id="WMSSeksyen" Name="Seksyen" Href="http://localhost/ArcGIS/rest/services/MelakaBaseMap/MapServer/6" />
        <Layer Id="WMSTownKg" Name="TownKg" Href="http://localhost/ArcGIS/rest/services/MelakaBaseMap/MapServer/3" />
        <Layer Id="WMSLot" Name="NDCDB Lot" Href="http://localhost/ArcGIS/rest/services/MelakaNDCDBLot/MapServer/2" />
        <Layer Id="WMSQT" Name="QT" Href="http://localhost/ArcGIS/rest/services/MelakaQT/MapServer/0" />
        <Layer Id="WMSFT" Name="FT" Href="http://localhost/ArcGIS/rest/services/MelakaFT/MapServer/0" />
      </QueryLayer>
      <ExternalLayer>
        <Layer Id="WMSTransportation" Name="Transportation" Href="http://external.com/ArcGIS/rest/services/share/Transportation/MapServer" />
        <Layer Id="WMSBuiltEnvironment" Name="BuiltEnvironment" Href="http://external.com/ArcGIS/rest/services/share/BuiltEnvironmnet/MapServer" />
        <Layer Id="WMSHydrography" Name="Hydrography" Href="http://external.com/ArcGIS/rest/services/share/Hydrography/MapServer" />
      </ExternalLayer>
    </RestWebServices>
    <SoapWebServices>
      <Url Href="http://localhost/ArcGIS/services/MelakaBaseMap/MapServer"
           LegendHandlerUrl="http://localhost:1593/Handler/handler.ashx" />
    </SoapWebServices>
  </Service>
</Services>

Alright then, open up the default Mainpage.xaml file and go to the code behind, copy and paste the source below:

C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.IO;

using System.Xml.Linq;

namespace SilverlightReadXML
{
    public partial class MainPage : UserControl
    {
        // path to our xml file (webapp/ClientBin/Assets/)
        private const string strConfigMapServicePath = "WMSConfig.xml";

        public MainPage()
        {
            InitializeComponent();

            WebClient client = new WebClient();
            client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted);

            Uri uri = new Uri(strConfigMapServicePath, UriKind.RelativeOrAbsolute);
            client.OpenReadAsync(uri);
        }

        protected void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
        {
            if (e.Error != null) return;

            XElement xEl;
            using (Stream s = e.Result)
            {
                xEl = XElement.Load(s);
            }

            var BaseMap = (from ctx in xEl.Elements("Service").Elements("RestWebServices")
                           select new
                           {
                               ID = ctx.Element("BaseMap").Attribute("Id").Value,
                               Name = ctx.Element("BaseMap").Attribute("Name").Value,
                               Href = ctx.Element("BaseMap").Attribute("Href").Value
                           }).FirstOrDefault();
            MessageBox.Show("ID = " + BaseMap.ID + " Name = " + BaseMap.Name + " Href = " + BaseMap.Href);
        }
    }
}

VB.NET

Imports System.Windows
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Net
Imports System.Windows.Controls
Imports System.IO
Imports System.Xml.Linq

Partial Public Class MainPage
    Inherits UserControl

    Private Const strConfigMapServicePath As String = "WMSConfig.xml"

    Public Sub New()
        InitializeComponent()

        Dim client As WebClient = New WebClient()
        AddHandler client.OpenReadCompleted, AddressOf client_OpenReadCompleted

        Dim _uri As Uri = New Uri(strConfigMapServicePath, UriKind.RelativeOrAbsolute)
        client.OpenReadAsync(_uri)
    End Sub

    Protected Sub client_OpenReadCompleted(ByVal sender As Object, ByVal e As OpenReadCompletedEventArgs)
        If (Not e.Error Is Nothing) Then
            Return
        End If

        Dim xEl As XElement
        Using s As Stream = e.Result
            xEl = XElement.Load(s)
        End Using

        Dim BaseMap = (From ctx In xEl.Elements("Service").Elements("RestWebServices")
                       Select New With {
                                .ID = ctx.Element("BaseMap").Attribute("Id").Value,
                                .Name = ctx.Element("BaseMap").Attribute("Name").Value,
                                .Href = ctx.Element("BaseMap").Attribute("Href").Value
                           }).FirstOrDefault()

        MessageBox.Show("ID = " & BaseMap.ID & " Name = " & BaseMap.Name & " Href = " & BaseMap.Href)
    End Sub
End Class

The end result will look like below…

You can download the Source here SilverlightReadXML. Happy Programming :)


Setting and Reading System Environment Variable with .NET —

For some reason or whatever reason we need to store some of our application configuration inside System Environment Variables, that resides in windows system properties. Basically in .NET the process is quite straight forward where we only need to add up just one line of code in order to perform this action. Below are sample source code for reading and writing from and to System Environment Variable:

' setting up environment variable
Environment.SetEnvironmentVariable("ConfigPath", "C:/test/config/", EnvironmentVariableTarget.Machine)

' reading from environment variable
Environment.GetEnvironmentVariable("ConfigPath", EnvironmentVariableTarget.Machine)

Basically syntax for C# almost identical with VB.NET, the only different is you need to put semicolon at the end of the statement. You can read more about System.Environment class here.

well then, happy programming


Binding Observable Collection to AutoComplete Box in Silverlight —

Long story short… this post purposely written as references for me, if I’m forgot how to use this control later… (man, I’m getting old). So let’s put up some data for binding with the AutoComplete Box:


using System;
using System.Windows;
using System.Collections.ObjectModel;
using System.Windows.Data;

public class Girls
    {
        public string ID { get; set; }
        public string Name { get; set; }
    }

    public class GirlsCollection : ObservableCollection<Girls>
    {
        public GirlsCollection()
        {
            Add(new Girls()
            {
                ID = "1",
                Name = "BEdAH"
            });
            Add(new Girls()
            {
                ID = "2",
                Name = "YUNa"
            });
            Add(new Girls()
            {
                ID = "3",
                Name = "Zabi"
            });
            Add(new Girls()
            {
                ID="4",
                Name = "Jane Doe"
            });

        }
    }

There you go the data is ready, but before we go to the UI, we need to create another class that inherit IValueConverter Interface so that we can bind our Girls DataSource to AutoComplete Box, Here’s the code:

    // use to convert data format between data source and target UI.
    public class GirlsConverter : IValueConverter
    {

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            Girls g = value as Girls;
            return g.Name;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return null; //throw new NotImplementedException();
        }
    }

Alright now the UI part:

<UserControl xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"  x:Class="AutoCompleteBox.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:AutoCompleteBox"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

    <Grid x:Name="LayoutRoot" Background="White">
        <Grid.Resources>
            <local:GirlsConverter x:Key="girlsConvert" />
        </Grid.Resources>
        <sdk:AutoCompleteBox x:Name="autoTest" Width="250" Height="25"
                             ValueMemberBinding="{Binding Converter={StaticResource girlsConvert}}" >
            <sdk:AutoCompleteBox.ItemTemplate>
                <DataTemplate>
                <TextBlock Text="{Binding Name}"></TextBlock>
                </DataTemplate>
            </sdk:AutoCompleteBox.ItemTemplate>
        </sdk:AutoCompleteBox>
    </Grid>
</UserControl></div>

Okay, now let’s put some code behind to handle AutoComplete Box SelectionChanged event:

    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();

            autoTest.ItemsSource = new GirlsCollection();
            autoTest.SelectionChanged += new SelectionChangedEventHandler(autoTest_SelectionChanged);
        }

        void autoTest_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            //throw new NotImplementedException();
            var result = autoTest.SelectedItem as Girls;
            MessageBox.Show("Selection ID=" + result.ID );
        }
    }

The end result will be just like the picture below:

That’s it… Happy Programming :)


No Editor Available Error in Visual Studio —

This morning when i try to open up my designer view in Visual Studio, it failed successfully (source view working just fine) with this little error:

error_open

After spending sometimes on web i found a solution inside MSDN forum , here’s the quote message from the poster:

In this particular case, it appears the problem has to do with the settings on the signing page and not the resource designer.  Try providing a working cert or turn off signing, and then see if the problem goes away for you.  Note that this should be fixed in current builds, so that you see the warning/error as expected, but opening form designers should not give you the "no editor available" error.

We also noticed that if you bring up the resource designer in your project, you start getting compiler errors about "Resources" is not a member of "xxx" (a namespace).  I suspect the resx file was copied from the root of the project into the "My Project" directory?  The default resx file in "My Project" is handled a bit differently than other resx files, so the resource class is referenced differently (try clicking on the resx file in solution explorer and checking out the Custom Tool and Custom Tool Namespace properties).  You should be able to fix this manually in the code that references the references (for <formname>.designer.vb code you’ll need to use the form <rootnamespace>.My.Resources.Resources.<resourcename>, note the extra "Resources" – for user code you can just use My.Resources.<resourcename> as usual).

There you go, certificate signing ‘what the heck’ happen here, i never sign my project with any kind of cert…. So i’ve decided to looking up my project setting and find out that in the signing tab, the option to sign the ClickOnce manifests has been checked… duh…  when i unchecked it and reopen my forms its working… :) , see screenshot below…

solution_errorOpen

Alright… its done and happy programming :)