View Full Version : مشكل در محاسبه اختلاف دو تاريخ( تاريع diff )
انگوران
یک شنبه 19 اردیبهشت 1389, 19:48 عصر
دوستان سلام - در استفاده از تابع diff كه ماژول اونو آقاي آزادي زحمت كشيدن به دو تا مشكل برخوردم و اونم اينه كه اولاً تايع nz جواب نميده و ثانياً موقعي كه شرطي رو بصورت محاسبات عددي وارد ميكنم ايراد ميگيره مثلاً10>
اگه نيازه فايلش رو هم پيوست كنم . با سپاس
wolfstander
دوشنبه 20 اردیبهشت 1389, 11:04 صبح
سلام
البته آقای آزادی زحمت زیادی کشیدند ، ولی من از ترکیب ماژول آقای آزادی و ماژول فرساران استفاده میکنم
اینطوری جواب درستی میگیرم همیشه
یعنی بخش کنترل تاریخ رو میسپرم به ماژول آقای آزادی و بخش محاسبات تاریخ رو از ماژول فرساران استفاده میکنم
تا اینجا هم بدون مشکل جواب داده بهم
:لبخند:
انگوران
دوشنبه 20 اردیبهشت 1389, 11:59 صبح
ضمن تشكر فايل رو هم پيوست كردم ممنون ميشم در صورت رفع مشكل ماژول نهائي هم طي فايلي ارسال بشه .
amirzazadeh
دوشنبه 20 اردیبهشت 1389, 13:16 عصر
ضمن تشكر فايل رو هم پيوست كردم ممنون ميشم در صورت رفع مشكل ماژول نهائي هم طي فايلي ارسال بشه .
سلام
در كوئري به جايexpr1 از اين عبارت استفاده كنيدكه در فيلدهاي خالي به جاي پيام خطا عدد صفر رو جايگزين ميكنه:
Expr1: diff(shamsi();nz([dat];0))............................
موفق باشيد
wolfstander
دوشنبه 20 اردیبهشت 1389, 14:24 عصر
سلام آقای انگوران
فکر کنم مشکل رو فهمیده باشم
من این مشکل رو داشتم ولی با کمک آقای قربانی ، حل شد
شما این فایل ضمیمه رو ببین
فکر کنم با ترکیب دو ماژول به نتیجه برسید
من هم مشکل شما در کنترل ورود داده تاریخ شمسی داشتم که طبق فایل ضمیمه ، حل شد
خود من هم نتونستم فقط با استفاده از تابع آقای آزادی عمل کنم
برای همین مجبور شدم از توابع آقای میدانی (فرساران) استفاده کنم
در فایل ضمیمه چندتا ماژول دیگه هم هست
یکی برای پیغام MsgBox فارسی
دیگری هم برای باز کردن فایل Pdf تو برنامه اکسس هستش
اونها رو هم گذاشتم گفتم احتمالا ً به درد بخوره
برای اینکه فایل راهنما رو پی دی اف کنید و بذارید که کاربرهاتون استفاده کنند و لذت ببرند
;)
موفق باشید
انگوران
دوشنبه 20 اردیبهشت 1389, 15:27 عصر
ضمن تشكر از آقا بهرنگ بينش و اميرزاده عزيز مشكلي كه در حالت فوق پيش مياد اينه كه صفر هم تو نتيجه محاسبات مياد كه نميخام اينطور باشه .
wolfstander
دوشنبه 20 اردیبهشت 1389, 16:32 عصر
ز مشكلي كه در حالت فوق پيش مياد اينه كه صفر هم تو نتيجه محاسبات مياد كه نميخام اينطور باشه .
آها
اگه درست متوجه شده باشم ، منظور شما اینه که اگه تاریخ وارد شده و تاریخ روز یکی باشه ، مقدار صفر رو برمیگردونه
اگه این مشکله که خوب میشه با دستور Iif بهش بگید که اگه دو تاریخ یکی بود، بذاره 1 ؛ در غیر اینصورت تفاوت دو تاریخ رو محاسبه کنه و نمایش بده
فکر کنم به این صورت اصلاح بشه
اگه بازم درست نفهمیده بودم ، بفرمائید تا ببینیم که مشکل چیه
انگوران
دوشنبه 20 اردیبهشت 1389, 17:38 عصر
نه عزيزم ، منظورم اينه كه اگه فيلد تاريخ خالي بود نتيجه محاسبه error نباشه و ...
amirzazadeh
دوشنبه 20 اردیبهشت 1389, 20:13 عصر
ضمن تشكر از آقا بهرنگ بينش و اميرزاده عزيز مشكلي كه در حالت فوق پيش مياد اينه كه صفر هم تو نتيجه محاسبات مياد كه نميخام اينطور باشه .
سلام
شرط رو به اين شكل اصلاح كنيد تا نتايج صفر در كوئري نشان داده نشه.
<10 And <>0
...............................
موفق باشيد
انگوران
سه شنبه 21 اردیبهشت 1389, 06:35 صبح
دوست عزيز اگه بجاي صفر بخوام يه پيغام داشته باشم چه راه حلي رو پيشنهاد مي كنيد مثلاً "تاريخ اتمام وارد نشده " با سپاس مجدد
anbaran
سه شنبه 21 اردیبهشت 1389, 07:34 صبح
دوست عزيز اگه بجاي صفر بخوام يه پيغام داشته باشم چه راه حلي رو پيشنهاد مي كنيد مثلاً "تاريخ اتمام وارد نشده " با سپاس مجدد
کوئری را به صورت زیر تغییر بده
SELECT Table1.dat, IIf(nz([dat])<>"",nz(diff(shamsi(),[dat]),""),"تاریخ اتمام وارد نشده است") AS Expr1
FROM Table1
WHERE (((IIf(IsNumeric(IIf(nz([dat])<>"",nz(diff(shamsi(),[dat]),""),"تاریخ اتمام وارد نشده است"))=0,0,nz(diff(shamsi(),[dat]))))>10 Or (IIf(IsNumeric(IIf(nz([dat])<>"",nz(diff(shamsi(),[dat]),""),"تاریخ اتمام وارد نشده است"))=0,0,nz(diff(shamsi(),[dat]))))=0));
انگوران
سه شنبه 21 اردیبهشت 1389, 10:38 صبح
بر اساس راهنمائي دوست عزيزم anbaran كدها رو يه مقدار خلاصه كردم ولي باز هم تو اعمال شرط به مشكل برخوردم كه فكر مي كنم به دليل دستكاري كدها باشه . ممنون ميشم اساتيد يه نگاهي به فايل پيوست بندازن.
انگوران
پنج شنبه 23 اردیبهشت 1389, 10:34 صبح
با سلام مجدد ، شايد يكي از ايرادائي كه اين سايت داره اينه كه توقع كاربرا از جمله خودم رو بالا برده يعني اونقده اساتيد اين فوروم گلن و استادن ( از ابتدا هم اينجوري بوده ) كه كسي انتظار نداره سؤالش بي جواب بمونه هر چند در خيلي مواقع بعضي از كاربرا تا حدي سوآلات رو مي پيچونن و ادامه مي دن كه بعضي از اساتيد خسته ميشن و حق هم دارن ولي ...
alirezabahrami
پنج شنبه 23 اردیبهشت 1389, 12:34 عصر
با سلام مجدد ، شايد يكي از ايرادائي كه اين سايت داره اينه كه توقع كاربرا از جمله خودم رو بالا برده يعني اونقده اساتيد اين فوروم گلن و استادن ( از ابتدا هم اينجوري بوده ) كه كسي انتظار نداره سؤالش بي جواب بمونه هر چند در خيلي مواقع بعضي از كاربرا تا حدي سوآلات رو مي پيچونن و ادامه مي دن كه بعضي از اساتيد خسته ميشن و حق هم دارن ولي ...
سلام جناب انگوران عزيز !
مي خواهيد اين مشكل در كوئري انجام شود يا نه در فرم هم باشه ايرادي نداره ؟
موفق باشيد
فايل نمونه را ملاحظه بفرما:
انگوران
پنج شنبه 23 اردیبهشت 1389, 13:46 عصر
سلام دوست عزيز - ضمن تشكر مشكل من تو اعمال شرط هست نه نحوه محاسبه اختلاف تاريخ
alirezabahrami
پنج شنبه 23 اردیبهشت 1389, 18:18 عصر
سلام دوست عزيز - ضمن تشكر مشكل من تو اعمال شرط هست نه نحوه محاسبه اختلاف تاريخ
انگوران جان ! نفرمودید که اینکار اگر از طریق فرم صورت بگیرد مشکلی داره یا نه
اگر مشکلی نداره فیلد اختلاف تاریخ را در جدول ایجاد و سپس کوئری آن را هم ایجاد و شرط را اعمال کن
موفق باشید
انگوران
سه شنبه 28 اردیبهشت 1389, 10:58 صبح
آقاي بهرامي عزيز ببخشيد از اينكه تا حالا نتونستم تاپيك رو ببينم و جواب بدم چون چند روزي مرخصي بودم . روشي كه فرمودين جالب و راهگشا است . ولي دوست داشتم مشكل آخرين فايلي كه پيوست شده رو بدونم چون منطقاً به نظر مشكلي نداره ولي عملاً جواب نميده . با سپاس
aviation
دوشنبه 18 مرداد 1389, 00:11 صبح
سلام:
ممنون از راهنمایی خوبتون ولی بازم برنامه من درست نشد یعنی اینکه دو سال رو اضافه میکنه ولی 4 سال رو خیر
احازه بدید برنامه اصلی که مشکل دارم رو بزارم ببنید
در این برنامه در فرم personal می خوام با استفاده از تاریخ روز و تاریخ تولد و تاریخ medical check تاریخ medical check next رو بدست بیارم اگه سن فرد بیشتر از 40 سال هست باید فرد هر دو سال بره چک پزشکی اگر سن کمتر از 40 هست هر 4 سال یکبار باید بره
البته من از دستور
=IIf(diff([shamsi];[BIRTHDAY])>14600;ADDDAY([MEDICALCHECK];1460);ADDDAY([MEDICALCHECK];730))
استفاده کردم ولی errror میده لطفا کمک کنید
جعفر88
سه شنبه 19 مرداد 1389, 09:16 صبح
آقاي بهرامي عزيز ببخشيد از اينكه تا حالا نتونستم تاپيك رو ببينم و جواب بدم چون چند روزي مرخصي بودم . روشي كه فرمودين جالب و راهگشا است . ولي دوست داشتم مشكل آخرين فايلي كه پيوست شده رو بدونم چون منطقاً به نظر مشكلي نداره ولي عملاً جواب نميده . با سپاس
سلام دوست عزيز نمي دونم تو اين فاصله مشكلتون حل شده يا نه ولي فايلتون بررسي شد ، ايرادي وجود نداره .
جعفر88
سه شنبه 19 مرداد 1389, 10:55 صبح
سلام:
... در این برنامه در فرم personal می خوام با استفاده از تاریخ روز و تاریخ تولد و تاریخ medical check تاریخ medical check next رو بدست بیارم اگه سن فرد بیشتر از 40 سال هست باید فرد هر دو سال بره چک پزشکی اگر سن کمتر از 40 هست هر 4 سال یکبار باید بره البته من از دستور
=IIf(diff([shamsi];[BIRTHDAY])>14600;ADDDAY([MEDICALCHECK];1460);ADDDAY([MEDICALCHECK];730))
استفاده کردم ولی error میده لطفا کمک کنید
دوست عزيز به نظرم چون تاريخ ها تون 8 رقمي هست ولي توابع ماژول فايلتون براي تاريخ هاي 6 رقمي منظور شده خطا ميده ، اگه ميشه تاريخ رو اصلاح كنين در غير اين صورت من يه فايلي (http://www.barnamenevis.org/forum/showpost.php?p=1035554&postcount=360)تو بخش برنامه هاي كاربردي گذاشتم كه توابع اون براي تاريخ هاي 8 رقمي هست كه با كمي دستكاري ميتونين توابع دلخواه تون رو بهش اضافه كرده و ازش استفاده كنين در ضمن فايلتون احتمالا ايرادي در كتابخانه هاي vb داره و برخي خطاي موجود رو نشون نميده پيشنهاد مي كنم فرمتون رو در يه فايل جديد كپي و بررسي كنين .
aviation
سه شنبه 19 مرداد 1389, 21:44 عصر
ممنون از کمکتون مشکل برطرف شد.
مشکل از نوع فرمت در table ها بود که باید number میشد.
حالا یک مشکل کوچیک درnext check در وقتی در control source فرمول را مینویسم چطور در جدول ذخیره بشه؟؟؟
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.