Ошибка в приложении формы Windows на стороне клиента выполняется правильно только на моем компьютере - PullRequest
0 голосов
/ 05 октября 2011

У меня есть приложение Windows Form с компактной базой данных SQL. Он работает на многих компьютерах с Windows. Клиентские ПК на немецком языке. Всегда возвращает ошибки для функций подключения SQL, таких как добавление, удаление и т. Д.

Может ли быть причиной языковая разница?

.....

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ ...

Я проверил все это из-за разницы в датах, поскольку у меня был 2011/1/11 и в то же время 2011-11-11 также формат времени, и я установил, что ...

Однако, еще одна ошибка, я не понимаю, почему на моем компьютере, где я создаю установку, а затем устанавливаю ее, я не сталкиваюсь с этой ошибкой?

        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

834-я строка - пустая строка ....... приватная пустота DrawPricePeriods (Графика г) { brush = Brushes.CadetBlue; pen.Color = Color.White; RoundRect.DrawRoundRect (г, перо, 2, 50, 796, ((numAppartments + 1) * 60) + 200 + (10 * (numAppartments - 1)), 30); RoundRect.FillRoundRect (г, кисть, 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;
            }

        }

Я знаю, что это беспорядок, но все еще только дает мне подсказку, поскольку я ничего не могу понять ... Спасибо

1 Ответ

0 голосов
/ 05 октября 2011

Да, это возможно. Но немецкий так похож, это не вероятно. Почему немецкий, давайте вспомним, что отличается по-немецки: формат даты, десятичная запятая вместо десятичной точки? Сначала вы должны проверить вашу программу - где даты и десятичные числа преобразуются в и из текста.

Я столкнулся с похожими проблемами с программным обеспечением, которое сохраняло все данные в виде строк. Если вы запускаете эту часть программного обеспечения в английской Windows и создаете некоторые данные, они сохраняются с десятичными точками (например, 1.23). Затем, когда вы пытаетесь прочитать эти данные из базы данных на немецком Windows, это не работает, потому что для строк необходимо преобразовать десятичные запятые в числа (например, требуется 1,23, но присутствует 1,23).

Что делать: Вы должны исправить свою программу. Укажите InvariantCulture во всех местах, где вы хотите преобразовать дату или число в или из строки. Смотрите здесь: http://msdn.microsoft.com/en-us/library/ht77y576.aspx

Или вы можете попробовать переключить компьютер на английский язык. Это поможет вам понять, действительно ли проблемы вызваны этим. Перейдите в Панель управления - Региональные и языковые параметры. Там вы можете настроить форматирование дат и чисел. Смотрите здесь: http://www.windows7update.com/Windows7-Regional-and-language-options.html

...