|
آیا این مسئله نگهداری و تعمیرات با vba قابل حل هست؟
|
|
۲۵-۵-۱۳۸۹, ۰۸:۵۹ عصر
(آخرین تغییر در این ارسال: ۳۱-۵-۱۳۸۹ ۰۷:۲۷ عصر توسط esyoo.)
ارسال: #1
|
|||
|
|||
|
آیا این مسئله نگهداری و تعمیرات با vba قابل حل هست؟
با سلام
من در حال نوشتن برنامه نگهداری وتعمیرات هستم.(هنوز در فاز های اولیه هستم) در این برنامه اگر یک ماشین ---اب بشه برای تعمیر اون اقدام میکنند و یک سری قطعات رو تعویض یا تعمیر میکنند. من با صحبت هایی که کردم نهایتا برای یک ماشین تا 10 قطعه رو تعویض میکنند با توجه به عکس برای ماشین 1000 در تاریخ 88/01/01 نیز 10 نوع قطعه مصرف شده که مقدار مصرف اون جلوش هست می بینید. و این روند تا 31 هر ماه ادامه دارد. حالا می خو اهیم آ--- ماه یک گزارش بگیرم و ببینیم که ماشین 1000 در کل ماه چه قطعاتی و به چه مقداری مصرف کرده است؟ ممنون میشم راهنمایی کنید. ![]() آیا اشکال من در ایجاد دیتا بیس بوده و باید به گونه ای دیگر طراحی شود؟ ممنون نمونه فایل: http://www.4shared.com/file/qjyV4vYy/net.html در پست 16 همین تاپیک به خواسته ام رسیدم. |
|||
|
|
۲۵-۵-۱۳۸۹, ۰۹:۱۳ عصر
ارسال: #2
|
|||
|
|||
|
RE: آیا این مسئله نگهداری با vba قابل حل هست؟
طراحی دیتابیس مقوله ایست که باید در آن دقت زیادی شود!
کلا اگر این برنامه رو با Access بنویسید خیلی بهتر و کارامد تر خواهد بود. اکسس یک برنامه مدیریت بانک اطلاعاتی است که به صورت تخصصی برای تهیه نرم افزار های سیستمی مورد استفاده قرار میگیرد که در درس MIS رشته صنایع تدریس می شود. اکسل نرم افزار تخصصی برای ایجاد این برنامه نیست! ولی اگر می خواهید با اکسل این برنامه را بنویسید. این روند را انجام دهید: شکستن جداول: این جدولی که دارید را به حداقل سه جدول بشکنید به صورت زیر: 1- جدول لیست دستگاه ها 2- جدول لیست قطعات 3- جدول لیست قطعات مصرفی در دستگاه ها هر جدول در یک شیت |
|||
|
|
۲۶-۵-۱۳۸۹, ۰۷:۲۸ صبح
(آخرین تغییر در این ارسال: ۲۶-۵-۱۳۸۹ ۰۷:۴۳ صبح توسط shamsololama.)
ارسال: #3
|
|||
|
|||
RE: آیا این مسئله نگهداری با vba قابل حل هست؟
(۲۵-۵-۱۳۸۹ ۰۹:۱۳ عصر)m_d6712 نوشته است: طراحی دیتابیس مقوله ایست که باید در آن دقت زیادی شود! با درود فراوان دوست خوبم m-d6712 در مورد جواب بالا دقت فرمائید این سایت و این قسمت برای هم فکری و جواب به سئوالات هست نه مقایسه نرم افزارها با هم و دوستانی که در مورد اکسل سئوال دارند حتما مایلند این سئوالشان در مورد اکسل حل شود وگرنه ممکن است با کلی نرم افزار های دیگه هم آشنایی داشته باشند و اگر زحمت جواب دوستان متحمل می شوید جواب را کامل بنویسید و یا دقیق تر راهنمائی فرمائید که مورد استفاده دوستان قرار بگیرد --------------------------------------------------------------------------------------------------- بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم (دکتر شریعتی) shamsololama@yahoo.com 09177733411 |
|||
|
|
۲۶-۵-۱۳۸۹, ۱۰:۱۵ صبح
(آخرین تغییر در این ارسال: ۱۱-۳-۱۳۹۰ ۰۹:۲۷ صبح توسط shamsololama.)
ارسال: #4
|
|||
|
|||
|
RE: آیا این مسئله نگهداری با vba قابل حل هست؟
با درود فراوان
این فرمی بود که قبلا آماده کرده بود م قسمتی از آن را تغییر دادم که کار شما رو انجام میده و در کلید جستجو 2 قرار داده ام در بقیه کلید ها جستجو را با تعداد شرطهای متفاوت انجام میدهد که به عنوان نمونه گذاشتم تا کدها رو ببینی و خواستی استفاده کنی فایل رو برات میل کردم عکس از برنامه: --------------------------------------------------------------------------------------------------- بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم (دکتر شریعتی) shamsololama@yahoo.com 09177733411 |
|||
|
|
۲۷-۵-۱۳۸۹, ۰۱:۱۶ صبح
(آخرین تغییر در این ارسال: ۲۷-۵-۱۳۸۹ ۰۴:۱۸ صبح توسط m_d6712.)
ارسال: #5
|
|||
|
|||
|
RE: آیا این مسئله نگهداری با vba قابل حل هست؟
با تشکر از دوست عزیز جناب آقای شمس العلماء
توانایی اکسل بسیار بالاست و خیلی از کارها رو می تونه انجام بده! در این هیچ شکی نیست! اما وظیفه خودم دونستم که راه های بهتر رو هم برای دوستان مشخص کنم! همچنان معتقدم اکسس برای این کار بهتره! و انجام صحیح این پروژه با اکسل بسیار دشوار تر است! با این وجود به توصیه شما گوش کردم و یک نمونه از این پروژه که با اکسل ایجاد شده برایتان میگذارم! اصل فایل اکسل کامل: http://www.mediafire.com/file/xqgcmvn28e...ir-Cm.xlsm برای مقایسه: اگر قرار بود این فایل رو با اکسس درست کنم ده برابر در زمان صرفه جویی می شد. و همچنین نیاز به هیچ کد نویسی نبود زیرا ویزارد های اکسس بسیار راحت هستند. توضیحات: ابتدا پیکربندی به صورت زیر است: ![]() به ترتیب جداول به صورت زیر می باشد. 1- جدول قطعات: ![]() 2- جدول ماشین ها: ![]() 3- جدول تعمیرات: ![]() 4- جدول قطعات استفاده شده در تعمیرات: ![]() به این صورت اطلاعات ما در این جداول شکسته می وشد که بسیار کارامد تر از حالت پیوسته است. (بنا به ساختار های رابطه ای بانک های اطلاعاتی) می توان با کد نویسی بسیار مختصر و استفاده از فرمان های SQL تمامی گزارش های مورد نیاز را درخواست داد. در روش استفاده از فرمان های SQL ابتدا بایستی به فایل اکسل خودمان به عنوان بانک اطلاعاتی وصل شد. سپس درخواست SQL را برای این بانک ارسال کرد. و سپس نتیجه را چاپ کرد. کد زیر برای وصل شدن به فایل اکسل کنونی است. (activeWorkBOOK) البته قبل از نوشتن این کد برای فعال سازی ADODB که کلاس خاصی برای وصل شدن به بانک های اطلاعاتی می باشد باید آن را به فایل خود Add کنید. برای این کار به روی Tools و در آن References را انتخاب کنید. در لیست کتابخانه Mirosoft ActiveX Data Objects 2.8 Library را انتخاب کرده و تیک آن را بزنید. و Ok را بفشارید. ![]() کد: Dim cn As ADODB.Connectionدر کد بالا cn شی مورد نظر ماست که ایجاد کردیم. در انتها connectionstring برای وصل شدن به فایل اکسل کنونی را وارد کردیم! دقت فرمایید که از دو مشخصه ThisWorkbook.Path و ThisWorkbook.Name برای ایجاد آدرس فایل کنونی استفاده شده است. برای درخواست دادن و انتخاب باید از فرمان SQL استفاده کرد که به زودی در بخش بانک های اطلاعاتی به طور کامل توضیح خواهم داد. به عنوان مثال برای درخواست و چاپ تمامی ---ابی ها در ماه 05 می توان از فرمان زیر استفاده کرد. کد: strQuery = "Select * From [Sheet1$L:N] where CMDate Like '89/05/%'"در کد بالا StrQuery متن درخواست است. ترجمه متن درخواست به این صورت است: "همه (*) اطلاعات از جدول [Sheet1$L:N] (که همان ستون های L,M,N از شیت 1است) را انتخاب کن(Select) به شرطی که (where) تاریخ آنها مشابه '05/89' باشد. " یا اگر بخواهیم بدانیم هر کدام از ماشین ها چه روز هایی ---اب شده اند: کد: Dim StrMachineName As Stringهمچنین به عنوان مثال می خواهیم بدانیم از هر کدام از قطعات چقدر مصرف شده است. از این کد استفاده می کنیم: کد: strQuery = "Select First([Sheet1$G:H].PartName),Sum([Sheet1$P:R].ComsumeNum) From [Sheet1$P:R],[Sheet1$L:N],[Sheet1$G:H] where [Sheet1$P:R].CMCode=[Sheet1$L:N].CMCode And [Sheet1$P:R].CMPart=[Sheet1$G:H].PartCode Group By [Sheet1$G:H].PartCode"گزارش دیگری که می توان ایجاد کرد گزارش قطعات مصرفی یک ماشین است: کد: strQuery = "Select First(PartName), Sum(ComsumeNum) From [Sheet1$P:R],[Sheet1$L:N],[Sheet1$G:H],[Sheet1$A:B] where [Sheet1$A:B].MachineCode=[Sheet1$L:N].MachineCode And [Sheet1$P:R].CMCode=[Sheet1$L:N].CMCode And [Sheet1$P:R].CMPart=[Sheet1$G:H].PartCode and [Sheet1$A:B].MachineName = '" + machine + "' Group BY PartName"و هر گزارش دیگری که دوست داشته باشید را می توانید با 4 خط برنامه ایجاد کنید. جستجو، مرتب سازی و ... از مزیت های این روش است. |
|||
|
|
۲۷-۵-۱۳۸۹, ۱۱:۳۷ صبح
ارسال: #6
|
|||
|
|||
|
RE: آیا این مسئله نگهداری با vba قابل حل هست؟
با سلام
من یه راهی به نظرم رسید برای تشکیل دیتابیس اینطوری 2 محدودیت از بین میره: 1)تعداد قطعه تعویضی در هر روز(چون ممکنه بنا به دلایلی از 10 بیشتر بشه) 2)ممکنه در هر روز بیشتر از یک ماشین نیاز به تعمیر داشته باشه در ضمن، برای درج تاریخ از فرمت 00"/"00"/"00 استفاده کنید که مشکلی پیش نیاید. در اینصورت می توانید در یک بازه مشخص همه اطلاعات خواسته شده را بدست بیاورید. با استفاده از فرمول vlookup و برای تعداد از sumif و در نهایت برای یافتن انواع قطعات استفادده شده از autofilter و unic code استفاده کنید اینا به ذهنم رسید.حالا در اجرا اگر مشکلی داشتی در خدمتم امیدوارم بتونم کمک کنم (در شیت 2 فایل خودتون نمونه دیتابیس رو گذاشتم) همیشه شاد باشید
|
|||
|
|
۲۷-۵-۱۳۸۹, ۰۱:۳۹ عصر
ارسال: #7
|
|||
|
|||
|
RE: آیا این مسئله نگهداری با vba قابل حل هست؟
دوست عزیز khakzad
من تقریبا همین روشی که شما گفتید رو دارم اجرا میکنم ولی به سبکی دیگر. |
|||
|
|
۲۷-۵-۱۳۸۹, ۰۱:۴۵ عصر
(آخرین تغییر در این ارسال: ۲۷-۵-۱۳۸۹ ۰۲:۳۷ عصر توسط khakzad.)
ارسال: #8
|
|||
|
|||
|
RE: آیا این مسئله نگهداری با vba قابل حل هست؟
پس مشکل کجا بود؟
به نکته ای برخورد کردید لطفا به من هم بگید.ممنون همیشه شاد باشید
|
|||
|
|
۲۷-۵-۱۳۸۹, ۰۲:۵۴ عصر
ارسال: #9
|
|||
|
|||
|
RE: آیا این مسئله نگهداری با vba قابل حل هست؟
با درود فراوان
فایلی که براتون میل کردم رو نگاه کردین؟ من فکر کردم مشکل حل شده چون با روش میشه تمام اطلاعات خواسته شده رو یک جا جستجو کرد حتی با چند شرط (مثلا ماشینهای کد 1000 که بین تاریخ مشخصی تعمیر شده و همچنین قطعه کد 3 تعویض شده برابر با 5 قطعه باشد) و حتی اگر تعداد قطعه تعویضی آن از 10 بیشتر باشه نیز مشکلی ایجاد نمی کند فایلی که فرستادم جستجو را شکل بالا که گفتم انجام میدهد که قسمتی از آن را به عنوان نمونع برای شما تغییر داده بودم و اگر برای قرار دادن روی فایل خود مشکلی داری تا نمونه کامل آن را آماده کنم برایتان میل کنم و اگر حس می کنی جوابگوی خواسته شما نیست بگویید تا روشی دیگر را برایتان بگویم. --------------------------------------------------------------------------------------------------- بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم (دکتر شریعتی) shamsololama@yahoo.com 09177733411 |
|||
|
|
۲۷-۵-۱۳۸۹, ۰۳:۱۶ عصر
ارسال: #10
|
|||
|
|||
|
RE: آیا این مسئله نگهداری با vba قابل حل هست؟
سلام
این فایل رو مبتونم ببینم؟منم داشته باشم؟ همیشه شاد باشید
|
|||
|
|
|



![[تصویر: yqxjaky6oewl6y1h0cn8.jpg]](http://aks98.com/images/yqxjaky6oewl6y1h0cn8.jpg)



![[تصویر: snrjkmy0ygk3oc3hrs.jpg]](http://aks98.com/images/snrjkmy0ygk3oc3hrs.jpg)
![[تصویر: e7en7ggujfq6urezyd8a.png]](http://aks98.com/images/e7en7ggujfq6urezyd8a.png)
![[تصویر: 2zstfrtt802d6vemygqy.jpg]](http://aks98.com/images/2zstfrtt802d6vemygqy.jpg)
![[تصویر: uodr5eoklevs0ryxqngb.jpg]](http://aks98.com/images/uodr5eoklevs0ryxqngb.jpg)
![[تصویر: 30j5xj01209tyt61rj55.jpg]](http://aks98.com/images/30j5xj01209tyt61rj55.jpg)
![[تصویر: irs76kw3i0rmxcn2ioxc.jpg]](http://aks98.com/images/irs76kw3i0rmxcn2ioxc.jpg)