تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 1 از 2 12 آخرآخر
نمايش نتايج 1 به 10 از 12

نام تاپيک: یه ارور دیگه

  1. #1
    پروفشنال Petros's Avatar
    تاريخ عضويت
    Mar 2006
    محل سكونت
    سوال بسیار جالب و بجایی بود
    پست ها
    974

    پيش فرض یه ارور دیگه

    سلام
    اول بگم که من کلی در مورد مشکلم تو خود برنامه کلنجار میرم. سایتهای انگلیسی رو نگاه میکنم. فارسی رو نگاه میکنم و بعد پست میدم. منظور اینکه فرتی پست نمیزنم. آب تفاهم نشه.

    مشکل بنده هم ارور زیر هست. که از Conn.Open میگیره:
    The ConnectionString property has not been initialized

    کانکشن استرینگ اینا توی ماژول تعریف شدن. وقتی یه فرم رو که از کانکشن استرینگ استفاده میکنه باز و بسته میکنم و بعد میرم سراغ فرم بعدی که اون هم از کانکشن استرینگ Same و یکی استفاده میکنه این ارور رو میده.

    مشکل کجاست؟
    ممنون

    آخرین سواله به مولا

  2. #2
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    این خطا فقط وقتی نمایش داده میشود که شما connection جدیدی تولید کنید ولی connectionstring ان را پر نکنید.
    بدون شک کدهای شما طوری نوشته شده که connectionstring پر نمیشود.
    میتوانید در لحظه خطا مشاهده کنید که خیصه connectionstring شما خالی است! چک کنید.

    کافی است کدهای خود را بازنگری کنید و مطمئن شوید هر new یک پرکردن connectionstring را هم همراه دارد.
    در صورت عدم رفع مشکل کدهای خود را اینجا بگذارید تا ایرادش را بتوان راحت پیدا کرد.

  3. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


  4. #3
    آخر فروم باز shalineh's Avatar
    تاريخ عضويت
    Mar 2007
    محل سكونت
    فعلا ایران
    پست ها
    1,033

    پيش فرض

    سلام
    اول بگم که من کلی در مورد مشکلم تو خود برنامه کلنجار میرم. سایتهای انگلیسی رو نگاه میکنم. فارسی رو نگاه میکنم و بعد پست میدم. منظور اینکه فرتی پست نمیزنم. آب تفاهم نشه.
    نه. سوء تفاهم نمیشه!

    اما یه نکته رو از من داشته باش. دیباگ کردن رو برای اینجور مواقع گذاشته اند . کافیه بخشی رو که ارور میده، بصورت خط به خط دیباگ کنی. اون موقع است که هم ایراد برنامه ات رو پیدا می کنی و هم ایرادهایی رو که اصلا فکر نمی کردی ایجاد بشه ( ارورهای منطقی بهش میگن ) رو پیشگیری میکنی و هم مهمتر از همه، با دیدن دیباگ، خیلی چیزها رو یاد میگیری و در برنامه های بعدی ازش استفاده می کنی.
    هر چند اگه هزاران سوال هم بپرسی، اگه سوادمون اجازه بده، با جان و دل بهت جواب خواهیم داد. چون با پاسخ دادن به سوالات ، خودمون هم چیزهایی فراوانی یاد می گیریم.

  5. این کاربر از shalineh بخاطر این مطلب مفید تشکر کرده است


  6. #4
    پروفشنال Petros's Avatar
    تاريخ عضويت
    Mar 2006
    محل سكونت
    سوال بسیار جالب و بجایی بود
    پست ها
    974

    پيش فرض

    من نمیدونم دقیقا کدوم قسمت (با کسره) کد رو بزارم. ولی این تعاریف توی ماژول هستش و پایینی مربوط به From Loud. ارور هم مربوط به فرم لود و Conn.Open هستش.

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

  7. #5
    آخر فروم باز shalineh's Avatar
    تاريخ عضويت
    Mar 2007
    محل سكونت
    فعلا ایران
    پست ها
    1,033

    پيش فرض

    والله کد شما رو تست کردم . هیچ اروری نداد.
    اما:
    برای حل مشکل شما، کد رو بصورت زیر تغییر بده. ببین درست میشه. اگه نشد ، خبرم کن.

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    اگر مشکلت حل نشد، این را هم امتحان کن:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    به نظر من نیازی به باز و بسته کردن کانکشن نیست.

  8. #6
    پروفشنال Petros's Avatar
    تاريخ عضويت
    Mar 2006
    محل سكونت
    سوال بسیار جالب و بجایی بود
    پست ها
    974

    پيش فرض

    سلام، خیلی گلی

    نه، مشکل حل نشد. شالینه جان شما دو فرمه امتحان کردی دیگه؟ درسته؟

    شما چیزی در مورد نوشته ی _H2_ میدونید؟ چه طور پر کنمش؟

  9. #7
    آخر فروم باز shalineh's Avatar
    تاريخ عضويت
    Mar 2007
    محل سكونت
    فعلا ایران
    پست ها
    1,033

    پيش فرض

    دیتابیس رو واسم ارسال کن. البته دیتاهاش رو حذف کن تا حجمش کم بشه. بلافاصله واست درستش میکنم.

  10. #8
    آخر فروم باز shalineh's Avatar
    تاريخ عضويت
    Mar 2007
    محل سكونت
    فعلا ایران
    پست ها
    1,033

    پيش فرض

    پتروس عزیز، برنامه ات رو بازنگری کردم. چنین برنامه ای باید هم ارور بده. چون کدهای Unmanaged فراوانی رو در پروژه ات دیدم. آنها را یک به یک واست شرح خواهم داد.

    ابتدا می پردازم به سر منشاء تمام این فسق و فجورها
    ماجرا از همون کد موجود در frmLogin شروع میشه. جایی که در رویداد btnLogin_Click یک اشتباه تکنیکی رخ داده است. این قطعه کد را دقت کنید:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    در این رویداد ،دوبار CMD تعریف شده است. در حالی که اصلا نیازی به این کار نیست. ( قسمتهای قرمز رنگ ) این یعنی اشغال منابع!!
    همچنین دستور ExecuteScalar برای هر متغیر دوبار درخواست شده است! چراااااااااا؟ یکبار کافی است. ( قسمتهای سبز رنگ )

    و چند اشکال دیگر که از حوصله این بحث خارج است.

    و اما اشکال اساسی این است: دستور بستن دیتا بیس بعد از دستور بستن فرم صادر شده است!! ( قسمت آبی رنگ ) . بعلاوه دستور باز شدن دیتابیس بدون هیچ شرطی داده شده است، در حالیکه بستن دیتابیس داخل بلاک شرطی قرار دارد. این یعنی فاجعه.
    توصیه ای واست دارم : همیشه دستور باز کردن دیتابیس رو بلافاصله قبل از عملیات صادر کن. و بلافاصله بعد از عملیات آنرا ببند. ( جاهایی که underLine کردم رو حذف و با کد صورتی Bold جایگزین کن ).

    در ضمن ، وقتی تمام connection variables در ماجول تعریف شده است ( آنهم از نوع پابلیک ) تعریف این متغیرها در این قسمت چه لزومی دارد؟

    ادامه دارد ...

  11. #9
    آخر فروم باز shalineh's Avatar
    تاريخ عضويت
    Mar 2007
    محل سكونت
    فعلا ایران
    پست ها
    1,033

    پيش فرض

    و اما فرم frmPersonnel

    رویداد لود این فرم را دقت کنید:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    حالا روتین ReNewGrid رو با هم مرور می کنیم:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    در روال لود فرم، شما ابتدا دیتاتیبل ( DT ) را Fill نموده اید. سپس دیتاگرید را به آن وصل کرده اید. درسته؟
    سپس روتین ReNewGrid را call کرده اید. یعنی چه؟ یعنی اینکه به دلم نچسبید ، دوباره دیتابیس رو باز کن و دیتاگرید رو Fill کن!!
    بهتر نبود فقط یکبار ReNewGrid رو در روال لود فرم، صدا می زدید؟ و دیتا گرید را خودتان آپدیت می کردید؟
    من از دستور Fill ساده متنفرم. میدونی چرا؟ برای اینکه شما فرض کنید دیتابیس شما دارای چندین صد هزار رکورد است. اجرای دستور Fill ساده حتی برای یکبار هم میتونه هر سیستمی رو فلج کنه ، چه برسه به اینکه این دستور دوبار صادر شود!!! ( آنهم دوبار پشت سر هم ).
    دستور Fill حتما باید با آرگومانهای StartRecord و MaxRecord همراه باشد ( OverLoads شماره پنج از این تابع )، تا فقط اطلاعات به تعداد مورد نیاز لود شود نه همه دیتاها. در MSDN هم بر این نکته اصرار شده است و ترجمه عین جمله آنرا برایتان نقل قول میکنم : "تابع Fill بسیار وقت گیر است و چنین فرض شده است که در هر برنامه فقط یکبار صادر می شود".

    در این فرم باز هم شاهد این هستیم که Da.SelectCommand تعریف شده است. تعاریف موجود در ماجول چیکاره هستند، خدا داند و پتروس و بس!!!
    این درحالی است که دستور دهنده اصلی ما CMD می باشد. و بروز هرگونه اروری از جمله ارور اشاره شده در پست اول ، محتمل است.

    در روالهای btnInsert_Click ، btnDelete_Click و btnUpdate_Click باز هم شاهد فراخوانی روتین ReNewGrid هستیم ( تکرا چندین باره دستور Fill ) .

    به جای دستور DT.Clear بهتر است از DT.Reset استفاده شود.

    تمام دستورات Insert و Update و Delete بهتر است در درون بلاک Try قرار گیرد. علاوه بر اینکه دستور Close باید در درون بلاک اصلی try قید شود ، همین دستور باید در بخش Catch نیز صادر شود، تا در صورت بروز هر اروری، اتصال به دیتابیس بسته شود.

    ادامه دارد ...

  12. #10
    آخر فروم باز shalineh's Avatar
    تاريخ عضويت
    Mar 2007
    محل سكونت
    فعلا ایران
    پست ها
    1,033

    پيش فرض

    می رسیم به فرم frmRestaurantDetails

    در مرحله لود این فرم، این دستورات صادر شده است:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    باز هم در این فرم شاهد تعریف دوباره روتین ReNewGrid هستیم و همان فراخوانیهای چندین باره این روتین!
    ( این روتین در تمام فرمها وجود دارد . پس ننگ بر تو باد که این روتین رو بصورت پابلیک و در درون ماجول تعریف نکرده ای. تا تمام فرمها به آن دسترسی داشته باشند. دیتاتیبل و دیتاگرید مورد نظر رو هم میتونستی به عنوان پارامتر این روال در نظر بگیری تا از هر فرم، این پارامترها به این روال ارسال می شدند. )
    کلا کپی پیست کردن در یک پروژه برنامه نویسی یعنی یک فاجعه انسانی . بانی این کار هم فرقی با هیتلر ندارد

    به نظر شما ، دستورات Conn.Open و Conn.Close در این رویداد چه لزومی دارد؟ تا برنامه به آن گیر دهد؟ هیچ!!

    >> یک دستور ویران کننده
    رویداد btnUpdate_Click را در این فرم ملاحظه بفرمایید:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    با دستور Bold شده، کانکشن ما به رحمت ایزدی پیوست و بعد از این ، هر ارجاعی به این کانکشن ، با تنبیهی سخت از سوی ویژوال استودیو همراه خواهد شد.

    ادامه دارد ...

صفحه 1 از 2 12 آخرآخر

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •