PDA

View Full Version : خطا در هنگام به روز رسانی علت چیه؟



روح اله معینی زاده
یک شنبه 25 دی 1384, 12:13 عصر
سلام دوستان گرامی

این برنامه قبلاً که نوشته بودم (با 2003) کار می کرد و خطا نمی داد.

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

می شه عکس رو نگاه کنید و بنده را راهنمایی؟

با احترام- خدانگهدار

habedijoo
یک شنبه 25 دی 1384, 15:17 عصر
ببین یک بار تمام کد برنامتو یه نگاه بنداز . چون توی دات نت 2005 از ADO.NET 2 استفاده شده یه سری تغییرات Syntax ی بوجود اومده .
ببین اگر خطی هست که زیرش خط کشیده شده ، باید اونو اصلاح کنی . که در اکثر اوقات هم Help همونجا به کمکت می یاد .
یه نگاه بنداز و خبر بده .

روح اله معینی زاده
دوشنبه 26 دی 1384, 14:01 عصر
سلام
نه عزیز، هیچ خطی که شما می گید و منظورتون احتمالا آن خط‌های سبز رنگ زیگزاگ است، وجود نداره یا بهتر بگم توی اون Sub که هیچی نداره و من هم کل کارم رو توی همون Sub انجام می دم.
بازم منتظرم
با تشکر و خدانگهدار.

habedijoo
دوشنبه 26 دی 1384, 14:19 عصر
سلام
کدت رو خط به خط Trace کن . اونجایی رو که خطا میده پیدا کن . حداقل یه کدی چیزی بزار تا دوستان هم ببینند شاید مشکلت حل شود .

روح اله معینی زاده
سه شنبه 27 دی 1384, 08:21 صبح
سلام دوستان گرامی
این هم کد


connection_maker(DBs.ChipUpdater, act.Open)
Cmd_Chip_Update.CommandText = "UPDATE persons SET hausing_type=2, student_hause_id=" & _
dormitory_id & ", block_no =" & block_id & ", room_no=" & room_id & " WHERE " & _
"person_id='" & st_no & "'"
Try
Cmd_Chip_Update.ExecuteNonQuery()

در خط اول ارتباط با بانک برقرار شده و سپس بانک باز می شود (act.Open). {بدون خطا}
در خط دوم رشته به روز رسانی تهیه می شود. {بدون خطا}
در خط سوم به Try می رسیم {بدون خطا}
در خط چهارم رشته به روز رسانی باید اجرا شود که به خطا بر می خوریم.

جالب توجه اینه که همین خط در 2003 درست کار می کرد و مشکلی هم نداشت ولی به دلایلی بنده ویندوزم رو که دوباره نصب کردم و از طرفی گفتم بذار 2005 نصب کنم که بعدش به این خطا برخوردم.
جالب اینجاست که یه برنامه دیگه هم که دارم و آن هم درست کار می کرد و بنده تصمیم گرفتم که یه روال تغییر پسورد بهش اضافه کنم، آن هم در قسمت به روز رسانی (Update) به همین خطا بر می خورد. ولی در قسمت‌های دیگه هیچ خطایی حداقل تا حالا ندیدم.

با احترام- خدانگهدار

sh
سه شنبه 27 دی 1384, 16:38 عصر
در ورژن 2005 شما باید رشته اسکیو ال سرور رو با رایت کلیک کردن بر روی دیتا ست و اضافه کردن یک کوئری به آن انجام بدین
پیچیده ترین و پر پارامتر ترین دستورات رو براحتی میتونین در اونجا انجام بدین و براحتی پارامتر رو به دستور خود ارسال کنید
و اگر دیتا ست شما با کد ایجاد شده باید از شیوه کد نویسی ورژن 2003 استفاده کنید

روح اله معینی زاده
چهارشنبه 28 دی 1384, 09:52 صبح
سلام
ها ای که نوشتی (sh جان) یعنی چه؟

من دیتاست رو با کد ایجاد کرده ام.
همان‌طور که گفتم این کار رو بنده در 2003 بدون مشکل انجام می دادم و برنامه‌ام داشت کار می کرد.
منظور شما از این که گفتید «از شیوه کد نویسی 2003 استفاده کنید» چیست؟
با ذکر نمونه در 2005 بهتره.
بنده این کار را با اضافه کردن دستور در DataAdapter هم انجام داده ام (قسمت UpdateCommand)، اما وقتی نمی خواد حال بده این‌جوری می شه و دقیقاً همون خطای عکس بالا رو می ده.
در ضمن منظور از اضافه کردن دستور در دیتاست!!! رو هم بگید چیه، چون معمولاً من در DataAdapter دستورات رو اضافه می کردم و یا همین Command که بعد می شه اون رو به صورت مجزا اجرا کرد و برای این جور موارد که من فقط ارتباط با بانک برقرار می کنم و بعد Command رو اجرا کرده و مجدد ارتباط رو قطع می کنم، بسیار مناسب است.
پس سرتون رو به درد نیارم.
این دو مورد رو توضیح بدید که اگه با مثال 2005 باشه خیلی بهتره.
1- شیوه کد نویسی 2003 !!!؟
2- اضافه کردن در دیتاست !!!؟
با احترام- خدانگهدار.

sh
چهارشنبه 28 دی 1384, 16:58 عصر
یک دیتا ست رو فرم بگذار بعد روی اون راست کلیک کن و کوئری دلخواه رو بهش اضافه کن این کوئری بوصرت خودکار به TableAdapter شما اضافه میشه

روح اله معینی زاده
دوشنبه 03 بهمن 1384, 13:36 عصر
سلام
یعنی هیچ کس به این روش کار نکرده؟
در ضمن بانک اطلاعاتی Interbase است.
با احترام- خدانگهدار

روح اله معینی زاده
شنبه 08 بهمن 1384, 17:08 عصر
سلام
هورا، بالاخره مشکل حل شد.

بعد از یک جستجو روی گوگل به این نتیجه رسیدم که احتمالاً کد من درسته و مشکل از جای دیگری است.

1- درایور ارتباط با بانک رو پاک و دوباره نصب کردم: مشکل به جای خود باقیست.
2- درایور جدید دانلود و نصب کردم: !!!!!!! مشکل حل شد.

با احترام- خدانگهدار

habedijoo
یک شنبه 09 بهمن 1384, 09:01 صبح
یک کم بیشتر توضیح میدی چی شد .
با تشکر

روح اله معینی زاده
دوشنبه 10 بهمن 1384, 08:26 صبح
سلام خدمت دوستان گرامی

پس از این که دیدم ظاهراً کسی از بچه‌ها به این روش کار نکرده، خودم رفتم دنبالش.

پس از یه جست و جو که روی google زدم و دیدم که چند نفر دیگه از محیط‌های برنامه‌نویسی دیگه هم به این مشکل برخورده‌اند یه جورایی متقاعد شدم که VB.NET 2005 نمی تونه مساله ساز باشه.

نمی دونم با Interbase کار کردید یا نه، ولی با VB نمی شه مستقیم بهش وصل شد (مانند Access و ...). بنابراین شما نیاز دارید از یک ODBC برای این کار استفاده کنید. من هم از GM که مخفف Gemini .... می باشد استفاده می کردم با VB.NET 2003 و سیستم هم به خوبی جواب می داد.

به علت این که هارد سیستمم رو عوض کردم گفتم بذار VB.NET 2005 نصب کنم. این کار رو انجام دادم و GM رو هم نصب کردم. چون من اطلاعات رو از بانک MySql می گیرم و در Interbase به روز رسانی می کنم و از طرفی بانک MySql مربوط به مرکز رایانه‌ی ما می باشد و آن‌ها هم دسترسی من رو به سرور اصلی به طور موقت از بین برده بودند، من مجبور شدم که دسترسی رو روی سرور موقت برقرار کنم. برای این مورد مجبور شدم یه تغییراتی رو توی منبع برنامه بدم و دوباره آن را بسازم. پس از این عملیات دیدم که در دریافت اطلاعات از MySql به مشکلی بر نمی خورم ولی در به روز رسانی در Interbase به خطا می خوره. از طرفی این برنامه با 2003 داشت راحت کار می کرد. هم‌چنین این تغییراتی که در برنامه با 2005 دادم اصلاً ربطی به هیچ قسمت در ارتباط با MySql و Interbase نداشت. برای همین گفتم شاید اشکال از GM باشه (با توجه به جست و جوی ذکر شده در بالا).
اون رو حذف و نصب کردم و دیدم که مشکلی بر جای خود باقیست.
گفتم بذار نسخه جدیدی از اینترنت بگیرم و اگه درست نشد برگردم به همون 2003 و 2005 رو بی خیال شم. پس از یه جست و جو و دریافت نسخه جدید و نصب آن، بدون این که در برنامه تغییری بدهم، آن را اجرا کردم و با کمال تعجب دیدم که داره کار می کنه و بدون خطا برنامه به اتمام می رسه.
منم کفم برید و سریع اومدم و خبر رو نوشتم که اگه کسی با این روش کار می کنه و دچار مشکل شده، روش حل مشکلش رو بدونه.

ببخشید که زیاد نوشتم و سر شما رو به درد آوردم.

با احترام- مخلص همه بر و بچ- خدانگهدار

habedijoo
دوشنبه 10 بهمن 1384, 09:06 صبح
آقا دستت درد نکنه . ممنون

Milad Mohseny
دوشنبه 10 بهمن 1384, 23:56 عصر
مرسی ممنون