PDA

View Full Version : سوال: تفاضل عدد و تاریخ شمسی



dadsara
یک شنبه 30 تیر 1387, 10:31 صبح
باسلام خدمت همه دوستان
- در یک ریپورت می خواهم تفاضل یک عدد را نسبت به تاریخ در رکورد بعدی داشته باشم .
- باتوجه به اینکه از تابع SubtractDay آقای آزادی استفاده نموده ام
- ولی هنگام اجرا خطای 6 و پیغام OverFlow ظاهر می گردد و برنامه اجرا نمی شود.
- این تابع در خصوص فرم اجرا می شود ولی در Report اجرا نمی شود.
- ضمنا یک نمونه را ضمیمه می نمایم.

مهدی قربانی
یک شنبه 30 تیر 1387, 15:05 عصر
سلام
كدها خيلي زياد بود بنابراين من از همون روشي كه در فرم استفاده كرديد در گزارش استفاده كردم ببينيد مشكلتون حل ميشه ؟

dadsara
یک شنبه 30 تیر 1387, 15:56 عصر
باسلام
ضمن تشکر از جنابعالی ولی خواسته من این نبود بلکه همانگونه در خط اول سوالم مطرح نمودم و در فایل ضمیمه مشاهده می فرمائید می خواهم بغیر از ردیف اول مابقی رکوردها در ریپورت حاصل اختلاف تاریخ ردیف بعدی و عدد قبلی باشد.
من نیز از تابع Subtractday استفاده نموده ام ولی پیغام خطا ظاهر می شود .

مهدی قربانی
دوشنبه 31 تیر 1387, 18:40 عصر
سلام
عليرغم توضيحات شما دقيقاً متوجه منظورتون نشدم فكر مي كنم اگر بتونبد سئوال رو در قالب مثال تصويري مطرح كنيد خواسته شما ملموس تر خواهد بود .

dadsara
سه شنبه 01 مرداد 1387, 09:09 صبح
باسلام
ضمن تشکر مجدد تصویر مورد نظر به ضمیمه ارسال می گردد

مهدی قربانی
سه شنبه 01 مرداد 1387, 18:30 عصر
سلام
من از طريق ركوردست تونستم حالت مورد نظر شما رو پياد كنم البته به جاي Text14 فيلد C آپديت ميشه ، در رخداد On Open ريپورت كدهاي لازم نوشته شده :

Dim Rst As DAO.Recordset
Dim VarDate
Dim I
Set Rst = CurrentDb.OpenRecordset("table1")
Rst.MoveFirst
For I = 1 To Rst.RecordCount - 1
VarDate = Rst.Fields("a")
Rst.MoveNext
Rst.Edit
Rst.Fields("c").Value = Diff(VarDate, Rst.Fields("a"))
Rst.Update
VarDate = Rst.Fields("a")
Next I

Rst.Close
Set Rst = Nothing

dadsara
چهارشنبه 02 مرداد 1387, 08:54 صبح
سلام
من از طريق ركوردست تونستم حالت مورد نظر شما رو پياد كنم البته به جاي Text14 فيلد C آپديت ميشه ، در رخداد On Open ريپورت كدهاي لازم نوشته شده :

Dim Rst As DAO.Recordset
Dim VarDate
Dim I
Set Rst = CurrentDb.OpenRecordset("table1")
Rst.MoveFirst
For I = 1 To Rst.RecordCount - 1
VarDate = Rst.Fields("a")
Rst.MoveNext
Rst.Edit
Rst.Fields("c").Value = Diff(VarDate, Rst.Fields("a"))
Rst.Update
VarDate = Rst.Fields("a")
Next I

Rst.Close
Set Rst = Nothing

باسلام خدمت جنابعالی
ضمن تشکر مجدد از جنابعالی ، کد نوشته شده تنها زمانی درست اجرا می شود که ترتیب قرارگرفتن تاریخها در جدول به شکل صعودی باشد در غیر اینصورت خروجی اشتباه می باشد
- آیا حتما فیلدی که می خواهیم نتیجخ در آن مشاهده شود باید در جدول وجود داشته باشد و یا اینکه از یک متغیر نیز می توان استفاده نمود
لطفا جهت روشن تر شدن موضوع نمونه ضمیمه را مشاهده فرمائید

reza850101
پنج شنبه 26 اسفند 1389, 08:05 صبح
دوستان من از ماژول آقاي آزادي درفرم استفاده كردم اما محاسبه در جداول ثبت نميشود بايد چكار كردمثلا در فيلدي نوشتم =([diff([b];[a محاسبه انجام ميشه امادرجدول ثبت نميشه

amirzazadeh
پنج شنبه 26 اسفند 1389, 09:19 صبح
دوستان من از ماژول آقاي آزادي درفرم استفاده كردم اما محاسبه در جداول ثبت نميشود بايد چكار كردمثلا در فيلدي نوشتم =([diff([b];[a محاسبه انجام ميشه امادرجدول ثبت نميشه
سلام
براي اينكار شما بايد فرمول رو در يك تكست باكس باند نشده انجام بديد و نتيجه رو به فيلد مورد نظر وارد كنيد.(به عنوان مثال اگر textbox 1 نتيجه محاسبه در خودش داره و field1 فيلد مورد نظر شماست ميتونيد در رويداد after update تكست باكس (textbox1) از اين عبارت استفاده كنيد:)

field1=textbox1
..........................
موفق باشيد