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

تبلیغات

تبلیغات متنی

صرافی ارکی چنج

صرافی rkchange

سایبان ماشین

دزدگیر منزل

تشریفات روناک

اجاره سند در شیراز

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

Future Innovate Tech

پی جو مشاغل برتر شیراز

لوله بازکنی تهران

آراد برندینگ

خرید یخچال خارجی

موسسه خیریه

واردات از چین

حمية السكري النوع الثاني

ناب مووی

دانلود فیلم

بانک کتاب

دریافت دیه موتورسیکلت از بیمه

طراحی سایت تهران سایت

irspeedy

درج اگهی ویژه

تعمیرات مک بوک

دانلود فیلم هندی

قیمت فرش

درب فریم لس

زانوبند زاپیامکس

روغن بهران بردبار ۳۲۰

قیمت سرور اچ پی

خرید بلیط هواپیما

بلیط اتوبوس پایانه

قیمت سرور dl380 g10

تعمیرات پکیج کرج

لیست قیمت گوشی شیائومی

خرید فالوور

بهترین وکیل کرج

بهترین وکیل تهران

خرید اکانت تریدینگ ویو

خرید از چین

خرید از چین

تجهیزات کافی شاپ

نگهداری از سالمند شبانه روزی در منزل

بی متال زیمنس

ساختمان پزشکان

ویزای چک

محصولات فوراور

خرید سرور اچ پی ماهان شبکه

دوربین سیمکارتی چرخشی

همکاری آی نو و گزینه دو

کاشت ابرو طبیعی و‌ سریع

الک آزمایشگاهی

الک آزمایشگاهی

خرید سرور مجازی

قیمت بالابر هیدرولیکی

قیمت بالابر هیدرولیکی

قیمت بالابر هیدرولیکی

لوله و اتصالات آذین

قرص گلوریا

نمایندگی دوو در کرج

خرید نهال سیب

 






آمار وبسایت

 تعداد کل بازدیدها : 1831220880




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

یه ارور دیگه


واضح آرشیو وب فارسی:سایت ریسک: Petros22-05-2009, 11:49 PMسلام اول بگم که من کلی در مورد مشکلم تو خود برنامه کلنجار میرم. سایتهای انگلیسی رو نگاه میکنم. فارسی رو نگاه میکنم و بعد پست میدم. منظور اینکه فرتی پست نمیزنم. آب تفاهم نشه. مشکل بنده هم ارور زیر هست. که از Conn.Open میگیره: The ConnectionString property has not been initialized کانکشن استرینگ اینا توی ماژول تعریف شدن. وقتی یه فرم رو که از کانکشن استرینگ استفاده میکنه باز و بسته میکنم و بعد میرم سراغ فرم بعدی که اون هم از کانکشن استرینگ Same و یکی استفاده میکنه این ارور رو میده. مشکل کجاست؟ ممنون آخرین سواله به مولا _H2_23-05-2009, 12:52 AMسلام این خطا فقط وقتی نمایش داده میشود که شما connection جدیدی تولید کنید ولی connectionstring ان را پر نکنید. بدون شک کدهای شما طوری نوشته شده که connectionstring پر نمیشود. میتوانید در لحظه خطا مشاهده کنید که خیصه connectionstring شما خالی است! چک کنید. کافی است کدهای خود را بازنگری کنید و مطمئن شوید هر new یک پرکردن connectionstring را هم همراه دارد. در صورت عدم رفع مشکل کدهای خود را اینجا بگذارید تا ایرادش را بتوان راحت پیدا کرد. shalineh23-05-2009, 03:37 PMسلام اول بگم که من کلی در مورد مشکلم تو خود برنامه کلنجار میرم. سایتهای انگلیسی رو نگاه میکنم. فارسی رو نگاه میکنم و بعد پست میدم. منظور اینکه فرتی پست نمیزنم. آب تفاهم نشه. نه. سوء تفاهم نمیشه! :31: اما یه نکته رو از من داشته باش. دیباگ کردن رو برای اینجور مواقع گذاشته اند . کافیه بخشی رو که ارور میده، بصورت خط به خط دیباگ کنی. اون موقع است که هم ایراد برنامه ات رو پیدا می کنی و هم ایرادهایی رو که اصلا فکر نمی کردی ایجاد بشه ( ارورهای منطقی بهش میگن ) رو پیشگیری میکنی و هم مهمتر از همه، با دیدن دیباگ، خیلی چیزها رو یاد میگیری و در برنامه های بعدی ازش استفاده می کنی. هر چند اگه هزاران سوال هم بپرسی، اگه سوادمون اجازه بده، با جان و دل بهت جواب خواهیم داد. چون با پاسخ دادن به سوالات ، خودمون هم چیزهایی فراوانی یاد می گیریم. :11: Petros23-05-2009, 06:52 PMمن نمیدونم دقیقا کدوم قسمت (با کسره) کد رو بزارم. ولی این تعاریف توی ماژول هستش و پایینی مربوط به From Loud. ارور هم مربوط به فرم لود و Conn.Open هستش. !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! shalineh23-05-2009, 07:16 PMوالله کد شما رو تست کردم . هیچ اروری نداد. اما: برای حل مشکل شما، کد رو بصورت زیر تغییر بده. ببین درست میشه. اگه نشد ، خبرم کن. !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! اگر مشکلت حل نشد، این را هم امتحان کن: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! به نظر من نیازی به باز و بسته کردن کانکشن نیست. Petros23-05-2009, 08:32 PMسلام، خیلی گلی نه، مشکل حل نشد. شالینه جان شما دو فرمه امتحان کردی دیگه؟ درسته؟ شما چیزی در مورد نوشته ی _H2_ میدونید؟ چه طور پر کنمش؟ shalineh23-05-2009, 08:36 PMدیتابیس رو واسم ارسال کن. البته دیتاهاش رو حذف کن تا حجمش کم بشه. بلافاصله واست درستش میکنم. shalineh24-05-2009, 03:37 PMپتروس عزیز، برنامه ات رو بازنگری کردم. چنین برنامه ای باید هم ارور بده. چون کدهای Unmanaged فراوانی رو در پروژه ات دیدم. آنها را یک به یک واست شرح خواهم داد. ابتدا می پردازم به سر منشاء تمام این فسق و فجورها :31: ماجرا از همون کد موجود در frmLogin شروع میشه. جایی که در رویداد btnLogin_Click یک اشتباه تکنیکی رخ داده است. این قطعه کد را دقت کنید: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! در این رویداد ،دوبار CMD تعریف شده است. در حالی که اصلا نیازی به این کار نیست. ( قسمتهای قرمز رنگ ) این یعنی اشغال منابع!! همچنین دستور ExecuteScalar برای هر متغیر دوبار درخواست شده است! چراااااااااا؟ یکبار کافی است. ( قسمتهای سبز رنگ ) و چند اشکال دیگر که از حوصله این بحث خارج است. :46: و اما اشکال اساسی این است: دستور بستن دیتا بیس بعد از دستور بستن فرم صادر شده است!! ( قسمت آبی رنگ ) . بعلاوه دستور باز شدن دیتابیس بدون هیچ شرطی داده شده است، در حالیکه بستن دیتابیس داخل بلاک شرطی قرار دارد. این یعنی فاجعه. توصیه ای واست دارم : همیشه دستور باز کردن دیتابیس رو بلافاصله قبل از عملیات صادر کن. و بلافاصله بعد از عملیات آنرا ببند. ( جاهایی که underLine کردم رو حذف و با کد صورتی Bold جایگزین کن ). در ضمن ، وقتی تمام connection variables در ماجول تعریف شده است ( آنهم از نوع پابلیک ) تعریف این متغیرها در این قسمت چه لزومی دارد؟ ادامه دارد ... shalineh24-05-2009, 04:20 PMو اما فرم frmPersonnel رویداد لود این فرم را دقت کنید: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! حالا روتین ReNewGrid رو با هم مرور می کنیم: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! در روال لود فرم، شما ابتدا دیتاتیبل ( DT ) را Fill نموده اید. سپس دیتاگرید را به آن وصل کرده اید. درسته؟ سپس روتین ReNewGrid را call کرده اید. یعنی چه؟ یعنی اینکه به دلم نچسبید :31:، دوباره دیتابیس رو باز کن و دیتاگرید رو Fill کن!! بهتر نبود فقط یکبار ReNewGrid رو در روال لود فرم، صدا می زدید؟ و دیتا گرید را خودتان آپدیت می کردید؟ من از دستور Fill ساده متنفرم. میدونی چرا؟ برای اینکه شما فرض کنید دیتابیس شما دارای چندین صد هزار رکورد است. اجرای دستور Fill ساده حتی برای یکبار هم میتونه هر سیستمی رو فلج کنه ، چه برسه به اینکه این دستور دوبار صادر شود!!! ( آنهم دوبار پشت سر هم ). دستور Fill حتما باید با آرگومانهای StartRecord و MaxRecord همراه باشد ( OverLoads شماره پنج از این تابع )، تا فقط اطلاعات به تعداد مورد نیاز لود شود نه همه دیتاها. در MSDN هم بر این نکته اصرار شده است و ترجمه عین جمله آنرا برایتان نقل قول میکنم : "تابع Fill بسیار وقت گیر است و چنین فرض شده است که در هر برنامه فقط یکبار صادر می شود". در این فرم باز هم شاهد این هستیم که Da.SelectCommand تعریف شده است. تعاریف موجود در ماجول چیکاره هستند، خدا داند و پتروس و بس!!! :46: این درحالی است که دستور دهنده اصلی ما CMD می باشد. و بروز هرگونه اروری از جمله ارور اشاره شده در پست اول ، محتمل است. در روالهای btnInsert_Click ، btnDelete_Click و btnUpdate_Click باز هم شاهد فراخوانی روتین ReNewGrid هستیم ( تکرا چندین باره دستور Fill ) . به جای دستور DT.Clear بهتر است از DT.Reset استفاده شود. تمام دستورات Insert و Update و Delete بهتر است در درون بلاک Try قرار گیرد. علاوه بر اینکه دستور Close باید در درون بلاک اصلی try قید شود ، همین دستور باید در بخش Catch نیز صادر شود، تا در صورت بروز هر اروری، اتصال به دیتابیس بسته شود. ادامه دارد ... shalineh24-05-2009, 04:43 PMمی رسیم به فرم frmRestaurantDetails در مرحله لود این فرم، این دستورات صادر شده است: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! باز هم در این فرم شاهد تعریف دوباره روتین ReNewGrid هستیم و همان فراخوانیهای چندین باره این روتین! ( این روتین در تمام فرمها وجود دارد . پس ننگ بر تو باد که این روتین رو بصورت پابلیک و در درون ماجول تعریف نکرده ای. تا تمام فرمها به آن دسترسی داشته باشند. دیتاتیبل و دیتاگرید مورد نظر رو هم میتونستی به عنوان پارامتر این روال در نظر بگیری تا از هر فرم، این پارامترها به این روال ارسال می شدند. ) کلا کپی پیست کردن در یک پروژه برنامه نویسی یعنی یک فاجعه انسانی . بانی این کار هم فرقی با هیتلر ندارد :31: به نظر شما ، دستورات Conn.Open و Conn.Close در این رویداد چه لزومی دارد؟ تا برنامه به آن گیر دهد؟ هیچ!! >> یک دستور ویران کننده رویداد btnUpdate_Click را در این فرم ملاحظه بفرمایید: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! با دستور Bold شده، کانکشن ما به رحمت ایزدی پیوست و بعد از این ، هر ارجاعی به این کانکشن ، با تنبیهی سخت از سوی ویژوال استودیو همراه خواهد شد. ادامه دارد ... shalineh24-05-2009, 05:08 PMبخش آخر و جمع بندی: در سایر فرمهای این برنامه، باز هم شاهد نابسامانیهایی از نظر ارجاعات و تعاریف مجدد و فراخوانیهای چندین باره هستیم. این برنامه باید از نظر مسائل گفته شده ، اصلاح شود تا بصورت بهینه ای در بیاد. اما یک کلام ، ختم کلام: دستور Conn.Dispose را در تمام فرمهایت حذف کن. تا شاهد ارور فوق نشوی. در همان نگاه اول و با یک دیباگ ساده، منشاء این ارور کشف شد. بقیه مطالب صرفا جهت نقد و بررسی برنامه بود ( به خواسته خود پتروس عزیز ). :11: Petros24-05-2009, 09:24 PMشما که منو با این حرکتتون له کردید. البته میدونم بعدها اینا به درد دوستان دیگه هم خواهد خورد. شالینه جان به اطلاعاتت غبطه خودم. امیدوارم همین جمع رو توی ایران خودمون داشته باشیم. در سایه سار امن ایمان پایدار باشی و جاودان دی: سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود




این صفحه را در گوگل محبوب کنید

[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 2290]

bt

اضافه شدن مطلب/حذف مطلب




-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن