# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > C#‎‎ > آموزش: دانلود پروژه انبارداری با مختصری توضیحات ...

## ghasem110deh

*بنام خدا*سلام به همه ...
در خدمت دوستان (تازه کار و مبتدی - مثل خودم) هستیم با یه *پروژه انبارداری* ساده جهت آموزش و تمرین !
یه توضیح کوچیک کنار کدهای اصلی هست ...

*نسخه کامل + قابلیت ایجاد دیتابیس از روی اسکریپت!*

-------------------------------------------------
اول از اساتیدی چون : آقای آشتیانی ، صباصبوحی ، khokhan , Plus و ... کمال تشکر رو دارم ؛ (چون سوالای زیادی ازشون پرسیدم و جواب دادن)
صد البته دیگر دوستان ...
امیدورام لطفشون شامل حال ما بشه و ایرادات پروژه رو بگن ! ***
-----------------------------------------------------------------------------------------------------------------
مشخصات پروژه :
1- زبان : C Sharp
2- بانک اطلاعاتی : SQL Server 2008 (داخل برنامه ساخته میشه)
3- تکنولوژی بکار رفته : ADO.net
4- ابزار گزارش : Stimul Soft
---------------------------
پروژه دارای 37 فرم (جای افزایش داره) و 3 صفحه گزارش هست !
دیتابیس هم شامل 22 جدول (2 تاش استفاده نشده) ، 6 ویو و 7 پروسیجر هست !
----------------------------------------------------------------------------------------
امکانات پروژه :
1- تعریف : انبار ، کالا ، واحد سنجش ، نحوه پرداخت پول
2- تعریف حساب بانکی ، صندوق (موجودی نقدی) با قابلیت ثبت تراکنش
3- ثبت ماشین آلات و تجهیزات  ، تعداد و ارزش کل
4- تعریف تنخواه و هزینه ها
5- تعریف دسته چک برای حسابهای تعریف شده
6- ثبت فاکتور خرید + افزایش موجودی کالا
7- ثبت مشتری
8- ثبت فاکتور خرید + کاهش موجودی کالا
9- ثبت برگشتی از خرید و فروش
10- گزارش بد/بس خرید و فروش (مانده فاکتورهای خرید و فروش)
11- فهرست موجودی انبار ، کالا و اموال بصورت درختی (TreeView)
12- فهرست کالا با جزئیات در لیست باکس (دو حالت نمایش)
13- فرم های نمایش اطلاعات بصورت ترکیب جدولهای اصلی ، از جمله : تعداد فروش هر کالا ، 5 فاکتور با مبلغ بالا ، تعداد و کالاهای خریده شده هر مشتری و ...
14- فرم جستجو از پروسیجر استفاده شده (جستجوی پیشرفته با چند پارامتر) ... که اولین تجربه حقیر بوده ! ***
15- استفاده از نمودار در گزارش استیمول ... اینم اولین تجربه بنده بوده !
و ...
-------------------------------------------------------------------------------------------------------------------
تصاویری از پروژه :
فرم اصلی
گزارش موجودی انبار
گزارش کارتکس کالا ... (کامل)
فاکتور فروش
فرم جستجو
موجودی حسابهای بانکی
فهرست کالا
چرتکه و آمار دخل و خرج
مانده فاکتور خرید/فروش
فرم ثبت ماشین آلات و امول (خواندن از اکسل و درج در بانک از دیتاگریدویو فقط تو این فرم هستش)
ثبت بیجک
ایجاد دسته چک و ثبت چک
فرم بکاپ گیری
----------------
نکته : در پروژه از تقویم فارسی که کار دوست عزیزمون "plus" هستش استفاده شده !
---------------------------------------------------------------------------
زیاد توضیح خودمون رو ندیم و حصله شماهم سر نبریم :)

*دانلود سورس پروژه*

نکته : معمولا از کامپوننت استفاده نمی کنم ولی اینبار متاسفانه (ناخواسته) از باتون های استیمول استفاده کردم ... پس باید حتما استیمول سافت رو داشته باشید ! (ببخشید)
- دیتابیس هم توی پوشه دیباگ هستش (پس نداره)
-------------------------------------------------------
از اساتید گرامی عذر میخوام ... حمل بر بی ادبی و جسارت نباشه !
دوستانی که استفاده کردند و راضی بودن (یه چیزی یاد گرفتن) یه صلوات واسه همه گرفتارها و اونایی که بیماری دارن بفرستن ، اگه حال داشتن واسه ما هم بفرستن  :)
.
.
.
از اساتید گرامی درخواست میشه تمام ضعف های برنامه رو گوش زد کنن ! (البته سر و تهش ضعفه) ***
در آخر ببخشید اگه پروژه حقیر چنگی به دل نزد ... در سطح خودمه ! نه شما عزیزان :)
با تشکر 
--------

*این دقیقا همون چیزیه که فروختم ! اگه شما هم فروختین ... نوش جونتون*  :چشمک: 

*یا علی !*

----------


## ghasem110deh

راستی دوستان در جدای ایرادات کد نویسی !
در مورد ظاهر برنامه هم نظر بدین ! (البته زیاد روش کار نکردم) ... ولی خودم باش حال نکردم ، شما رو نمی دونم :)

----------


## Mofid.m

پروژه خوبی نوشتی
البته هنوز که دانلود نکردم ولی عکس هاشو دیدم.
ظاهرش خوبه.
دانلود کردم نظرمو بازم میگم
اما ظاهرا برای دانلود پسورد میخواد.
اگر برای دیتابیسش مدل ER داری اونم بزار.

----------


## Mofid.m

دانلود نمیشه عزیز
میگه پسورد بهم بده!!!؟

----------


## strongxxx

پسوردشو که گفتن : "rahgoshafanپروژه" :لبخند:

----------


## Mofid.m

ندیدم پسوردو
این پروژه رو جایی نصب کردی؟؟
منظورم برای مشتریه؟

----------


## ghasem110deh

سلام
نه !
تمرین واسه خودم بوده :)

----------


## Mofid.m

پروژه خوبی نوشتی
یه نکاتی توش هست که رعایت کنی بهتر میشه

----------


## ghasem110deh

خوشحال میشم ...
لطفا تمام ایراداشو بگین (البته هنوز دارم روش کارمی کنم)

----------


## Mofid.m

به جای نوشتن دستورات SQL بهتره از SP استفاده کنین.
برای تهیه و بازیابی نسخه پشتیبان از BackgroundWorker یا Asynchronous Delegate ها استفاده کنین.
تمام احتمالات ممکن برای باگ دادن نرم افزار رو توی برگه ایی بنویس و همه اونها رو بر طرف کن.
بهتره وقتی از یه TextBox داری برای دریافت عدد استفاده میکنی، با کد نویسی کاری کنی که فقط عدد بگیره.

----------


## Mofid.m

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

----------


## ghasem110deh

> به جای نوشتن دستورات SQL بهتره از SP استفاده کنین.
> برای تهیه و بازیابی نسخه پشتیبان از BackgroundWorker یا Asynchronous Delegate ها استفاده کنین.
> تمام احتمالات ممکن برای باگ دادن نرم افزار رو توی برگه ایی بنویس و همه اونها رو بر طرف کن.
> بهتره وقتی از یه TextBox داری برای دریافت عدد استفاده میکنی، با کد نویسی کاری کنی که فقط عدد بگیره.


1- تصمیم خودم هم همینه :)
2- خواستم از بک گراندورکر استفاده کنم (حقیقتش) نتونستم
3- چطور بفهم کجای برنامه باگ داره ؟
4- رو چشم




> مواردی از این دست زیاده و سعی کن به عمد کاری کنی که نرم افزارت باگ بده.


یکم بیشتر توضیح بدین !
البته پروژه بعدی رو میخوام با EF کار کنم (اگه خدا بخواد)

----------


## Mofid.m

برنامتونو امتحان کنین.
ببینین کد هاتون به چه شکلیه و به نسبت همون سعی کنین براش مشکل ایجاد کنین.
مثلا:
جایی که باید عدد بدی بیا رشته بده..
عدد اعشاری بده.

----------


## Mofid.m

من یه نمونه کد ساده ریستور با استفاده از بک گراند ورکر نوشتم.
قبلش کاربر باید مسیر فایل پشتیبان رو وارد کنه (مثلا با استفاده از OpenFileDialog) و بعد از بررسی صحت مسیر و فایل باتن ریتور رو بزنه
این کد واسه رویداد کلیک باتن ریستوره


btnRestore.Enabled = false;
            if (!backgroundWorker1.IsBusy)
            {
                backgroundWorker1.RunWorkerAsync();
            }
            else
            {
                PersianMessageBox.Show("عملیات نا موفق.\n\nنرم افزار مشغول عملیات دیگری می باشد.لطفا چند دقیقه بعد امتحان کنید.", "خطا", PersianMessageBox.Buttons.OK, PersianMessageBox.Icon.Error);
                btnRestore.Enabled = true;
                return;
            }


بعدش باید رویداد زیر رو برای بک گراند ورکر فراخونی کنی و کد ها رو بنویسی


//رویداد DoWork  
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            SqlCommand Comm = new SqlCommand("RestoreDB", Conn);
            Comm.CommandType = CommandType.StoredProcedure;
            Comm.Parameters.AddWithValue("@path", txtPath.Text.Trim());
            Conn.Open();
            Comm.ExecuteNonQuery();
            Conn.Close();
        }


        //رویداد RunWorkerCompleted
        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                PersianMessageBox.Show("عملیات بازیابی نسخه پشتیبان با موفقیت انجام شد.\n\nبعد از این پیغام نرم افزار بسته و دوباره اجرا خواهد شد.", "پیام", PersianMessageBox.Buttons.OK, PersianMessageBox.Icon.Information);
                frmMain.Backup = false;
                Application.Restart();
            }
            else
            {
                PersianMessageBox.Show("عملیات نا موفق.\n\nامکان باز گردانی نسخه پشتیبان وجود ندارد، لطفا نرم افزار را پاک کرده و دوباره نصب نمایید.", "خطا", PersianMessageBox.Buttons.OK, PersianMessageBox.Icon.Error);
                btnRestore.Enabled = true;
            }
        }


رویداد DoWork زمانی فراخوانی میشه که شما بیای متد RunWorkerAsync رو صدا بزنی (ما تو رویداد باتن این کارو کردیم)
و رویداد RunWorkerCompleted زمانی اتفاق می افته که کار بک گراند ورکر تمام شده

----------


## NasimBamdad

لینک ها خراب هستند فکر کنم PicoFileمشکل داره

----------


## ghasem110deh

> لینک ها خراب هستند فکر کنم PicoFileمشکل داره


سلام
چک کردم ، مشکلی نیست !

----------


## NasimBamdad

برای من صفحه سفید میاد . میشه یه جا دیگه آپلود کنید ؟

----------


## ghasem110deh

اینو امتحان کنید !
بدون پسورد هستش : http://s6.picofile.com/file/81749311..._pass.rar.html

اگه درست نشد رو فورشیر آپ کنم !

----------


## NasimBamdad

به خدا فقط صفحه سفید میاد . هیچی بالا نمیاد واسم .

----------


## ghossein

سلام
خیلی ممنون ، پروژه خیلی خوبیه!

----------


## NasimBamdad

بی زحمت میشه ایمیل کنید ؟ 
info@sepgostar.ir

 شرمندتم با چیز پی ان هم زدم نیامد بالا

----------


## ghasem110deh

دشمنت شرمنده !
رو ایمیل اتچ نشد ... آپ کردم رو *4shared*

----------


## rahgoshafan

سلام
مرسی بخاطر برنامه ولی لینکها خرابن !

----------


## ghasem110deh

> سلام
> مرسی بخاطر برنامه ولی لینکها خرابن !


سلام ...
لینک   *4shared * سالمه :)

----------


## MMR_1234

امکان داره جای دیگه اونو قرار بدین
دانلود مشکل داره

----------


## Javad_raouf

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

----------


## ghasem110deh

> امکان داره جای دیگه اونو قرار بدین
> دانلود مشکل داره


واس دانلود از فورشیرد باس عضو باشید ...
ولی یجای دیگه آپلود میکنم !




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


 :خجالت:

----------


## ghasem110deh

پست اول ویرایش شد ...
لینک دانلود از پیکوفایل اضافه شد :)

----------


## Javad_raouf

میشه بپرسم چقدر وقت گذاشتید؟

----------


## ghasem110deh

> میشه بپرسم چقدر وقت گذاشتید؟


چرا نشه :)
------------
چون تازه کار بودم ... نزدیک 2 ماه !

----------


## s.hoseinpoor

تبریک میگم خوب کار کردین. ظاهرشم مناسبه. با برنامه ت کار نکردم ولی اگر منتطقش مورد نداشته باشه برنامه ی بسیار خوبیه

----------


## ghasem110deh

> تبریک میگم خوب کار کردین. ظاهرشم مناسبه. با برنامه ت کار نکردم ولی اگر منتطقش مورد نداشته باشه برنامه ی بسیار خوبیه


اولین پروژه بزرگ (در حد خودم رو میگم) بوده ...
منظورتون از منطق چیه ؟ 
بیشتر توضیح بدین :)

----------


## aliramazani

به دیتابیس وصل نمیشه و پیغام میده خطا در خواندن اطلاعات

----------


## ghasem110deh

باید دیتابیس رو بصورت دستی اتچ کنید !
ورژن هم "sql 2008 r2" هست ...

----------


## davidrobert

سلام دوست عزیز *ghasem110deh*
خسته نباشید من برنامه شما رو دیدم ولی با خطا خواندن اطلاعات بر خورد کردم.
یه پیشنهاد دارم برات اول این سورسی کمکی که قرار دادم رو ببین.
https://barnamenevis.org/showthread.p...DA%98%DB%8C-EF
دوم ایرادی در کارت هستش این هستش که شما از رویداد Enter در کادر متن استفاده نکردید که وقتی طرف Enter میزنه بره روی کادر متن بده که مردم با Enter زدن راحت هستن. ئوم ایراد شما این هستش که کد خطا اختصاص ندادید یعنی نیومدید بگید خطدا در خواندن اطلاعات کد 100 و خطا در خواندن اطلاعات کد 101
علت این کد دادن این هستش کهه باعث مدیریت برنامه شما میشه اگه برنامه شما خطا داد میدونید که این خطا به کدم قسمت برنامه مربوط میشه که من در این ضمینه به پیام های مورد نظر رو آماده نوشتم ولی با دستور پیام رو فراخوانی میکنم.که این کد خطا به کدام مروبط هستش. سورس من رو دانلود کن من خیلی کارا کد نویسی رو راحت تر کردم. اسکیول دیتابیست بزار ممکنه یکی دیتابیس 2008 نباشه مثل خود من که از اسکیول سرور 2014 استفاده میکنم.

----------


## ghasem110deh

اینم اسکریپت بانک ...
*دیتابیس اسکریپت*

----------


## davidrobert

مهندس جان ایراد دیگه برنامه این هستش که کد های ارتباط با دیتابیس رو زیاد نوشتی ایرادش در این هستش که اگه نام دیتابیس رو عوض کنی یا ارتباطش رو مسیرش رو عوض کنی زیاد خودت عضت میشه چون بابد تمام فرم های رو باز کنی و ارتباط رو عوض کنی برای ارتباط با دیتابیس یه کلاس ارتباط با دیتابیس بساز و دیتابیس رو به وسیله همون کلاس وصل کن و به وسیله یک کانکشن به دیتابیس وصل میشی و نیاز نیست راه به راه ارتباط با دیتابیس بسازی.این ایمیل من هستش sdvp_1991@yahoo.com

----------


## ghasem110deh

البته مهندس رو لطف دارین ؛ ولی ما دانشجوی ستاره دار هم نیستیم :)
----------------------------------------------------------------------------
دقیقا همینطوره :)
الان دیگه با معماری سه لایه ، یکی دوبار بیشتر ارتباط نمیزنم !
نظرت در رابطه با طراحی فرم چیه :
https://barnamenevis.org/showthread.p...A7%D9%85%D9%87
یکی دو جا خوندم ... باس سعی بشه تعداد فرم ها رو بحداقل رسوند ! (تجمیع فرم)

----------


## salmah

ممنون که پروژه اتون به اشتراک گذاشتید

----------


## ebrahim.rayatparvar

سلام مهندس جان
پروژه خوبی نوشتی برای اولین بار که میگی البته بزرگ رو می گم :لبخند گشاده!:  ولی چرا از کلاس ها استفاده نکردی؟؟؟

----------


## ghasem110deh

> سلام مهندس جان
> پروژه خوبی نوشتی برای اولین بار که میگی البته بزرگ رو می گم ولی چرا از کلاس ها استفاده نکردی؟؟؟


ممنون
عوارض ناشی بودن ... دیگه اینجوری کد نمیزنم :)
سه لایه با پروسیجر ؛ البته EF هم با کمک یکی از دوستان دارم کار میکنم !

----------


## ebrahim.rayatparvar

سعی کن بیشتر با پروسیجر کار کنی یا راحتر بگم لایه هات کل برنامه ات رو بزار فقط برای گرفتن داده و نمایش و هیچ عملی که باید از دیتابیس خونده بشه و کاری انجام بده بزار پروسیجر انجام بده تو فقط جواب رو بگیر و نمایش بده. یه خوبی بزرگی که داره برای آپدیتش هست که به راحتی میتونی فرمولی یا گزارشی رو از لحاظ محاسبه ویرایش کنی و آپدیتش کنی و نیازی به تغییر exe برنامه دیگه نیست فقط سرور ما آپدیت میشه.

----------


## ghasem110deh

> سعی کن بیشتر با پروسیجر کار کنی یا راحتر بگم لایه هات کل برنامه ات رو بزار فقط برای گرفتن داده و نمایش و هیچ عملی که باید از دیتابیس خونده بشه و کاری انجام بده بزار پروسیجر انجام بده تو فقط جواب رو بگیر و نمایش بده. یه خوبی بزرگی که داره برای آپدیتش هست که به راحتی میتونی فرمولی یا گزارشی رو از لحاظ محاسبه ویرایش کنی و آپدیتش کنی و نیازی به تغییر exe برنامه دیگه نیست فقط سرور ما آپدیت میشه.


پروسیجر چیز خوبیه ... چند جا خوندم امنیت هم خوبه (اگه قفل باشه راحت نمیشه قفل شو شکست)
ولی تو یه پروژه معمولی (واسه خودم) 85 تا پروسیجر زدم ، کف کردم  :کف کرده!:

----------


## ebrahim.rayatparvar

من خودم sql کار نمی کنم ولی دوستان که کار میکنیم بیشتر کارا دسته اوناست طرف VS ما فقط طراحی می کنیم که البته کارش خیلی سخته این نیست که یه فرم طراحی کنی و تمام کلی کار داره ولی سمت sql تکنلوژی های زیادی هست که به مرور زمان میشه پیادش کنی بخصوص برای کارهای تحت شبکه که میشه یکی از کارای بزرگش ServiceBrocker رو گفت که پیاده سازیش وحشتناکه ولی وقتی پیاده میشه تازه آدم لذت میبره.

----------


## sg.programmer

سلام
قسمت *پنجره فعال* را چطور میشه ایجاد کرد؟
داخل کد چیزی نوشته نبود.

----------


## ghasem110deh

سلام
روی خود منواستریپ کلیک کنید ...
تو پروپرتیس گزینه : MdiWindowList وجود داره که میتونی تعیین کنید فهرست پنجره های باز رو توی کدوم زیرمنو قرار بده !
.
.
.
البته خودم دیگه از فرم های Mdi استفاده نمیکنم ، پس توصیه نمیکنم که شما هم اینکار رو بکنید :)

----------


## reza_ali202000

کارتون خوب و قابل تعریفه. اما باید توجه داشت که چه کاربری میخواد از این نرم افزار و باچه حجم اطلاعاتی کار کنه.
مثلا شاید برا جایی باشه که روزی 100 تا فاکتور ثبت میشه(حالا جدا از چندکالا بودن) دیگه اونموقع فکر خوبی نیس که برای ثبت جدید دیتاگریدویو تمام قاکتورهای قبلی رو هم نمایش بده چرا که به شدت افت سرعت خواهید داشت و در نهایت ممکنه حتی تا 10 ثانیه باز شدن فرم هم طول بکشه

----------


## sg.programmer

> البته خودم دیگه از فرم های Mdi استفاده نمیکنم ، پس توصیه نمیکنم که شما هم اینکار رو بکنید :)


برای چی از این فرم ها استفاده نمیکنید؟
بجای آن از چی میخواهید استفاده کنید؟

----------


## ghasem110deh

> کارتون خوب و قابل تعریفه. اما باید توجه داشت که چه کاربری میخواد از این نرم افزار و باچه حجم اطلاعاتی کار کنه.
> مثلا شاید برا جایی باشه که روزی 100 تا فاکتور ثبت میشه(حالا جدا از چندکالا بودن) دیگه اونموقع فکر خوبی نیس که برای ثبت جدید دیتاگریدویو تمام قاکتورهای قبلی رو هم نمایش بده چرا که به شدت افت سرعت خواهید داشت و در نهایت ممکنه حتی تا 10 ثانیه باز شدن فرم هم طول بکشه


ممنون
حق با شماست ... توی پروژه دیگه (سفارشات) فاکتور رو با گریدیو ذخیره میکنم که همه فاکتور یکباره ذخیره بشه و تو همون فرم ثبت فاکتور ها رو نمایش نمیدم !




> برای چی از این فرم ها استفاده نمیکنید؟
> بجای آن از چی میخواهید استفاده کنید؟


https://barnamenevis.org/showthread.p...=1#post2212500

واجب نیست البته !
من تصمیم گرفتم دیگه استفاده نکنم :)

----------


## ebrahim.rayatparvar

> برای چی از این فرم ها استفاده نمیکنید؟
> بجای آن از چی میخواهید استفاده کنید؟


سلام مهندس جان 
نرم افزار هایی که تو این سالها نوشته شده مثل نرم افزار های مالی بزرگ و خیلی از اتوماسیون ها دیگه از فرم های روی هم که همون MDI یا نمایش 1 فرم در لحظه استفاده نمی کنند. 
روش MDI روشی خوبی است ولی مرنب نیست و نمای خوبی به برنامه نمیده ولی اگه از سیستم تب بندی در برنامه استفاده کنید فرم های شما مرتب و زیبا نمایش داده میشه و کاربر به راحتی میتونه چندین گزارش یا فاکتور رو با هم مقایسه کنه یا وسط کاری بره کاره دیگه رو انجام بده و ... و  .... و ..

----------


## reza_ali202000

> سلام مهندس جان 
> نرم افزار هایی که تو این سالها نوشته شده مثل نرم افزار های مالی بزرگ و خیلی از اتوماسیون ها دیگه از فرم های روی هم که همون MDI یا نمایش 1 فرم در لحظه استفاده نمی کنند. 
> روش MDI روشی خوبی است ولی مرنب نیست و نمای خوبی به برنامه نمیده ولی اگه از سیستم تب بندی در برنامه استفاده کنید فرم های شما مرتب و زیبا نمایش داده میشه و کاربر به راحتی میتونه چندین گزارش یا فاکتور رو با هم مقایسه کنه یا وسط کاری بره کاره دیگه رو انجام بده و ... و  .... و ..


اتفاقا برای کارای حساس و بزرگ که اطلاعات زیادی رو پردازش میکنه امکانش نیست که از تب استفاده کرد.چرا؟ چون وقتی مثلا شما داری مانده مشتری رو تماشا میکنی و یهو وسط کار میری (ناخواسته یا سهوا) یه سند برا همون مشتری ثبت میکنی حالا دوباره بدون رفرش شدن اطلاعات مشتری(چون ممکنه زمان بر باشه) اطلاعات غیر واقعی میبینی و ممکنه بری چایی بخوری برگردی فک کنی سند رو ثبت نکردی دوباره ثبت کنی!
نمیدونم منظورم رو رسوندم یا نه

----------


## ebrahim.rayatparvar

> اتفاقا برای کارای حساس و بزرگ که اطلاعات زیادی رو پردازش میکنه امکانش نیست که از تب استفاده کرد.چرا؟ چون وقتی مثلا شما داری مانده مشتری رو تماشا میکنی و یهو وسط کار میری (ناخواسته یا سهوا) یه سند برا همون مشتری ثبت میکنی حالا دوباره بدون رفرش شدن اطلاعات مشتری(چون ممکنه زمان بر باشه) اطلاعات غیر واقعی میبینی و ممکنه بری چایی بخوری برگردی فک کنی سند رو ثبت نکردی دوباره ثبت کنی!
> نمیدونم منظورم رو رسوندم یا نه


کار بزرگ منظورتون چیه؟؟؟ اگه نرم افزار مالی باشه یه گزارش مگه چقدر میخواد طول بکشه که یه سند آمار رو اشتباه کنه؟؟؟
در مورد موضوع دوم این مشکل ها تو حالت عادی هم هست

----------


## hosseinmolahosseiny

سلام خسته نباشید
برنامه موقع باز کردن توسط ویژوال استادیو اینجوری میشهUntitled.jpg

----------


## ebrahim.rayatparvar

سلام مهندس 
 1 - چندین دلیل داره که یا از کامپوننتی استفاده کردی الان پاک کردی.
 2 - دلیل بعدی خطی از تو برنامه رو پاک کردی ولی تو Diesigner هنوز داری.
3 - شاید کامپوننت رو آپدیت کردی ولی تو رفرنس هنوز با همون ورژن قبلی داری.
و....
باید چک کنی

----------


## asman.abi

من پروژه رو دیدم. خیلی خوب بود.
ولی اشکال هم کم نبود.

تعدادی از اشکال ها
1. استفاده کردن مکرر از sqlconnection . آخر سر می خواستم رو سیستم خودم اجراش کنم مجبور به find replace in files شدم. 137 بار استفاده شده بود. اگه احتمالا بخوای یه تغییر کوچیک توی نصب پایگاه بدی واقعا خسته کننده میشه. اگه این connection رو توی یه کلاس تعریف می کردی و هر جا می خواستی صدا می زدیش.

2. همان طور که دوستان گفتن در هنگام form_load نباید اطلاعاتی که لازم نیست تو datagrid پر کنی. مثلا در فرم جستجو. آنومالی در طراحی :گیج:  
اگر مقدار داده در این جداول زیاد باشه زمان بارگذاری فرم آزار دهنده است نه شکنجه آوره.

3.گزارش های ابتدایی . یعنی گزارش باید بر اساس سلیقه مشتری باشه ، به صورت پویا باشه.

4. قسمت مدیریت اصلا کار نمی کنه. یعنی اصلا براش کد وجود نداره . دکوریه! هم چنین در قسمت "ترازنامه"

5. کنترل خطا در بعضی فرم ها وجود نداشت. مثلا در "ثبت فاکتور خرید"

6. ضعف در جستجو. جستجوی پیشرفته وجود نداشت.
و موارد دیگر که خیلی وارد جزییاتش نشدم.

موفق باشید.

----------


## hosseinmolahosseiny

دوستان میشه توضیح بدید بانک نرم افزار رو چجوری باید اتچ کنیم؟؟
چون از طرق sql server اتچ نمیشه!!

----------


## ghasem110deh

> سلام خسته نباشید
> برنامه موقع باز کردن توسط ویژوال استادیو اینجوری میشه


سلام
استیمول سافت رو حتما باید داشته باشی ... کنترل باتون از استیموله !




> دوستان میشه توضیح بدید بانک نرم افزار رو چجوری باید اتچ کنیم؟؟
> چون از طرق sql server اتچ نمیشه!!


نباید مشکلی داشته باشه ، ولی اگه بهر دلیلی اتچ نشد از روی اسکریپت دیتابیس رو ایجاد کنید !

----------


## ghasem110deh

> 1. استفاده کردن مکرر از sqlconnection . آخر سر می خواستم رو سیستم خودم اجراش کنم مجبور به find replace in files شدم. 137 بار استفاده شده بود. اگه احتمالا بخوای یه تغییر کوچیک توی نصب پایگاه بدی واقعا خسته کننده میشه. اگه این connection رو توی یه کلاس تعریف می کردی و هر جا می خواستی صدا می زدیش.
> 2. همان طور که دوستان گفتن در هنگام form_load نباید اطلاعاتی که لازم نیست تو datagrid پر کنی. مثلا در فرم جستجو. آنومالی در طراحی 
> اگر مقدار داده در این جداول زیاد باشه زمان بارگذاری فرم آزار دهنده است نه شکنجه آوره.
> 3.گزارش های ابتدایی . یعنی گزارش باید بر اساس سلیقه مشتری باشه ، به صورت پویا باشه.
> 4. قسمت مدیریت اصلا کار نمی کنه. یعنی اصلا براش کد وجود نداره . دکوریه! هم چنین در قسمت "ترازنامه"
> 5. کنترل خطا در بعضی فرم ها وجود نداشت. مثلا در "ثبت فاکتور خرید"
> 6. ضعف در جستجو. جستجوی پیشرفته وجود نداشت.


ممنون :)
---------
1- کانکشن رو پروژه های دیگه اینجوری نیست ، درستش کردم
2- توی فرم لود نباشه ... کجا باشه ؟  :متفکر: 



> آنومالی در طراحی


 ... چی هست ، توضیح بدین !
3- گزارش پویا ، یعنی چطوری ؟
4- قسمت مدیریت ... تنظیمات و ایجاد کاربر و این حرفاس که دیگه کاملش نکردم  :لبخند گشاده!: 
5- بله ...
6- جستجوی پیشرفته ؟

----------


## asman.abi

> توی فرم لود نباشه ... کجا باشه ؟


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

آنومالی هم یه کلمه انگلیسی هست. به مفهوم به هم ریختگی، آشفتگی. که وقتی گفتم آنومالی در طراحی یعنی ...
به خاطر شلوغی بعضی فرم ها بود. کاربر گیج میشه :لبخند گشاده!: 




> گزارش پویا ، یعنی چطوری ؟


گزارش پویا یعنی در زمان اجرا بشه گزارش های سفارشی بر اساس مقادیر موجود تهیه کرد. یه کاربر بگه گزارش هایی رو می خوام که موجودی انبار آن ها بیشتر از 10 است رو برام لیست کن. می تونی تو فرم جستجوت اعمالش کنی. من تو پروژه خودم این طور استفاده کردم و استفاده می کنم. با این روش تعداد فرم های گزارش که تو بعضی نرم افزار ها به عنوان خصوصیت استفاده میشه رو کم می کنی. میگن انقدر گزارش میگیره  :قهقهه: .اگه اینه من تو یه فرم به اندازه همون گزارش ها، گزارش سفارشی دارم این خصوصیته، نه اون. اینا هم مربوط به همون طراحی و (آنو... :لبخند گشاده!: ) میشه.




> جستجوی پیشرفته ؟


و اما جستجوی پیشرفته یه قابلیته خیلی خوبیه که هر نرم افزار خوب باید داشته باشه. 
جستجو پیشرفته یعنی جستجو بر اساس همه مقادیر موجود. حال دو مقدار یا بر اساس همه مقادیر جستجو انجام بشه نه یه فیلد مثلا شماره چک های به این شماره .... صورت بگیره.
روال کاریش مثل همون جستجو های تکی هست ولی با تغییر کوچیک تو کد sql میشه یه جستجو پیشرفته تهیه کرد.

موفق باشید

----------


## golbafan

سلام دوست عزیز
خسته نباشید.

من هنوز وقت نکردم به کدهاتون نگاه کنم اما تصاویر رو با اجازتون نظر میدم:
چون تعداد فرمهاتون زیاده وقتی اونها رو در حالت mdi دارید نشون میدید برای کاربر خیلی سخته که اونها رو پیدا کنه و بین اونها سویچ کنه
برای همین من پیشنهاد میدم از tabbed mdi استفاده کنید

----------


## asman.abi

در ضمن از شواهد پیداست( مقادیر ذخیره شده در پایگاه داده نرم افزار) که این نرم افزار جایی کار می کرده. فکر نکنم در حد یه پروژه تمرینی باشه. :لبخند گشاده!:

----------


## ghasem110deh

> در ضمن از شواهد پیداست( مقادیر ذخیره شده در پایگاه داده نرم افزار) که این نرم افزار جایی کار می کرده. فکر نکنم در حد یه پروژه تمرینی باشه.


فروش داشته ...
ولی بعد از این که اینجا واسه دانلود قرار دادم !
-------------------------------------------------
یکی از حسن های اشتراک گذاشتنش همینه دیگه ، توصیه های بجا و کار رابنداز دوستان عزیز  :تشویق: 
.
.
.
برنامه بعدی (معاری سه لایه و پروسیجر) رو تا چند روز دیگه میزارم واسه دانلود !
و همینطور بررسی نحوه کد نویسی و طراحی توسط اساتید گرامی 
-----------------------------------------------------------------------
با یه تیر میشه چند تا هدف رو زد :
1- کسایی که تازه کارن (مث خودم) میتونن از برنامه استفاده کنن
2- اساتید ایرادات برنامه رو میگن
3- طراحی درست رو اصولی رو پیاده میکنیم
4- ...

----------


## hosseinmolahosseiny

> سلام
> استیمول سافت رو حتما باید داشته باشی ... کنترل باتون از استیموله !
> 
> 
> 
> نباید مشکلی داشته باشه ، ولی اگه بهر دلیلی اتچ نشد از روی اسکریپت دیتابیس رو ایجاد کنید !


با تشکر از راهنمایی شما
ولی اسکریپت هم مشکل داره
اگه میشه یه راهنمایی کامل در خصوص اجرای اسکریپت و اتچ بانک بفرمائید؟ با تشکر

----------


## ghasem110deh

> با تشکر از راهنمایی شما
> ولی اسکریپت هم مشکل داره
> اگه میشه یه راهنمایی کامل در خصوص اجرای اسکریپت و اتچ بانک بفرمائید؟ با تشکر


موقع اتچ کردن پیغام خطایی ، چیزی میده ؟
ورژن هم 2008 آر 2 هستش ... که احتمالا اسکیوال شما هم همین یا بالانره دیگه

----------


## hosseinmolahosseiny

> موقع اتچ کردن پیغام خطایی ، چیزی میده ؟
> ورژن هم 2008 آر 2 هستش ... که احتمالا اسکیوال شما هم همین یا بالانره دیگه



ورژن sql2008 هست
Untitled.png

----------


## asman.abi

خب روی اون لینک آبی رنگ کلیک کن ببینم خطا چی میده. بعد از OK کردن اون پیغام :چشمک:

----------


## asman.abi

> فروش داشته ...


میشه بپرسم چند فروخته شده؟

----------


## hosseinmolahosseiny

> خب روی اون لینک آبی رنگ کلیک کن ببینم خطا چی میده. بعد از OK کردن اون پیغام



اون لینک آبی رنگ وقتی OK رو میزنی دیگه میره

----------


## asman.abi

> اون لینک آبی رنگ وقتی OK رو میزنی دیگه میره


بعد از زدن OK پیغامی که در تصویر گذاشتی. در پنجره attach database در قسمت message اون لینک خطا به رنگ آبی هست. اونو روش کلیک کن یه پیغام میده اونو بذار ببینم.

----------


## ghasem110deh

> میشه بپرسم چند فروخته شده؟


چرا نمیشه !
بالاترین قیمت 200 تومن بوده !

----------


## reza_ali202000

> چرا نمیشه !
> بالاترین قیمت 200 تومن بوده !


اگه کامل بوده و قابل اجرایی که کاراشون رو باهاش انجام بدن و باگی نداشته قیمت خیلی خیلی کمی دادین! کلا برنامه نویسی اختصاصی حتی چیز ساده بجز دانجویی زیر یک میلیون نباید بدین. هم واقعا برا خودتون میگم هم برا بقیه دوستان برنامه نویس

----------


## ghasem110deh

> اگه کامل بوده و قابل اجرایی که کاراشون رو باهاش انجام بدن و باگی نداشته قیمت خیلی خیلی کمی دادین! کلا برنامه نویسی اختصاصی حتی چیز ساده بجز دانجویی زیر یک میلیون نباید بدین. هم واقعا برا خودتون میگم هم برا بقیه دوستان برنامه نویس


منم موافقم ...
ولی وقتی مشتری نباشه باید به همین هم راضی بود دیگه :)
---------------
مسئله دیگه هم (خودم شخصا) اینه که هنوز تازه کارم  :لبخند گشاده!:

----------


## reza_ali202000

> منم موافقم ...
> ولی وقتی مشتری نباشه باید به همین هم راضی بود دیگه :)
> ---------------
> مسئله دیگه هم (خودم شخصا) اینه که هنوز تازه کارم


اتفاقا هرچی برنامه ارزونتر بدی توقعاتشون ازتون بیشتر میشه مثلا یهو توقع میکنن که براشون ده تا فیلد اضافه کنی اونم مجانی!
شما دوبار هم که بخای بری سیستمشون رو ببینی بیشتر از این چیزا هم خرجتون میشه.

----------


## hosseinmolahosseiny

> بعد از زدن OK پیغامی که در تصویر گذاشتی. در پنجره attach database در قسمت message اون لینک خطا به رنگ آبی هست. اونو روش کلیک کن یه پیغام میده اونو بذار ببینم.


پیغامش اینه:
1.png

البته بانک یه نرم افزار دیگه رو هم می خوام اتچ کنم این پیغامو میده:
Untitled.png

----------


## asman.abi

خب در مورد پیغام اولی اینه که یه دیتا بیس با نام یکسان داری. اگه تو sql شما بانکی با همین اسم هست تغییر نامش بده یا detach کن. به احتمال پایگاه در sql متصل شده باشه.

در مورد پیغام دومی دلیلیش اینه که دیتابیسی که استفاده می کنی با نسخه sqlserver شما هماهنگ نیست یعنی با نسخه ای بالاتر از نسخه فعلی شما ساخته شده پس خطا میده. برای attach کردن این دیتابیس باید نسخه sql رو ارتقا بدی.

----------


## golbafan

سلام آقا قاسم خوبی؟

اگه یادت باشه یه روش برای تولید جدول توسط خود برنامه بهت گفته بودم (بجای اتچ کردن)

اگه ممکنه اونو پیاده سازی کن تا مشکلات رفع بشن

----------


## ghasem110deh

> سلام آقا قاسم خوبی؟
> 
> اگه یادت باشه یه روش برای تولید جدول توسط خود برنامه بهت گفته بودم (بجای اتچ کردن)
> 
> اگه ممکنه اونو پیاده سازی کن تا مشکلات رفع بشن


سلام ... ممنون
رو چشام 
آماده میکنم و همینجا میزارم :)

----------


## ghasem110deh

سلام به همه ...

پست اول ویرایش شد !
نسخه کامل + قابلیت ایجاد دیتابیس

----------


## saeidghadiri

سلام من فایل DLL = DateTimeSelector رو تو پوشه debug ریختم به Refrence  هم اضافه کردم نحوه استفاده ش رو میشه توضیح بدی؟ چون من تو ToolBox =  ChooseItems رو هم زدم ولی این رو پیدا نکرد ممنون میشم توضیح بدی|

----------


## ghasem110deh

سلام
این کامپوننت کار دوست عزیزمون Plus هستش و اینم تاپیک مربوطه :

https://barnamenevis.org/showthread.p...highlight=Plus

بعد این که تو پوشه دیباگ ریختی کافی فقط دراگ کنی روی تولباکس ، تا اضافه بشه ...

----------


## ahmadreza.s

سلام آقا قاسم ميشه لطف كني اون برنامه كه واسه اسكريپت پايگاه داده س رو يه جا ديگه آپ كني ؟ آخه لينكش پاك شده !

----------


## ghasem110deh

> سلام آقا قاسم ميشه لطف كني اون برنامه كه واسه اسكريپت پايگاه داده س رو يه جا ديگه آپ كني ؟ آخه لينكش پاك شده !


و سلام به شما :)

اینم لینک دانلود :

http://s3.picofile.com/file/81958714...r_RGF.rar.html

اما پست اول رو تست کردم سالمه (در واقع همین لینکه)
پروژه کامل که ساخت دیتابیس از اسکریپت هم توش هست !

----------


## jamal_ch

برنامه خوبی بود ممنون

----------


## saeidghadiri

> سلام
> این کامپوننت کار دوست عزیزمون Plus هستش و اینم تاپیک مربوطه :
> 
> https://barnamenevis.org/showthread.p...highlight=Plus
> 
> بعد این که تو پوشه دیباگ ریختی کافی فقط دراگ کنی روی تولباکس ، تا اضافه بشه ...


سلام اینکار رو کردم به  ToolBox اضافه شد زمانی که به فرم اضافه می کنم تاریخ میلادی میاد (البته از Github) ورژن جدیدش 1.1 رو دانلود کردم

----------


## ghasem110deh

> سلام اینکار رو کردم به  ToolBox اضافه شد زمانی که به فرم اضافه می کنم تاریخ میلادی میاد (البته از Github) ورژن جدیدش 1.1 رو دانلود کردم


سلام
توی properties میشه به شمسی تبدیلش کرد !
و حالات دیگه مثل تاریخ کوتاه و ...

----------


## saeidghadiri

سلام میشه یه Win form جدا بسازی فقط توش در رابطه با ایجاد دیتابیس سیستمی توضیج بدی؟

1 چطور Script رو اون جوری که باید باشه درست کردین
2 در مورد کلاسش توضیح بدین
3 در مورد setting DB توضیح بدین
4 چطور فراخوانی کردید فایل txt رو و...

ممنون

----------


## zayens

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

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

----------


## shahramgh69

سلام لینک خرابه دانلود نمیشه!

----------


## ghasem110deh

> سلام لینک خرابه دانلود نمیشه!


سلام
امتحان کردم مشکلی نداره !

http://uploadboy.com/1pas1znz8yex/3287//rar

----------


## shahramgh69

ممنون دانلود شد فقط فایل دیتابیسش نیست برنامه ارور میده که به دیتا بیس وصل نیست

----------


## ghasem110deh

> ممنون دانلود شد فقط فایل دیتابیسش نیست برنامه ارور میده که به دیتا بیس وصل نیست


دیتابیس رو از روی اسکریپت باید بسازین

با یوزر anbar
و پس 123

و با این کلید دیتابیس ایجاد میشه (تصویر ضمیمه)

----------


## oliya24

نام کاربری و رمز عبور چیه؟؟؟

----------


## ghasem110deh

> نام کاربری و رمز عبور چیه؟؟؟


یوزر anbar
پس 123

----------


## khosro_68

به نظر من کارت خیلی خوبه فقط با اعمال چند تا نکته بهتر از اینم میتونه بشه. 
1. استفاده از استور پروسیجر به جای کد نویسی در سی شارپ
2.ذخیره کردن کانکشن استرینگ داخل app.config
در کل کار خیلی خوبیه و معلومه که زحمت کشیدی واسش خسته نباشی.

----------


## sg.programmer

سلام
فرم های فاکتور و کاردکس و .... که با استیمول ریپورت طراحی شدن چطوری میشه ویرایش کرد؟
در برنامه اجرایی بعد از کلیک کردن قابل رویت هستن ولی در سورس برنامه همچین فرم های اطلا دیده نمیشن کجا هستند؟

----------


## ghasem110deh

> سلام
> فرم های فاکتور و کاردکس و .... که با استیمول ریپورت طراحی شدن چطوری میشه ویرایش کرد؟
> در برنامه اجرایی بعد از کلیک کردن قابل رویت هستن ولی در سورس برنامه همچین فرم های اطلا دیده نمیشن کجا هستند؟


سلام :-)

از این پروژه (آموزش) استفاده کنید :

https://barnamenevis.org/showthread.p...7%D8%B1%DB%8C)

----------


## sg.programmer

> سلام :-)
> 
> از این پروژه (آموزش) استفاده کنید :
> 
> https://barnamenevis.org/showthread.p...7%D8%B1%DB%8C)


تشکر مهندس
ولی در این پروژه هیچ دیتا سورسی به گزارش نیست و من میخوام یک قسمت های از گزارش را تغییر بدم ولی گزارش را پیدا نکردم؟ چطوری باید تغییر بدم

این کد نمایش گزارش هست
PersianCalendar pcd2 = new PersianCalendar();
            string Date = pcd2.GetYear(DateTime.Now).ToString()
                + "/" +
                pcd2.GetMonth(DateTime.Now).ToString()
                + "/" +
                pcd2.GetDayOfMonth(DateTime.Now).ToString();
            StiVariable svd = new StiVariable("Date2", "Date2", typeof(string), Date, false);
            stiReport3.Dictionary.Variables.Add(svd);
            stiReport3.Show();

----------


## ghasem110deh

توی این پروژه ...
توی فرم مربوط به گزارش باید یه کنترل sti report به فرم اضافه شده باشه (مثل کنترل تایمر و ...)

روش که کلیک کنی ... یه گزینه داره به اسم designer
با کلیک روی اون وارد محیط طراحی استیمول میشه و بعد از تغییرات فایل رو save کنید

به این صورت هم توی محیط کد نویسی ، وارد محیط طراحی استیمول میشه :


stiReport3.Design();

----------


## sg.programmer

اینو نوشتم و خطا میده ؟ این ورژن را ندارم میشه برام ارسال کنید؟

stiReport3.Design();

هر ورژن هم میزارم خطا میده :

----------


## ghasem110deh

سلام 
این نسخه استفاده شده : Stimulsoft Reports Ultimate 2012.3
حجم ش 202 مگ هست ...
اگه نصب مشکلی نداشته باشه، موقع کلیک راست روی کنترل یا کلیک روی آیکون مثلث شکل خود کنترل (در حالت انتخاب) گزینه های توی عکس باید باشن
و فایلهای توی عکس دوم هم حتما باید کنار پروژه باشه (و توی رفرنس معرفی بشه)

----------


## nima_8m

با سلام و تشکر قراوان از رحمات شما
کاره جالبیه من تازه میخوام از vb به #C محاجرت کنم این برنامه ها واقعا کاربردی هستش
البته دیگه خیلیا اینکار و نمیکنن که سورس رو رایگان در اختیار عموم بذارن 
خداقوت

----------

