PDA

View Full Version : سوال: تکنیک پیدا کردن یک تاریخ خاص



wolfstander
پنج شنبه 12 خرداد 1390, 18:49 عصر
سلام
من یه مشکلی دارم و اونم اینکه برای یک سری از پیمانکارها، ما باید یه سری چک صادر کنیم به صورت ماهانه یا سه ماهه یا بعضیا هم هفتگی مثلا سه شنبه ها
حالا یکی همیشه پنجم ماه چکش رو باید بگیره، اون یکی دهم ماه
یکی هم هر سه ماه یک بار باید چکش رو بگیره
من چطور میتونم کدی رو بنویسم که 10 روز قبل از زمان صدور چک برای هر کدوم از اونها، به من آلارم بده؟
برای ماهیانه خوب یه جورایی راحته
فقط تاریخ رو به ازای هر ماه میخونم و ازش ده روز -با استفاده از توابع آقای آزادی- کم میکنم
درصورتی که اون ده روز، به تاریخ روز بخوره، میگم آلارم بده
ولی برای چکهای سه ماهه و هفتگی نمیدونم چه باید کنم؟
کسی راه حلی به ذهنش میرسه؟
کد رو نمیخوام زحمت بکشید
یه توضیح درباره تکنیکش بدید؛ ممنون میشم
با تشکر از همه دوستان

wolfstander
دوشنبه 16 خرداد 1390, 18:52 عصر
سلام
گفتم میرم تعطیلات و میام، به جواب میرسم
نگو همه رفته بودن تعطیلات و امروز اومدن
:P

mazoolagh
دوشنبه 16 خرداد 1390, 21:06 عصر
الآن مشکل تون کجاست؟ محاسبه تاریخ؟ یا آلارم؟

wolfstander
سه شنبه 17 خرداد 1390, 07:25 صبح
الآن مشکل تون کجاست؟ محاسبه تاریخ؟ یا آلارم؟

سلام
مشکل اینجاست که نمیتونم تاریخ آلارم رو محاسبه کنم
مثلا وقتی 15 ام هر ماه قراره که چک داده بشه، میخوام از دهم همون ماه آلارم بده
از توابع فارسی آقای آزادی هم دارم استفاده میکنم

dadsara
سه شنبه 17 خرداد 1390, 07:39 صبح
سلام
دوست عزیز :
1- وقتی قراره که برای 15 هر ماه چکی برای فردی صادر کنید و همچنین بایستی 10 همان ماه به شما آلارم بدهد کافی است دو رقم سمت راست تاریخ مورد نظر را با مثلا 10 چک کنید اگر برابر بود به شما پیام مورد نظرتان را اعلام کند
2- برای فردی که قرار است هر سه ماه یکبار چک صادر کنید کافی است دو رقم وسط تاریخ را با تاریخ سیستم خود کنترل کنید اگر آخرین پرداخت(دو رقم وسط تاریخ که معرف ماه است ) +3 رسیده است خوب طبیعی است که زمان صدور چک فرا رسیده است

wolfstander
سه شنبه 17 خرداد 1390, 08:09 صبح
با تشکر از شما دوست عزیز
مساله ای که باقی میمونه، اینه که چطور میشه همه این موارد رو در یک کوئری آپدیت ایجاد کرد
چون یک سری شرط هست که اول باید اجرا بشه برای هر کدوم و بعدش بیاد اختلاف تاریخ رو محاسبه کنه
یعنی اول ببینه امروز چندمه، دورقم رو جدا کنه، اگه ماهانه بود، تاریخ رو کم کنه و ...
اینها رو میشه در یک کوئری ایجاد کرد یا باید چندکوئری جداگانه بذارم؟

dadsara
سه شنبه 17 خرداد 1390, 13:46 عصر
سلام
مهم نیست که با چند دستور می توانید این کار را انجام دهید چون شما با استفاده از توابع Docmd.RunSQL و قرار دادن سلکت مورد نظر در جلوی آن می توانید به هر تعداد و با رعایت تقدم و تاخر این عمل را انجام دهید

mazoolagh
پنج شنبه 19 خرداد 1390, 20:55 عصر
ببخشید یک پرسش دارم:
مگر این توابع امکان محاسبات رو تاریخ رو ندارن؟

wolfstander
پنج شنبه 19 خرداد 1390, 23:44 عصر
ببخشید یک پرسش دارم:
مگر این توابع امکان محاسبات رو تاریخ رو ندارن؟

این امکان رو دارن
ولی من نمیخوام که تاریخ ها رو از اول وارد کنم
چون شماره چک هاشون معلوم نیست
فقط میدونم که دهم هر ماه برای فلان پیمانکار باید چک صورت وضعیت صادر بشه
یه جور آلارم میخوام
یعنی برنامه آلارم بده که آقا جون این طرف 15 ماهه، شما از دهم یادت باشه
این یکی هر هفته است
شما از سه روز قبل یادت باشه
مشکل اینه که توابع تاریخی، تاریخ رو باید بهش بدی و نمیتونی به صورت آلارم ازشون استفاده کنی
مشکل من اینه
که تو یه تاپیک دیگه هم برای نامه هام به این مشکل برخورد کردم

RESMAILY
جمعه 20 خرداد 1390, 11:05 صبح
به نام خدا
با سلام. من به طرز مشابهي در يك برنامه حسابداري با اين موضوع برخورد داشتم. يك جدول براي چك هاي سررسيد نشده درست كردم. (مشابه جدول اصلي) يك query كه به تاريخ 5 روز قبل از سررسيد شدن چك ها شرطي شده بود در موقع استارت برنامه عمل مي كند و در صورت نياز اخطار مي دهد. يكي دو تا ريزه كاري لازم دارد. مثل تيك خورد هشدار و غيره كه فرت و فرت اخطار ندهد و غيره. البته در برنامه من query ديگري هم در سررسيد چك ها را به جدول اصلي منتقل مي كند.
شايد اين راه حل به كارتان بيايد.

wolfstander
جمعه 20 خرداد 1390, 11:43 صبح
سلام
مساله من هم عین مساله شماست
فقط برای من بعضی از چکها رو باید 3 روز قبل آلارم بده، بعضیا رو 7 روز قبل و بعضی دیگه رو 30 روز قبل که رقمش بالاتره
اینها هم هرکدوم در یک فیلد گفته میشه که چطور بایدآلارم بده
اگه یه مقداری بیشتر در باره تکنیکت توضیح بدی، ممنون میشم

Zero Defect
جمعه 20 خرداد 1390, 12:36 عصر
ضمن سلام
دوست من , یکی از اصولی که در هنگام طراحی باید رعایت بشه , استفاده از ساده ترین راهها تا حد ممکن هستش
همیشه پیچیدگی در طراحی دلیلی بر کارآمدی نیست
موضوع مورد نظر شما در همین دسته از مسائل قرار میگیره , که متاسفانه با پیچیده تداعی کردن اون , کار رو بر خودتون سخت کردید
صورت مساله رو ساده سازی کنید , به همون حد از پیچیدگی که نیاز هست و باید باشه
موضوع مورد درخواست شما امکان پذیرهستش ولی در هنگام طراحی به یک نکته اساسی باید توجه داشته باشید :
وقتی قانونی رو وضع میکنید و در داخل برنامه اون رو اجرا میکنید , تخلف از قوانین از سوی برنامه رخ نخواهد داد , توضیح بیشتری میدم و البته در قالب سئوال :
آیا ممکن نیست به دلیل مشکلات مالی و یا تغییر رویه های مالی شرکت ثوابتی که شما عنوان فرمودید همه تغییر کنند مثلا امروز که موعد پرداخت چکهای یک پیمانکار 1 ماهه هستش فردا روز به 45 روزه تغییر پیدا کنه
امروز قانون وضع میکنید که 7 روز قبل آلارم صادر بشه و فردا همین قانون رو مورد بازبینی قرار میدید که 20 روز قبل آلارم صادر کنه
وانگهی مطمئنا زمان آلارمی که برای یک چک 200 میلیون تومانی صادر میشه با یک چک 200 هزار تومانی متفاوته حتی اگر برای یک پیمانکار بوده باشه چرا که در این دو مشکلات تامین منابع در یک سطح نیست
بر همین اساس توصیه میکنم بخش آلارم دهی رو قانونمند نکنید و اون رو در چهارچوب قوانینی که مسلما متغییر هستند قرار ندید که در اون صورت به قطع درآینده به ناکارآمدی اون پی خواهید برد
نیم نگاهی به نرم افزار Outlook موجود به همراه مجموعه آفیس بندازید , در بخش Tasks اون شما میتونید معادلها رو ملاحظه کنید
فرض کنید Due Date همون تاریخ چک شما هستش و Reminder Date همون تاریخ آلارمی که مد نظر شماست
شما وقتی که تاریخ یادآوری رو در داخل برنامه درج کنید علاوه بر خلاصه سازی در طراحی به صورت کارآمدتری میتونید رویه کاری رو تحت کنترل داشته باشید در واقع پرس و جو رو بر مبنای فید Reminder Date تنظیم میکیند به طوری که در داخل شرط اون درج میکنید که این تاریخ کوچکتر یا مساوی باشد با تاریخ روز سیستم

70975

RESMAILY
جمعه 20 خرداد 1390, 18:40 عصر
به نام خدا
با سلام. با تشكر از نبيل، درواقع حق با ايشان است. بالاخره بايد يك جايي سفارش دهنده تكليف خودش را روشن نمايد. مي شود query را منحصرا روي شرط خاصي(مثلا 10 روز) محدود نمود مي شود شرطي گذاشت كه اگر اخطاررا نديدند آن را تكرار كرد وگرنه ، نه!
به نظرم خودتان بهتر متوجه قضيه هستيد.

wolfstander
شنبه 21 خرداد 1390, 07:15 صبح
سلام
دقیقا ً حق با دو دوست خوبم Zero Defect و RESMAILY است
مشکل اینجاست که این مساله ای هستش که تو شرکت از من خواستن
و خیلی هم روش تاکید دارن
و این مساله توی یک برنامه دیگه -نامه های اداری- هم تکرار شده
یعنی اگه فقط همین مورد بود، میشد یک کاری کرد
ولی اینکه تو یک برنامه دیگه هم برای یک سری آدم، در تاریخ های مشخصی در ماه، نامه ارسال بشه، نیازی هست که قابل به تبدیل به تاریخ های مشخص نیست
برای همین گیر افتادم که چطور باید این قضیه رو حل کنم
باز هم تشکر میکنم از شما

انگوران
شنبه 21 خرداد 1390, 11:55 صبح
با سلام، البته اين بخشش رو با توجه به مشكل دوستمون آقا بهرنگ با نظر آقا نبيل عزيز صددرصد موافق نيستم و پيشنهادم اينه كه بجاي اينكه جلوي هر ركورد تاريخ يادآوري رو ثبت كنيم يه فيلد داشته باشيم كه تعداد روزهاي مورد نياز رو جهت يادآوري نگهداري كنه و هر وقت خواستيم تغييرش بديم.
قبلاً يه نمونه ساده براي كار خودم طراحي كرده بودم كه هر چند كامل نيست ولي شايد بتونه كمك كنه.

Zero Defect
شنبه 21 خرداد 1390, 22:42 عصر
سلام

دوست من , جناب آقای انگوران , اختلاف سلیقه ای که بوجود اومده ناشی از دو نگاه متفاوت به حل یک مساله هستش و بس و در جای خودش وجود اختلاف سلیقه میتونه مفید هم بوده باشه

موردی که دوستمون به دنبال اون هستند متغیر بودن زمان آلارم دهی با توجه به پیمانکار هستش

یک نمونه ساده آماده میشه تا کلیت موضوع رو پوشش بده

تاریخها لاتین درج شدند , نمونه رو متناسب با مبدل شمسی خودتون تغییر بدید

در جدول tblPeymankaren نام پیمانکار و دوره آلارم دهی هر پیمانکار رو تعیین کنید

و در داخل جدول tblCheckha هم اقدام به درج چکها و تاریخ سر رسید اونها کنید

با اجرای پرس و جوی qryResult نتیجه مد نظز به دست خواهد اومد

این روش قابل بسط تا سطوح پیچیده تر هم هستش

ولی دوست من Wolfstander : از این روشهای وابسته به متغیر استفاده نکنید و همچنان پیشنهادم بر روی رویه پیشنهادی اولیه هستش , این مثال رو هم براتون درج کردم تنها به این دلیل که گمان نکنید که مشکلی در حل مساله شما وجود داره و به اون دلیل صورت مساله تغییر داده میشه , بلکه نحوه نگاه شما ( همکارانتون ) به صورت مساله درست نیست و به مرور با مشکلات اون آشنا خواهید شد

صلاح کار خویش خسروان دانند

موفق باشید

wolfstander
یک شنبه 22 خرداد 1390, 08:06 صبح
سلام
با تشکر از دوست خوبم Zero Defect
هم حرف شما درسته و هم حرف آقای انگوران و متشکرم از وقتی که شما دوستان برای پاسخ دادن به این پرسش گذاشتید
جواب مساله من، همینی بود که شما ارسال کردید
حالا در باب تحلیل مساله شما
شاید چون من درست توضیح ندادم، شما رو گمراه کردم
ما سه نوع پیمانکار داریم
نوع الف - فوری : مثل پیمانکار آشپزخانه که آخر هفته چکش رو بهش میدید
نوع ب- متوسط: مثل پیمانکار ساختمانی : که آخر ماه چکش رو میدیم
نوع ج: پیمانکار بزرگ مثل پیمانکار پروژه که هر شش ماه یک بار چکش رو میدیم
حالا من تو جدولم، موقع تعریف هر پیمانکار، میام و میگم که نوع پیمانکار چیه
در نتیجه، بچه های مالی با استفاده از گزارشی که میگیرن، نسبت به تهیه نقدینگی اقدام میکنند
چون اینها روتین و تعریف شده است و ما باید در زمان خودش، پول رو پرداخت کنیم
حالا شما درست میگید که بهتره که بسته نباشه
این سیستم هم بسته نیست
این سیستم گزارش میده تا تامین موجودی بشه
سیستم خزانه داری، قسمت کنترل و صدور چک رو انجام میده
ما برای منابع و مصارف این سیستم رو استفاده میکنیم تا راحت تر گزارش بدیم
برای همینه که باید این طوری عمل کنیم
البته تو برنامه شما هم باز به بخشی دچار ایراد میشه
برای پیمانکارها ما تاریخ خاص نداریم
بیستم هر ماه
تا زمان اتمام قرارداد
مشکل اصلی من پیدا کردن اون تاریخ بود
که با استفاده از یک فقره کد تونستم تا حدی مشکل رو تحت کنترل خودم دربیارم
به نتیجه که رسیدم، اینجا میذارم که اگه کس دیگه ای هم خواست بتونه مشکلش رو حل کنه
راه حلش درپیته ها
فکر نکنید خیلی توپه
نه
درپیت درپیته

انگوران
یک شنبه 22 خرداد 1390, 09:49 صبح
ضمن عرض سلام و سپاس خدمت استاد و دوست عزيزم آقاي پيروز مهر، فكر مي كنم نظر من هم چيزي غير از نظر شما نبوده و براي اينكه نشون بدم روش من وابسته به متغيير نيست از تكست باكسي كه مقدار رو نگهداري مي كنه در روي فرم استفاده كردم و منظورم از اينكه گفتم برنامه كامل نيست اين بود كه مي تونسته فرمي كه جهت گزارش گيري استفاده ميشه شامل باكسهايي باشه كه نوع پيمانكاران و مدت زمان آلارم رو نشون بده و خروجي به تفكيك نوع پيمانكاران قابل استخراج باشه. البته اگه من بودم به جاي استفاده از جداول جديد از اطلاعات جدول اصلي استفاده مي كردم.

rashidianc
دوشنبه 07 شهریور 1390, 09:25 صبح
با سلام دوست عزیز
میشه یه خاهشی ازتون بکنم و این برنامه آلارم چکها را برامون بزارید رو صفحه؟ خیلی بهش نیاز دارم ممنون میشم .

wolfstander
دوشنبه 07 شهریور 1390, 11:01 صبح
سلام
شما مشکلت اینه که میخوای چکهایی که ثبت شده رو آلارم بده، یا نه؟
پیش بینی تاریخ چکها رو میخوای؟
یعنی دقیقا ً مشکلی که توسایت مطرح کردم رو میخوای یا نه
شما چک ثبت شده تو جدول داری و فقط میخوای عین یه برنامه صدور چک و خزانه، بهت آلارم بده