نمایش نتایج 1 تا 5 از 5

نام تاپیک: خطای NullReferenceException در کامپیوتر مشتری

  1. #1

    خطای NullReferenceException در کامپیوتر مشتری

    سلام
    برنامه ای برای مشتری نوشته شده که روی سیستم خودم درست کار میکنه ولی در کامپیوتر مشتری خطای NullReferenceException رو با مضمون Object reference not set to an instance of an object. میاره.
    البته در قسمتی از کد که هندل نکردم اکسپشن رو. خطا هم هنگام ویرایش سلولی از DGV ظاهر میشه (همون رویداد CellEndEdit)
    متاسفانه چون مشتری در شهر دیگه ای زندگی میکنه برام میسر نیست کدم رو خط به خط روی سیستمشون اجرا کنم.
    تنها مشکلی که به ذهنم میرسه تفاوت دات نت فریم ورک هستش همونطور که خود ارور میگه توی یکی از اسمبل ها:
    Assembly Version: 4.0.0.0
    Win32 Version: 4.6.1590.0


    و البته متن کامل ارور هم به این شکل هستش:
    See the end of this message for details on invoking just-in-time (JIT) debugging instead of this dialog box.


    ************** Exception Text **************
    System.NullReferenceException: Object reference not set to an instance of an object.
    at H.I.S.form.frmTimingAssign.dgReception_CellEndEdit (Object sender, DataGridViewCellEventArgs e)
    at System.Windows.Forms.DataGridView.OnCellEndEdit(Da taGridViewCellEventArgs e)
    at System.Windows.Forms.DataGridView.EndEdit(DataGrid ViewDataErrorContexts context, DataGridViewValidateCellInternal validateCell, Boolean fireCellLeave, Boolean fireCellEnter, Boolean fireRowLeave, Boolean fireRowEnter, Boolean fireLeave, Boolean keepFocus, Boolean resetCurrentCell, Boolean resetAnchorCell)
    at System.Windows.Forms.DataGridView.CommitEditForOpe ration(Int32 columnIndex, Int32 rowIndex, Boolean forCurrentCellChange)
    at System.Windows.Forms.DataGridView.ScrollIntoView(I nt32 columnIndex, Int32 rowIndex, Boolean forCurrentCellChange)
    at System.Windows.Forms.DataGridView.ProcessDownKeyIn ternal(Keys keyData, Boolean& moved)
    at System.Windows.Forms.DataGridView.ProcessEnterKey( Keys keyData)
    at System.Windows.Forms.DataGridView.ProcessDialogKey (Keys keyData)
    at System.Windows.Forms.Control.ProcessDialogKey(Keys keyData)
    at System.Windows.Forms.TextBoxBase.ProcessDialogKey( Keys keyData)
    at System.Windows.Forms.Control.PreProcessMessage(Mes sage& msg)
    at System.Windows.Forms.Control.PreProcessControlMess ageInternal(Control target, Message& msg)
    at System.Windows.Forms.Application.ThreadContext.Pre TranslateMessage(MSG& msg)




    ************** Loaded Assemblies **************
    mscorlib
    Assembly Version: 4.0.0.0
    Win32 Version: 4.6.1590.0 built by: NETFXREL2
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
    ----------------------------------------
    H.I.S
    Assembly Version: 97.1.29.1
    Win32 Version: 97.01.29.1
    CodeBase: file:///E:/His/Release/H.I.S.exe
    ----------------------------------------
    System.Windows.Forms
    Assembly Version: 4.0.0.0
    Win32 Version: 4.6.1590.0 built by: NETFXREL2
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    ----------------------------------------
    System
    Assembly Version: 4.0.0.0
    Win32 Version: 4.6.1590.0 built by: NETFXREL2
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
    ----------------------------------------
    System.Drawing
    Assembly Version: 4.0.0.0
    Win32 Version: 4.6.1590.0 built by: NETFXREL2
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
    ----------------------------------------
    System.Data
    Assembly Version: 4.0.0.0
    Win32 Version: 4.6.1590.0 built by: NETFXREL2
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
    ----------------------------------------
    System.Core
    Assembly Version: 4.0.0.0
    Win32 Version: 4.6.1590.0 built by: NETFXREL2
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
    ----------------------------------------
    System.Xml
    Assembly Version: 4.0.0.0
    Win32 Version: 4.6.1590.0 built by: NETFXREL2
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
    ----------------------------------------
    System.Configuration
    Assembly Version: 4.0.0.0
    Win32 Version: 4.6.1590.0 built by: NETFXREL2
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
    ----------------------------------------
    System.Transactions
    Assembly Version: 4.0.0.0
    Win32 Version: 4.6.1590.0 built by: NETFXREL2
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Transactions/v4.0_4.0.0.0__b77a5c561934e089/System.Transactions.dll
    ----------------------------------------
    System.EnterpriseServices
    Assembly Version: 4.0.0.0
    Win32 Version: 4.6.1590.0 built by: NETFXREL2
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.EnterpriseServices/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll
    ----------------------------------------
    System.Runtime.Caching
    Assembly Version: 4.0.0.0
    Win32 Version: 4.6.1590.0
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Caching/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Runtime.Caching.dll
    ----------------------------------------
    System.Numerics
    Assembly Version: 4.0.0.0
    Win32 Version: 4.6.1590.0 built by: NETFXREL2
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll
    ----------------------------------------
    System.Data.DataSetExtensions
    Assembly Version: 4.0.0.0
    Win32 Version: 4.6.1590.0 built by: NETFXREL2
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Data.DataSetExtensions/v4.0_4.0.0.0__b77a5c561934e089/System.Data.DataSetExtensions.dll
    ----------------------------------------
    DateTimeSelector
    Assembly Version: 1.1.1.0
    Win32 Version: 1.1.1.0
    CodeBase: file:///E:/His/Release/DateTimeSelector.DLL
    ----------------------------------------


    ************** JIT Debugging **************
    To enable just-in-time (JIT) debugging, the .config file for this
    application or computer (machine.config) must have the
    jitDebugging value set in the system.windows.forms section.
    The application must also be compiled with debugging
    enabled.


    For example:


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


    When JIT debugging is enabled, any unhandled exception
    will be sent to the JIT debugger registered on the computer
    rather than be handled by this dialog box.




    تاپیک مشابهی پیدا نکردم و توی یکی از تاپیک ها یه بنده خدایی خارج از پرسش خود تاپیک پرسیده بود و کسی هم جوابش رو نداده بود.
    راه حلی به ذهنتون میرسه؟

  2. #2

    نقل قول: خطای NullReferenceException در کامپیوتر مشتری

    کد رویداد H.I.S.form.frmTimingAssign.dgReception_CellEndEdit را قرار بدید.

    احتمالا مقدار سلول را به نوع دیگر تبدیل میکنید در صورتی که سلول مقدار ندارد.

  3. #3

    نقل قول: خطای NullReferenceException در کامپیوتر مشتری

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    کد رویداد H.I.S.form.frmTimingAssign.dgReception_CellEndEdit را قرار بدید.

    احتمالا مقدار سلول را به نوع دیگر تبدیل میکنید در صورتی که سلول مقدار ندارد.

    کد اون متد این هستش:
    private void dgReception_CellEndEdit(object sender, DataGridViewCellEventArgs e)        {


    if ((dgReception.Columns[e.ColumnIndex].Name != TimeNameRecCB.Name && dgReception.Columns[e.ColumnIndex].Name != PeopleIdRec.Name) || e.RowIndex == -1) return;


    var gRow = dgReception.Rows[e.RowIndex];
    DataGridViewComboBoxCell combo = (DataGridViewComboBoxCell)gRow.Cells["TimeNameRecCB"];
    if (!ValidateShift(ref combo)) return;


    if (gRow.Cells[PeopleIdRec.Name].Value != null && MyTools.StrToInt32Def(gRow.Cells[PeopleIdRec.Name].Value, 0) != 0)
    {
    int peopleId = MyTools.StrToInt32Def(gRow.Cells[PeopleIdRec.Name].Value, 0);
    var pRows = RepTiming.FdtPeopleList.Select(string.Format("Id_s tateRec=1 and Id={0} and RoleId like '%,{1},%'", peopleId, (int)ConstantsVariables.TimingRolesEnums.Reception ));
    try
    {
    if (dtRecepAssign.Rows[dgReception.SelectedCells[0].RowIndex]["Id"].ToString().Trim() != "")
    {
    if (dgReception.Columns[e.ColumnIndex].Name == TimeNameRecCB.Name)
    {
    mt.ShowError("امکان تغییر شیفت برای رکوردهای ثبت شده وجود ندارد");
    combo.Value = lastComboValue;
    }
    else
    {
    mt.ShowError("کاربر گرامی برای تغییر شیفت های ثبت شده از گزینه جابجایی استفاده نمایید");
    gRow.Cells[PeopleIdRec.Name].Value = lastPId;
    }
    return;
    }
    }
    catch { }
    if (dgReception.Rows[e.RowIndex].Cells[TimeNameRecCB.Name].Value == null || dgReception.Rows[e.RowIndex].Cells[TimeNameRecCB.Name].Value.ToString() == "-1")
    {
    mt.ShowError("لطفا ابتدا یک شیفت را انتخاب نمایید");
    dgReception.Rows.Remove(dgReception.Rows[dgReception.Rows.Count - 2]);
    return;
    }
    if (pRows.Length == 0)
    {
    mt.ShowError("کد درج شده معتبر نمی باشد");
    gRow.Cells[PeopleIdRec.Name].Value = DBNull.Value;


    dgReception.Rows.Remove(dgReception.Rows[dgReception.Rows.Count - 2]);


    return;
    }
    DataTable dtOverride = repTiming.CheckOverrideTime(peopleId, MyTools.StrToInt32Def(combo.Value, 0),
    MyTools.StrToInt32Def(MyTools.GetDateWithoutSlash( dateTimeSelector.GetText("")), 0));

    if (dtOverride.Rows.Count > 0)
    {
    var result = MessageBox.Show("شیفت انتخاب شده بافعالیت کاربر به عنوان زیر همپوشانی دارد آیا اضافه شود ؟ " + Environment.NewLine + dtOverride.Rows[0]["Name"], "", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
    if (result == DialogResult.No)
    {
    dgReception.Rows.Remove(dgReception.Rows[dgReception.Rows.Count - 2]);
    return;
    }
    }
    dgReception.Rows[e.RowIndex].Cells[PeopleNameRec.Name].Value = pRows[0]["fName"] + " " + pRows[0]["lName"];
    dgReception.Rows[e.RowIndex].Cells[TimeIdRec.Name].Value = combo.Value;
    }
    if (((DataTable)combo.DataSource).Rows.Count == 2)
    FillInnerCombo();
    }

  4. #4
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1390
    محل زندگی
    چند قدم اون ور تر
    پست
    1,731

    نقل قول: خطای NullReferenceException در کامپیوتر مشتری

    با سلام
    همونطور که آقای افراد گفتن مشکل از null بودن یک یا چند تا از سلول ها هست. همه مواردی که در اونها سلول رو به رشته تبدیل کردید یعنی ToString شدن کاندیدا هستن! ولی من فکر می کنم مشکل از خط زیر هست
    if (dgReception.Rows[e.RowIndex].Cells[TimeNameRecCB.Name].Value == null || dgReception.Rows[e.RowIndex].Cells[TimeNameRecCB.Name].Value.ToString() == "-1")

    چون شرط دوم هم اجرا میشه و اگر مقدار نال باشه امکان تبدیل به رشته نیست و خطا میده. اما در این موارد میشه یه متغیر از نوع object تعریف کرد و مقدار سلول رو داخلش ریخت و اگر نال بود مقدار رو 0 در نظر گرفت و بعد شرط اصلی رو چک کرد (یعنی همین متغیر که مقدار سلول هست رو تبدیل به رشته کرد و ...) یا اینکه شرط نال بودن رو در یک شرط بالاتر بررسی کرده و اگر نال نبود شرط دوم اجرا بشه
    if (dgReception.Rows[e.RowIndex].Cells[TimeNameRecCB.Name].Value != null)
    if(
    dgReception.Rows[e.RowIndex].Cells[TimeNameRecCB.Name].Value.ToString() == "-1")
    {
    //
    }

  5. #5

    نقل قول: خطای NullReferenceException در کامپیوتر مشتری

    نقل قول نوشته شده توسط Mahmoud Zaad مشاهده تاپیک
    با سلام
    همونطور که آقای افراد گفتن مشکل از null بودن یک یا چند تا از سلول ها هست. همه مواردی که در اونها سلول رو به رشته تبدیل کردید یعنی ToString شدن کاندیدا هستن! ولی من فکر می کنم مشکل از خط زیر هست
    if (dgReception.Rows[e.RowIndex].Cells[TimeNameRecCB.Name].Value == null || dgReception.Rows[e.RowIndex].Cells[TimeNameRecCB.Name].Value.ToString() == "-1")

    چون شرط دوم هم اجرا میشه و اگر مقدار نال باشه امکان تبدیل به رشته نیست و خطا میده. اما در این موارد میشه یه متغیر از نوع object تعریف کرد و مقدار سلول رو داخلش ریخت و اگر نال بود مقدار رو 0 در نظر گرفت و بعد شرط اصلی رو چک کرد (یعنی همین متغیر که مقدار سلول هست رو تبدیل به رشته کرد و ...) یا اینکه شرط نال بودن رو در یک شرط بالاتر بررسی کرده و اگر نال نبود شرط دوم اجرا بشه
    if (dgReception.Rows[e.RowIndex].Cells[TimeNameRecCB.Name].Value != null)
    if(
    dgReception.Rows[e.RowIndex].Cells[TimeNameRecCB.Name].Value.ToString() == "-1")
    {
    //
    }

    ممنونم از راهنماییتون
    مشکل بنده حل شد
    مشکل از این بود که بنده روی سیستم خودم از SqlServer 2014 استفاده میکنم و مشتری روی سیستمش 2005 نصب بود و بعضی از کوئری هام روی SQLServer2005 ظاهرا پشتیبانی نمیشد که مجبور شدم کوئری هام رو بازنویسی کنم
    مرسی

تاپیک های مشابه

  1. پاسخ: 7
    آخرین پست: چهارشنبه 30 بهمن 1392, 09:58 صبح
  2. مشکل در مایش گزارش در کامپیوتر مشتری
    نوشته شده توسط sinayas در بخش ابزارهای گزارش سازی
    پاسخ: 2
    آخرین پست: پنج شنبه 31 مرداد 1392, 16:04 عصر
  3. SQL در کامپیوتر مشتری
    نوشته شده توسط worldvomputer در بخش SQL Server
    پاسخ: 1
    آخرین پست: یک شنبه 31 مرداد 1389, 18:34 عصر
  4. مشکل با فونت در کامپیوتر مشتری
    نوشته شده توسط rtech در بخش برنامه نویسی در 6 VB
    پاسخ: 5
    آخرین پست: دوشنبه 27 آذر 1385, 21:19 عصر
  5. ساخت new conection در کامپیوتر مشتری برای اتصال به سرور
    نوشته شده توسط maysam 2020 در بخش Classic ASP
    پاسخ: 1
    آخرین پست: جمعه 16 بهمن 1383, 23:41 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •