PDA

View Full Version : نمونه ساده برنامه (3لایه + DataBase + Crystal + Print + Expro to Excel) (هدیه نوروزی )



ehsanara
پنج شنبه 04 فروردین 1390, 03:32 صبح
سلام دوستان
تصمیم گرفتم یه برنامه ساده بصورت 3لایه برای دوستانی که میخوان با این شیوه آشنا شن بنویسم
DataBase و گزارش Crystal رو هم گذاشتم (البته خود فایل کریستال رو باید دوستان بازکنن و با سروری که دارن فیلد ها رو ست کنن ، می خواستم با ODBC این کار رو انجام بدم که کار دوستان رو راحت کنم ولی گفتم ممکنه دوستان متوجه نشن)
برای دوستانی هم که میخوان از گرید Print Preview بگیرن یا به Excel تبدیل کنن هم کد گذاشتم

فقط دوستان لطفا به InterFace گیر ندین چون خیلی رو اون کار نکردم هدفم آشنایی با این سبک کد نویسی بود
دوستانی هم که با این روش کار می کنن لطفا ببینن اگه ایرادی داره بگن خوشحال میشم

ضمنا دوستانی هم که با View و StoreProcedure خیلی کار نمیکنن میتونن تو دیتا بیس نمونه ببینن
امیدوارم مفید باشه

arefba
پنج شنبه 04 فروردین 1390, 03:54 صبح
اونوقت برنامت کجاست

ehsanara
پنج شنبه 04 فروردین 1390, 04:10 صبح
ببخشید یادم رفته بود بزارم :بامزه:
فراموش کردم بگم
برا ConnectionString هم فقط کافیه که بعد از Attach کردن بانک به Sql تو صفحه اول، بالای صفحه فقط نام سرور رو بنویسین و ذخیره کنین
توجه کنید فقط نام سرورSQL نه کل ConnectionString

فایل rpt هم تو پوشه release هست

pishraft
پنج شنبه 04 فروردین 1390, 04:19 صبح
میشه در این مورد یه توضیح بدید که چه برتری داره؟

ehsanara
پنج شنبه 04 فروردین 1390, 04:29 صبح
یکی از مزیت های مهمش اینه که تو لایه Interface که همون فرم ها هستن مستقیم با دیتابیس در ارتباط نیستیم
اگه به کد های داخل فرم ها دقت کنین هیچ ارتباط مستقیمی به دیتا بیس نمیبینین

nima.mehdi
پنج شنبه 04 فروردین 1390, 13:00 عصر
دوست عزیز ممنون.
یک سوال داشتم تفاوت استفاده از wizardخود visual studio یا نوشتن به این صورت چیه؟

ztx4
پنج شنبه 04 فروردین 1390, 13:23 عصر
ممنون
استفاده کردیم
تنها یک مساله هست و اونم اینه که نمی تونم اجراش کنم.این Erorr ها رو می ده:

Error 5 The type or namespace name 'Janus' could not be found (are you missing a using directive or an assembly reference?) D:\Programming\3Layer App &Sql\Gift\Gift\Gift\Class\PrintSetup.cs 7 7 Gift
Error 6 The type or namespace name 'CrystalDecisions' could not be found (are you missing a using directive or an assembly reference?) D:\Programming\3Layer App &Sql\Gift\Gift\Gift\Forms\Crystal.cs 9 7 Gift
Error 7 The type or namespace name 'CrystalDecisions' could not be found (are you missing a using directive or an assembly reference?) D:\Programming\3Layer App &Sql\Gift\Gift\Gift\Forms\Crystal.cs 10 7 Gift
Error 8 The type or namespace name 'ReportDocument' could not be found (are you missing a using directive or an assembly reference?) D:\Programming\3Layer App &Sql\Gift\Gift\Gift\Forms\Crystal.cs 23 24 Gift
Error 9 The type or namespace name 'ConnectionInfo' could not be found (are you missing a using directive or an assembly reference?) D:\Programming\3Layer App &Sql\Gift\Gift\Gift\Forms\Crystal.cs 69 41 Gift
Error 10 The type or namespace name 'ReportDocument' could not be found (are you missing a using directive or an assembly reference?) D:\Programming\3Layer App &Sql\Gift\Gift\Gift\Forms\Crystal.cs 69 63 Gift
Error 11 The type or namespace name 'CrystalDecisions' could not be found (are you missing a using directive or an assembly reference?) D:\Programming\3Layer App &Sql\Gift\Gift\Gift\Forms\Crystal.Designer.cs 139 17 Gift
Error 12 The type or namespace name 'AnalogClockControl' could not be found (are you missing a using directive or an assembly reference?) D:\Programming\3Layer App &Sql\Gift\Gift\Gift\Forms\Main.Designer.cs 188 17 Gift

ehsanara
پنج شنبه 04 فروردین 1390, 14:05 عصر
دوستان کد کامل رو بالا گذاشتم ااگه 5پارت بالا رو دانلود کردین این لازم نیست


ممنون
استفاده کردیم
تنها یک مساله هست و اونم اینه که نمی تونم اجراش کنم
67827
67826
67825
67824
لطفا این دو پوشه رو به شاخه Gift اضافه کن

ehsanara
پنج شنبه 04 فروردین 1390, 14:41 عصر
دوست عزیز ممنون.
یک سوال داشتم تفاوت استفاده از wizardخود visual studio یا نوشتن به این صورت چیه؟
منظورتون رو درست متوجه نشدم!

nima.mehdi
پنج شنبه 04 فروردین 1390, 14:54 عصر
وقتی با dataset کار می کنیم چه تفاوتی با نوشتن به این صورت دارد؟

ehsanara
جمعه 05 فروردین 1390, 00:20 صبح
یکی از تفاوت هاش اینه که برا DataSet معمولا باید DataAdapter هم بزاری که واسط اون با DataBase باشه ولی تو این روش دیگه نیازی به DataSet و DataAdapter یا DataReader نیست

ehsanara
جمعه 05 فروردین 1390, 00:25 صبح
وقتی با dataset کار می کنیم چه تفاوتی با نوشتن به این صورت دارد؟
یکی از تفاوت هاش اینه که برا DataSet معمولا باید DataAdapter هم بزاری که واسط اون با DataBase باشه ولی تو این روش دیگه نیازی به DataSet و DataAdapter یا DataReader نیست
لایه های BLL و DAL رو ببینی احتمالا متوجه نوع ارتباط ها میشی


میشه در این مورد یه توضیح بدید که چه برتری داره؟
یکی دیگه از موازدش اینه که ممکنه بخوای DataBase رو مثلا از Sql به Oracle یا Sqlite تبدیل کنی فقط کافیه بری لایه DAL رو تغییر بدی
ممکنه اولش یه مقدار گنگ باشه ولی اگه خودت تو یه پروژه جدید این نوع برنامه نویسی رو انجام بدی متوجه میشی چقدر راحت هست و اگه برنامه بزرگی هم داشته باشی میبینی که خیلی سریع میتونی با همین کلاس ها و لایه ها فرم های جدید رو اضافه کنی

pishraft
شنبه 06 فروردین 1390, 02:18 صبح
یکی دیگه از موازدش اینه که ممکنه بخوای DataBase رو مثلا از Sql به Oracle یا Sqlite تبدیل کنی فقط کافیه بری لایه DAL رو تغییر بدی


یعنی تو حالت عادی نمیشه؟

ztx4
شنبه 06 فروردین 1390, 12:54 عصر
یعنی تو حالت عادی نمیشه؟
می شه.اما به سختی

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

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

همه ی این مشکلات در برنامه نویسی چند لایه رفع می شه.

ehsanara
شنبه 06 فروردین 1390, 15:29 عصر
.به جرات می تونم بگم که از اول نوشتن این برنامه راحت تر از اصلاح اون خواهد بود.

کاملا درسته