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

مشکل این برنامه کجاست

salarblacklove

Registered User
تاریخ عضویت
5 ژوئن 2005
نوشته‌ها
135
لایک‌ها
0
سن
43
محل سکونت
دنياي فاني
من این برنامه رو دارم می نویسم ولی یک مشکل دارم اونم اینه که وقتی میخوام ذخیره کنم خطا میده نتونستم مشکل رو حل کنم :(
 

فایل های ضمیمه

  • Amozeshgah.rar
    11.5 KB · نمایش ها: 13
  • error.jpg
    error.jpg
    85.8 KB · نمایش ها: 14

Y.P.Y

Registered User
تاریخ عضویت
6 دسامبر 2008
نوشته‌ها
94
لایک‌ها
6
محل سکونت
ایران - تهران
من این برنامه رو دارم می نویسم ولی یک مشکل دارم اونم اینه که وقتی میخوام ذخیره کنم خطا میده نتونستم مشکل رو حل کنم :(

1- همیشه در بالای کد فرم هاتون از دستور Option Explicit استفاده کنید!
2- در ساب Form_Unload و Form_QueryUnload دستور Cancel = 0 رو قرار بدید.
3- اینگونه تعریف متغیر اشتباه است:
کد:
Dim nam, famil, f_name, code, b_date, id, sodor, mobile, tel, job, address, _
morafe, gender, standard, Time, s_shoro, s_payan, dore, t_shoro, t_payan, sheft, morabi, kart As String
فقط متغیر آخری از نوع String محسوب می شه.
صحیح:
کد:
Dim xxx As String, zzz As String, yyy As String
و حد اکثر 5 متغیر رو بصورت افقی تعریف کنید.
4- از Import(وارد) کردن Component های اضافی به داخل نرم افزار خودداری کنید.
5- هنگاه تعریف توابع از فایلهای کتابخانه ای(DLL)، نام فایل و پسوند فایل رو دقیقاً مشخص کنید. User32.dll, Kernel32.dll...
6- از نامهای پیش فرض برنامه(VB) برای نامگذاری استفاده نکنید! مثل Data, Text, Time,...

این خطا هم بدلیل کاراکتر فاسی هست که با دستورات برنامه/SQL یکی شده. دستورات SQL رو جداگانه در یک ویرایشگر SQL قرار بدید و چکشون کنید.
من کمی تغییرات در برنامه ایجاد کردم. از این استفاده کنید.
 

فایل های ضمیمه

  • Amozeshgah.zip
    12.2 KB · نمایش ها: 7

rouzbeh_ziafati

Registered User
تاریخ عضویت
17 دسامبر 2006
نوشته‌ها
165
لایک‌ها
5
سن
43
محل سکونت
همدان
در بانک اکسس
یکی از جداول من تعداد رکوردهایی که توی دیتاگرید نشون میده یکی بیشتر از تعداد رکوردهایی هست که توی بانک نشون میده !
وقتی می خوام رکوردها رو پاک کنم به همین دلیل خطای
row cannot be located for updating. some values may have been changed since it was last read
رو بهم میده !!!!
چکار باید بکنم ؟!؟! اصلا چرا این مشکل بوجود میاد هر از گاهی ؟ چطور رفعش کنم ؟ یکی کمک کنه که خیلی ضروریه
لازم به ذکر هست که برنامه من نوبت دهی به ماشین هاست برای بارگیری .
بعضی ماشین ها ممکن هست چند روز توی نوبت باشند .
برنامه هر شب سر ساعت 12 شب ماشین هایی رو که بیش از 3 روز هست توی نوبت هستند از جدول پاک میکنه . برنامه خوب کار میکنه اما هر از گاهی بعد از مدتی اون خطا رو میده و بسته میشه وقتی بررسی میکنم میبینم که یک رکورد توی بانک کمتر از تعداد رکوردهایی هست که توی جدول دارم . انگار که از بانک حذف شده اما از دیتا گرید یا شئی adodc حذف نشده !!!! نمی دونم ممکنه مشکل از کجا باشه ؟!؟!؟!

این یه قطعه کد از برنامه است

If Adodc8.Recordset.EOF <> True Then
Do While Adodc8.Recordset.EOF <> True
ekhtelaf = DateDiff("d", Right(Adodc8.Recordset.Fields(0), 8), Right(J_TODAY(1), 8))
If Val(ekhtelaf) > Adodc13.Recordset.Fields(0) Then

Adodc8.Recordset.Delete

End If
Adodc8.Recordset.MoveNext
Loop
End If​
 

rouzbeh_ziafati

Registered User
تاریخ عضویت
17 دسامبر 2006
نوشته‌ها
165
لایک‌ها
5
سن
43
محل سکونت
همدان
لازم به ذکر هم هست که اول من برنامه رو با شئی data نوشته بودم و اصلا با این خطا مواجه نمیشدم. اما چون مجبور شدم برای بانک پسوورد بگذارم مجبور شدم از شئی adodc بجای data استفاده کنم . و وقتی این کار رو کردم هر از گاهی با این خطا مواجه میشم .
بعضی از ارور ها رو با دستور
adodc.recordset.close
adodc.recordset.open
از بین بردم . اما این دو دستور پشت سر نیز باز نتونست جلوی همه خطاهارو بگیره !!!
 
بالا