PDA

View Full Version : خطای Multiple-step operation generated errors در زمان مقداردهی فیلدی بر حسب فیلد دیگر



maryamb
پنج شنبه 19 فروردین 1389, 18:13 عصر
سلام دوستان.
توی برنامم در قسمت عوض کردن سال مالی اونجایی که می خوام حساب اشخاص رو به جدول سال جدید انتقال بدم این خطا رو می ده.(عکس)
کدی که نوشتم هم اینه:


Adodc3.refresh




Dim sanadno

For t = 0 To Adodc3.Recordset.RecordCount - 1


If Adodc3.Recordset.Fields("k2") = "بستانكار" Then
sanadno = sanadno + 1
Adodc5.Recordset.AddNew
Adodc5.Recordset.Fields("bes") = Adodc3.Recordset.Fields("k3")
Adodc5.Recordset.Fields("bed") = 0
Adodc5.Recordset.Fields("varizno") = sanadno
Adodc5.Recordset.Fields("idmoshtary") = Adodc3.Recordset.Fields("id")
Adodc5.Recordset.Fields("date") = "13" & salmali & "/01/01"
Adodc5.Recordset.Fields("comment") = "مانده از سال پيش"
Adodc5.Recordset.Update
Adodc5.refresh
ElseIf Adodc3.Recordset.Fields("k2") = "بدهكار" Then
sanadno = sanadno + 1
Adodc5.Recordset.AddNew
Adodc5.Recordset.Fields("bed") = Adodc3.Recordset.Fields("k3")
Adodc5.Recordset.Fields("bes") = 0
Adodc5.Recordset.Fields("varizno") = sanadno
Adodc5.Recordset.Fields("idmoshtary") = Adodc3.Recordset.Fields("id")
Adodc5.Recordset.Fields("date") = "13" & salmali & "/01/01"
Adodc5.Recordset.Fields("comment") = "مانده از سال پيش"
Adodc5.Recordset.Update
Adodc5.refresh
End If
Adodc3.Recordset.MoveNext
Next



خطی که خطا میگیره رو مشخص کردم.
در این کد Adodc3 جدول مشتری هاست که جمع بدهی یا بستانکاری آخر سالشون تو فیلد k3 ذخیره شده و فقط باید به جدول adodc5 انتقال داده بشه


نکته مهم اینه که اولا اولین رکورد دخیره می شه و رو دومی خطا میگیره
ثانیا اگه عوض ( "Adodc3.Recordset.Fields("k3 بیام عدد ساده بذارم هیچ خطایی نمی گیره
مثلا 1000 بذارم.

xxxxx_xxxxx
پنج شنبه 19 فروردین 1389, 19:23 عصر
سلام،
دستورات مشکلی ندارند.

دو تا پیشنهاد:
1) Service Pack 6 (http://barnamenevis.org/forum/showpost.php?p=555937&postcount=16) رو نصب کنید تا ابزار Adodc آپدیت بشه.

2) در دستورات انتسابی که در هر دو طرف تساوی یک فیلد از دیتابیس قرار داره (مثل همون دستور قرمز رنگ)، عبارت سمت راست تساوی را ابتدا در یک متغیر قرار بدید، بعد مقدار متغیر رو به فیلد مورد نظر وارد کنید.

مثلاً بجای همون دستور قرمز رنگ اینطور بنویسید:


k3 = Adodc3.Recordset.Fields("k3")
Adodc5.Recordset.Fields("bed") = k3
لطفاً هر کدوم از این دو روش نتیجه داد، اطلاع بدید.

maryamb
جمعه 20 فروردین 1389, 11:50 صبح
ممنون
روش دوم رو امتحان کرده بودم.نتیجه نداده بود.
هم تو متغیر ریخته بودم و حتی یک بار هم نتیجه رو تو تکس باکس ریختم و بعد عدد داخل تکس باکس رو به adodc دادم. باز هم نشد.
خیلی عجیبه.
راستی عین همین کد رو تو برنامه های دیگه هم امتحان می کنم درست کار میکنن!!!فقط اینجا خطا میگیره.
یعنی تو بفیه برنامه هام هم ار همین روش استفاده می کردم!!ولی درست کار می کرد.

می ترسم service pack6 رو نصب کنم همه چی به هم بریزه.بفیه برنامه هان کار نکن ؟؟!!

HjSoft
جمعه 20 فروردین 1389, 15:13 عصر
Type فیلدی که دارین توش چیزی میریزین و ازش چیزی بر میدارین چیه ؟
این خطا مربوط به اینه که Type فیلد شما با ورودیتون فرق داره . مثلا اگر Number باشه حروف رو ارور میده و قبول نمی کنه .

xxxxx_xxxxx
جمعه 20 فروردین 1389, 16:15 عصر
می ترسم service pack6 رو نصب کنم همه چی به هم بریزه.بفیه برنامه هان کار نکن ؟؟!!
مطمئن باشید با نصب SP6 هیچ اتفاق ناگواری رخ نمیده.
دیتابیستون چی هست؟ Access یا SQL ؟

maryamb
شنبه 21 فروردین 1389, 23:00 عصر
دیتا بیسم access هست.
type اون فیلد هم number هست و دارن number واردش می کنم.خطا از اون نیست.
خیلی کلافه شدم !!!عجیبه

HjSoft
یک شنبه 22 فروردین 1389, 18:50 عصر
سلام ، برای اطمینان از مشکل Type ( چون این مشکل بیشتر به دلیل Type هست ) ، کافیست Number رو به String تبدیل کنید .
در ضمن استفاده از Sp به سورس شما صدمه ای وارد نمیکنه ! یعنی من تازگی ها نصب کردم بیشتر مشکلاتم حل شده . پیشنهاد میکنم که نصبش کنید .

xxxxx_xxxxx
یک شنبه 22 فروردین 1389, 19:48 عصر
مشکل از Type فیلدها نیست. این ضعف Adodc است.

maryamb
یک شنبه 22 فروردین 1389, 23:29 عصر
sp رو امتحان می کنم و فردا خبرشو میدم.

maryamb
دوشنبه 23 فروردین 1389, 13:26 عصر
اون رو هم امتحان کردم و باز هم حطا داد.
ببخشید محض اطمینان می شه توضیح بدین باید کجا نصبش می کردم و اصلا کلا اون فایل رو کجا باید باز می کردم؟من همینجوری تو درایو extract کردمش و بعد یه setup پیدا کردم وهمونو نصب کردم.همینطوری بود؟؟

programer1389
دوشنبه 23 فروردین 1389, 13:31 عصر
فیلدتون duplicate نداره؟

maryamb
جمعه 27 فروردین 1389, 11:20 صبح
نه فکر نکنم.
تو کل برنامه دارم ازش استفاده میکنم و هیچ خطایی نمیده.
بانکم موردی نداره

hrj1981
جمعه 27 فروردین 1389, 15:08 عصر
با سلام، شما باید اندازه حاصل جمع ارقامی که در فیلد K3 ذخیره می شوند را محاسبه نمایید.
مثلا در طول سال مالی ماکزیمم عددی که برای هر فرد وارد می نمایید ممکن است 100 باشد و فیلد شما بر اساس همین 100 از نوع نامبریک معمولی باشد ولی حاصل جمع انها در انتهای سال عددی بزرگتر می شود و اگر این عدد با اندازه فیلد شما مغایرت داشته باشد پیغام خطا صادر می کند، بهتر است نوع فیلدهای عددی خود را از نوع دابل تنظیم نمایید.

xxxxx_xxxxx
جمعه 27 فروردین 1389, 16:28 عصر
اگر امکانش هست، این قسمت از برنامه رو همراه با دیتابیس اینجا قرار بدید.

maryamb
شنبه 28 فروردین 1389, 19:53 عصر
با سلام، شما باید اندازه حاصل جمع ارقامی که در فیلد K3 ذخیره می شوند را محاسبه نمایید.
مثلا در طول سال مالی ماکزیمم عددی که برای هر فرد وارد می نمایید ممکن است 100 باشد و فیلد شما بر اساس همین 100 از نوع نامبریک معمولی باشد ولی حاصل جمع انها در انتهای سال عددی بزرگتر می شود و اگر این عدد با اندازه فیلد شما مغایرت داشته باشد پیغام خطا صادر می کند، بهتر است نوع فیلدهای عددی خود را از نوع دابل تنظیم نمایید.
__________________
www.hrjsoftware.ir (http://www.hrjsoftware.ir/)

ممنون دوست عزیز ولی در طول برنامه رفم های بزرگ هم بی مشکل داخلش ذخیره می شد مشکل از اون نیست.تازه به رفم کاری نداره و عدد کوچک هم که باشه باز گیر میده.ولی به عدد وافعی گیر نمی ده.

اگر امکانش هست، این قسمت از برنامه رو همراه با دیتابیس اینجا قرار بدید.
برنامم خیلی بزرگه و نمی تونم یه فسمتشو جدا کنم وگرنه میذاشتم.
راستی نحوه ست آپsp رو پرسیده بودم ولی کسی جواب نداد

xxxxx_xxxxx
یک شنبه 29 فروردین 1389, 00:47 صبح
من همینجوری تو درایو extract کردمش و بعد یه setup پیدا کردم وهمونو نصب کردم.همینطوری بود؟؟

درسته. یک فایل self extractor بود که بعد از extract کردن فایل ها، یک فایل setup با نام setupsp6.exe داره که باید نصب شه.