开发者

Error in Windows form application at client end only execute properly on my machine

开发者 https://www.devze.com 2023-04-10 11:08 出处:网络
I have a windows form application with an SQL compact database. It runs on many windows PCs. Client PCs are in German language. It always returns errors for SQL connectivity functions like add, delete

I have a windows form application with an SQL compact database. It runs on many windows PCs. Client PCs are in German language. It always returns errors for SQL connectivity functions like add, delete etc.

Could the language difference be the reason?

.....

ADDITIONAL INFORMATION...

I checked it all out it was due to date difference , as mine was 2011/1/11 and at that it was 2011-11-11 also the time format and fixed that...

However another error now, i donot understand why at my pc where i create setup and then install it i dont face this error ?

        The error was in german so i translated it and pasting below:



information on invoking just-in debugging
instead of this dialog box you will find at the end of this release.

************** Exception Text **************
System.NullReferenceException: Object reference not set to an object instance.
   at HotelReservationSystem.MyAppartments.DrawPricePeriods (Graphics g) in D: \ ERDDESKTOPPAPP \ New 834th
   (Object sender, PaintEventArgs e) at HotelReservationSystem.MyAppartments.panelAppartments_Paint in D: \ ERDDESKTOPPAPP \ New 332nd
   at System.Windows.Forms.Control.PaintWithErrorHandling (PaintEventArgs e, Int16 layer)
   at System.Windows.Forms.Control.WmPaint (Message & m)
   at System.Windows.Forms.Control.WndProc (Message & m)
   (IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) at System.Windows.Forms.NativeWindow.Callback


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 4.0.0.0.
    Win32 Version: 4.0.30319.239 (RTMGDR.030319-2300).
    CodeBase: file: / / / C: / Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll.
----------------------------------------
hotel reservation system
    Assembly Version: 1.0.0.0.
    Win32 Version: 1.0.0.0.
    CodeBase: file: / / / C: / Program% 20file% 20 (x86) / Microsoft / hotel setup / bin / Release / HotelReservationSystem.exe.
----------------------------------------
System.Windows.Forms
    Assembly Version: 4.0.0.0.
    Win32 Version: 4.0.30319.235 built by: RTMGDR.
    codebase:
----------------------------------------
System.Drawing
    Assembly Version: 4.0.0.0.
    Win32 Version: 4.0.30319.1 built by: RTMRel.
    codebase:
----------------------------------------
System
    Assembly Version: 4.0.0.0.
    Win32 Version: 4.0.30319.236 built by: RTMGDR.
    CodeBase: file: / / / C: / Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll.
----------------------------------------
Accessibility
    Assembly Version: 4.0.0.0.
    Win32 Version: 4.0.30319.1 built by: RTMRel.
    codebase:
----------------------------------------
System.Data
    Assembly Version: 4.0.0.0.
    Win32 Version: 4.0.30319.237 (RTMGDR.030319-2300).
    codebase:
----------------------------------------
System.Core
    Assembly Version: 4.0.0.0.
    Win32 Version: 4.0.30319.233 built by: RTMGDR.
    codebase:
----------------------------------------
System.Xml
    Assembly Version: 4.0.0.0.
    Win32 Version: 4.0.30319.233 built by: RTMGDR.
    codebase:
----------------------------------------
System.Windows.Forms.resources
    Assembly Version: 4.0.0.0.
    Win32 Version: 4.0.30319.1 built by: RTMRel.
    codebase:
----------------------------------------
System.Data.DataSetExtensions
    Assembly Version: 4.0.0.0.
    Win32 Version: 4.0.30319.1 built by: RTMRel.
    codebase:
----------------------------------------
System.Numerics
    Assembly Version: 4.0.0.0.
    Win32 Version: 4.0.30319.1 built by: RTMRel.
    codebase:
----------------------------------------
System.Configuration
    Assembly Version: 4.0.0.0.
    Win32 Version: 4.0.30319.1 (RTMRel.030319-0100).
    codebase:
----------------------------------------
System.Transactions
    Assembly Version: 4.0.0.0.
    Win32 Version: 4.0.30319.1 (RTMRel.030319-0100).
    codebase:
----------------------------------------
System.EnterpriseServices
    Assembly Version: 4.0.0.0.
    Win32 Version: 4.0.30319.1 (RTMRel.030319-0100).
    codebase:
----------------------------------------
mscorlib.resources
    Assembly Version: 4.0.0.0.
    Win32 Version: 4.0.30319.235 (RTMGDR.030319-2300).
    codebase:
----------------------------------------

************** JIT Debugging **************
To the JIT debugging (Just-In-Time) to activate, must be in the
Configuration file of the application or computer
(Machine.config) jitDebugging the value in the system.windows.forms section are determined.
The application must be compiled with debugging enabled.

For example:

<configuration>
    <system.windows.forms jitDebugging="true" />
</ Configuration>

When JIT debugging is enabled, any unhandled
Exceptions to the JIT debugger sent on the
Computer is registered and handled by this dialog box.
               ERROR LINES END HERE , THE CODE REFERRING TO ABOVE...Funstions

The 834th line is an empty line ....... private void DrawPricePeriods(Graphics g) { brush = Brushes.CadetBlue; pen.Color = Color.White; RoundRect.DrawRoundRect(g, pen, 2, 50, 796, ((numAppartments + 1) * 60) + 200 + (10 * (numAppartments - 1)), 30); RoundRect.FillRoundRect(g, brush, 2, 50, 796, ((numAppartments + 1) * 60) + 200 + (10 * (numAppartments - 1)), 30);

        RoundRect.DrawRoundRect(g, pen, 2, 50, 796, 200, 30);
        RoundRect.FillRoundRect(g, brush, 2, 50, 796, 200, 30);

        sf.Alignment = StringAlignment.Center;
        brush = Brushes.White;
        Rectangle rect = new Rectangle(2, 50, 796, 30);
        Font f = new Font(fontFamily, 12);
        switch (language)
        {
            case 1:
                g.DrawString("Please enter in the yellow fields you price periods! And white fields your prices!", f, brush, (RectangleF)rect, sf);
                break;
            case 2:
                g.DrawString("Por favor inserte en las casillas blancas sus temporadas!", f, brush, (RectangleF)rect, sf);
                break;
            case 3:
                g.DrawString("Molimo unesite u žutim prozorima periode cijene! I u bijelim vaše cijene", f, brush, (RectangleF)rect, sf);
                break;
        }
        rect = new Rectangle(2, 70, 796, 30);
        switch (language)
        {
            case 1:
                g.DrawString("Please enter first your day (field TT) and then month (field MM)", f, brush, (RectangleF)rect, sf);
                break;
            case 2:
                g.DrawString("Por favor primero insierta el día (casilla TT) después el mes (casilla MM)", f, brush, (RectangleF)rect, sf);
                break;
            case 3:
                g.DrawString("Molimo prvo unesite datum dana (prozor DD) i onda mijesec (prozor MM)", f, brush, (RectangleF)rect, sf);
                break;
        }
        sf.Alignment = StringAlignment.Near;
        rect = new Rectangle(255, 50, 796, 30);
        brush = Brushes.Yellow;
        if(language == 1)
        {
            g.DrawString("yellow", f, brush, (RectangleF)rect, sf);
        }

        int w = 140, h = 40, x = 20, y = 150, xinc = 0, yinc = 40;

        string[] periods = new string[5];
        switch (language)
        {
            case 1:
                periods = new string[5] { "First Price Period", "Second Price Period", "Third Price Period", "Fourth Price Period", "Fifth Price Period" };
                break;
            case 2:
                periods = new string[5] { "Temporada 1", "Temporada 2", "Temporada 3", "Temporada 4", "Temporada 5" };
                break;
            case 3:
                periods = new string[5] { "Perioda 1", "Perioda 2", "Perioda 3", "Perioda 4", "Perioda 5" };
                break;
        }

        Point p;
        int count = 0;
        switch (numPricePeriods)
        {
            case 1:
                {
                    x = 796 / 2 - 70;
                    p = new Point(x, y);
                    brush = Brushes.White;
                    g.DrawString(periods[0], f, brush, (PointF)p, sf);
                    brush = Brushes.Yellow;
                    RoundRect.DrawRoundRect(g, pen, x, y + 30, w - 10, h + 10, 10);
                    RoundRect.FillRoundRect(g, brush, x, y + 30, w - 10, h + 10, 10);
                    arrtbxPPDuration[0].Location = new Point(x + 5, y + 45);
                    arrtbxPPDuration[0].ForeColor = Color.Gray;
                    arrtbxPPDuration[0].Text = "TT/MM to TT/MM";
                    arrtbxPPDuration[0].Show();

                    yinc = 150;
                    for (int j = 0; j < numAppartments; j++)
                    {
                        RoundRect.DrawRoundRect(g, pen, x, y + yinc, w - 10, 60, 10);
                        brush = Brushes.LightGray;
                        RoundRect.FillRoundRect(g, brush, x, y + yinc, w - 10, 60, 10);
                        arrtbxPricePeriods[count].Location = new Point(x + 5, y + yinc + 15);
                        arrtbxPricePeriods[count].Show();
                        count++;
                        yinc += 70;
                    }
                }
                break;
            case 2:
                {
                    x = (796 / 3);
                    for (int i = 0; i < numPricePeriods; i++)
                    {
                        p = new Point(x - 70, y);
                        brush = Brushes.White;
                        g.DrawString(periods[i], f, brush, (PointF)p, sf);
                        brush = Brushes.Yellow;
                        RoundRect.DrawRoundRect(g, pen, x - 70, y + 30, w - 10, h + 10, 10);
                        RoundRect.FillRoundRect(g, brush, x - 70, y + 30, w - 10, h + 10, 10);


                        //THIS IS THE 834th LINE


                        arrtbxPPDuration[i].Location = new Point(x - 65, y + 45);
                        arrtbxPPDuration[i].ForeColor = Color.Gray;
                        arrtbxPPDuration[i].Text = "TT/MM to TT/MM";
                        arrtbxPPDuration[i].Show();
                        x += (796 / 3);
                    }


                    yinc = 150;
                    for (int i = 0; i < numAppartments; i++)
                    {
                        x = (796 / 3);
                        for (int j = 0; j < numPricePeriods; j++)
                        {
                            RoundRect.DrawRoundRect(g, pen, x - 70, y + yinc, w - 10, 60, 10);
                            brush = Brushes.LightGray;
                            RoundRect.FillRoundRect(g, brush, x - 70, y + yinc, w - 10, 60, 10);
                            arrtbxPricePeriods[count].Location = new Point(x - 65, y + yinc + 15);
                            arrtbxPricePeriods[count].Show();
                            count++;
                            x += (796 / 3);
                        }
                        yinc += 70;
                    }
                }
                break;
            case 3:
                {
                    x = (796 / 4);
                    for (int i = 0; i < numPricePeriods; i++)
                    {
                        p = new Point(x - 70, y);
                        brush = Brushes.White;
                        g.DrawString(periods[i], f, brush, (PointF)p, sf);

                        brush = Brushes.Yellow;
                        RoundRect.DrawRoundRect(g, pen, x - 70, y + 30, w - 10, h + 10, 10);
                        RoundRect.FillRoundRect(g, brush, x - 70, y + 30, w - 10, h + 10, 10);
                        arrtbxPPDuration[i].Location = new Point(x - 65, y + 45);
                        arrtbxPPDuration[i].ForeColor = Color.Gray;
                        arrtbxPPDuration[i].Text = "TT/MM to TT/MM";
                        arrtbxPPDuration[i].Show();
                        x += (796 / 4);
                    }

                    yinc = 150;
                    for (int i = 0; i < numAppartments; i++)
                    {
                        x = (796 / 4);
                        for (int j = 0; j < numPricePeriods; j++)
                        {
                            RoundRect.DrawRoundRect(g, pen, x - 70, y + yinc, w - 10, 60开发者_开发知识库, 10);
                            brush = Brushes.LightGray;
                            RoundRect.FillRoundRect(g, brush, x - 70, y + yinc, w - 10, 60, 10);
                            arrtbxPricePeriods[count].Location = new Point(x - 65, y + yinc + 15);
                            arrtbxPricePeriods[count].Show();
                            count++;
                            x += (796 / 4);
                        }
                        yinc += 70;
                    }
                }
                break;
            case 4:
                {
                    x = (796 / 5);
                    for (int i = 0; i < numPricePeriods; i++)
                    {
                        p = new Point(x - 70, y);
                        brush = Brushes.White;
                        g.DrawString(periods[i], f, brush, (PointF)p, sf);

                        brush = Brushes.Yellow;
                        RoundRect.DrawRoundRect(g, pen, x - 70, y + 30, w - 10, h + 10, 10);
                        RoundRect.FillRoundRect(g, brush, x - 70, y + 30, w - 10, h + 10, 10);
                        arrtbxPPDuration[i].Location = new Point(x - 65, y + 45);
                        arrtbxPPDuration[i].ForeColor = Color.Gray;
                        arrtbxPPDuration[i].Text = "TT/MM to TT/MM";
                        arrtbxPPDuration[i].Show();
                        x += (796 / 5);
                    }
                    yinc = 150;
                    for (int i = 0; i < numAppartments; i++)
                    {
                        x = (796 / 5);
                        for (int j = 0; j < numPricePeriods; j++)
                        {
                            RoundRect.DrawRoundRect(g, pen, x - 70, y + yinc, w - 10, 60, 10);
                            brush = Brushes.LightGray;
                            RoundRect.FillRoundRect(g, brush, x - 70, y + yinc, w - 10, 60, 10);
                            arrtbxPricePeriods[count].Location = new Point(x - 65, y + yinc + 15);
                            arrtbxPricePeriods[count].Show();
                            count++;
                            x += (796 / 5);
                        }
                        yinc += 70;
                    }
                }
                break;
            case 5:
                {
                    x = (796 / 6);
                    int diff = 110;
                    for (int i = 0; i < numPricePeriods; i++)
                    {
                        p = new Point(x - diff, y);
                        brush = Brushes.White;
                        g.DrawString(periods[i], f, brush, (PointF)p, sf);

                        brush = Brushes.Yellow;
                        RoundRect.DrawRoundRect(g, pen, x - diff, y + 30, w - 10, h + 10, 10);
                        RoundRect.FillRoundRect(g, brush, x - diff, y + 30, w - 10, h + 10, 10);
                        arrtbxPPDuration[i].Location = new Point(x - diff + 5, y + 45);
                        arrtbxPPDuration[i].ForeColor = Color.Gray;
                        arrtbxPPDuration[i].Text = "TT/MM to TT/MM";
                        arrtbxPPDuration[i].Show();
                        x += (796 / 6);
                    }

                    yinc = 150;
                    for (int i = 0; i < numAppartments; i++)
                    {
                        x = (796 / 6);
                        for (int j = 0; j < numPricePeriods; j++)
                        {
                            RoundRect.DrawRoundRect(g, pen, x - diff, y + yinc, w - 10, 60, 10);
                            brush = Brushes.LightGray;
                            RoundRect.FillRoundRect(g, brush, x - diff, y + yinc, w - 10, 60, 10);
                            arrtbxPricePeriods[count].Location = new Point(x - diff + 5, y + yinc + 15);
                            arrtbxPricePeriods[count].Show();
                            count++;
                            x += (796 / 6);
                            diff -= 20;
                        }
                        yinc += 70;
                    }
                }
                break;
        }

    }

                        yinc = 150;
                        for (int i = 0; i < numAppartments; i++)
                        {
                            x = (796 / 6);
                            for (int j = 0; j < numPricePeriods; j++)
                            {
                                RoundRect.DrawRoundRect(g, pen, x - diff, y + yinc, w - 10, 60, 10);
                                brush = Brushes.LightGray;
                                RoundRect.FillRoundRect(g, brush, x - diff, y + yinc, w - 10, 60, 10);
                                arrtbxPricePeriods[count].Location = new Point(x - diff + 5, y + yinc + 15);
                                arrtbxPricePeriods[count].Show();
                                count++;
                                x += (796 / 6);
                                diff -= 20;
                            }
                            yinc += 70;
                        }
                    }
                    break;
            }

        }

I know its a mess but still only give me any hint as i cannot figure out anything.. Thank you


Yes it is possible. But German is so similar, it is not probably. Why German, let's recall what's different in German: Date format, decimal comma instead of decimal point? At first you should check your program - where dates and decimal numbers are converted to and from text.

I encountered similar problems with a software which stored all data as strings. If you run this piece of software on English Windows and create some data, it is stored with decimal points (e.g. 1.23). Then when you try to read these data from database on German Windows, it doesn't work, because strings need decimal commas to be converted to numbers (e.g. 1,23 is required, but 1.23 is present).

What to do: You should fix your program. Specify InvariantCulture in all places where you want to convert date or number to or from string. See here: http://msdn.microsoft.com/en-us/library/ht77y576.aspx

Or you can try to switch the computer to English locale. This will help you to see if the problems are really caused by this. Go to Control Panel - Regional and Language Options. There you can set how dates and numbers are formatted. See here: http://www.windows7update.com/Windows7-Regional-and-language-options.html

0

精彩评论

暂无评论...
验证码 换一张
取 消