M.KH-SH
جمعه 19 دی 1393, 10:14 صبح
با سلام
امیدوار هستم که این آموزش مفید باشد.
گاهی اوقات هستش که روی سیستمی هستیم و دسترسی به هیچ یک از فایل های متداول برای ساخت دیتابیس رو نداریم ، از طرف دیگه هم با فایل XML نمیشه به درستی و به سادگی ساختار یک دیتابیس رو با جداول بسیار زیاد ساخت و همیشه به مشکل برمیخورد.
یک روش برای این که بتونیم این کار رو انجام بدیم این هستش که از کلاس های ساخته شده توسط خودمون یک دیتابیس رو بسازیم.
به فرض من یک کلاس دارم که اسم اون رو میزارم DataBase این کلاس حاوی چند Property هستش که نمایانگر جداول موجود در این دیتا بیس ما هستش که اطلاعات رو در اون قرار میدهیم.
Property های مورد نظر ما باید به صورت List<T> باشه چون قراره یک لیست رو بگیره و یا به ما بده از طرفی هم نیاز هستش که به راحتی کم یا زیاد بشه و یا تغییری رو در اون ایجاد کنیم.
public class DataBase
{
public List<PreInvoice> PreInvoiceTable { get; set; }
public List<PreInvoiceDetail> PreInvoiceDetail { get; set; }
}
هر کدام از Property های بالا از یک کلاس دیگه به صورت لیست ساخته شده اند که هر کدام از کلاس ها نیز خود دارای یک سری Property دیگه هستند که مثل SQL همون فیلد های مورد نیاز خودمون به حساب می آیند.
بعد از ساختن این دیتا بیس و جداول آن باید بتونیم فایل رو ذخیره کنیم و از دیتای اون استفاده کنیم برای این کار باید از [Serializable] بر بالای هر کلاس استفاده کنیم با این روش می توانیم کلاس DataBase رو تبدیل به Binary کنیم و سپس از طریق File.WriteBinary ذخیره کنیم.
برای خواندن فایل نیر از File.ReadBinary استفاده میکنیم و سپس آنرا توسط کلاس DeSerializable تبدیل به یک object کرده و آنرا به DataBase تبدیل می کنیم.
-----------------------
توضیحات اولیه بودش که با یک سری از مطالب اولیه آشنا باشید.
یک پروژه بسیار کوچک با این سناریو داریم ::::
یک پیش فاکتور رو ثبت کنیم ، سپس ایتم های موجود در اون رو اضافه یا کم و یا ویرایش کنیم سپس آنرا در لیست صفحه اصلی به نمایش بزاریم و در صورت نیاز آنرا چاپ کنیم.
نکته: در برنامه بعضی از توابع هستند که به صورت آماده در C# نیست ولی ساخته شده که اصطلاحا به Extender معروف هستند.
بنا براین برای اینکه در باز نویسی به مشکل نخورید کد Serialize رو میزارم و بقیه هم که مشخص هستش فقط Convert کردن می باشد و یا می توانید از خود کلاس Alphasoft.Class.Public برای این کار استفاده کنید.
public static byte[] ToBinary(object item)
{
var bf = new BinaryFormatter();
var ms = new MemoryStream();
bf.Serialize(ms, item);
return ms.GetBuffer();
}
public static object ToObject(byte[] item)
{
var ms = new MemoryStream(item);
var bf = new BinaryFormatter();
return bf.Deserialize(ms);
}
-----
برای استفاده از قابلیت ویرایش صفحه گزارش باید در کلاس Print در تابع PrintPreInvoice خط Report.Design() رو فعال کنید.
-----
در صورت داشتن سئوال در این باره در پست های آنده پاسخ خواهم داد.
به علت حجم بالای فایل در سایت نشود Upload کنم.
لینک دانلود ::: alphasoft.ir/download/preinvoice.rar (http://alphasoft.ir/download/preinvoice.rar) سایز فایل : 5.4 mb
امیدوار هستم که این آموزش مفید باشد.
گاهی اوقات هستش که روی سیستمی هستیم و دسترسی به هیچ یک از فایل های متداول برای ساخت دیتابیس رو نداریم ، از طرف دیگه هم با فایل XML نمیشه به درستی و به سادگی ساختار یک دیتابیس رو با جداول بسیار زیاد ساخت و همیشه به مشکل برمیخورد.
یک روش برای این که بتونیم این کار رو انجام بدیم این هستش که از کلاس های ساخته شده توسط خودمون یک دیتابیس رو بسازیم.
به فرض من یک کلاس دارم که اسم اون رو میزارم DataBase این کلاس حاوی چند Property هستش که نمایانگر جداول موجود در این دیتا بیس ما هستش که اطلاعات رو در اون قرار میدهیم.
Property های مورد نظر ما باید به صورت List<T> باشه چون قراره یک لیست رو بگیره و یا به ما بده از طرفی هم نیاز هستش که به راحتی کم یا زیاد بشه و یا تغییری رو در اون ایجاد کنیم.
public class DataBase
{
public List<PreInvoice> PreInvoiceTable { get; set; }
public List<PreInvoiceDetail> PreInvoiceDetail { get; set; }
}
هر کدام از Property های بالا از یک کلاس دیگه به صورت لیست ساخته شده اند که هر کدام از کلاس ها نیز خود دارای یک سری Property دیگه هستند که مثل SQL همون فیلد های مورد نیاز خودمون به حساب می آیند.
بعد از ساختن این دیتا بیس و جداول آن باید بتونیم فایل رو ذخیره کنیم و از دیتای اون استفاده کنیم برای این کار باید از [Serializable] بر بالای هر کلاس استفاده کنیم با این روش می توانیم کلاس DataBase رو تبدیل به Binary کنیم و سپس از طریق File.WriteBinary ذخیره کنیم.
برای خواندن فایل نیر از File.ReadBinary استفاده میکنیم و سپس آنرا توسط کلاس DeSerializable تبدیل به یک object کرده و آنرا به DataBase تبدیل می کنیم.
-----------------------
توضیحات اولیه بودش که با یک سری از مطالب اولیه آشنا باشید.
یک پروژه بسیار کوچک با این سناریو داریم ::::
یک پیش فاکتور رو ثبت کنیم ، سپس ایتم های موجود در اون رو اضافه یا کم و یا ویرایش کنیم سپس آنرا در لیست صفحه اصلی به نمایش بزاریم و در صورت نیاز آنرا چاپ کنیم.
نکته: در برنامه بعضی از توابع هستند که به صورت آماده در C# نیست ولی ساخته شده که اصطلاحا به Extender معروف هستند.
بنا براین برای اینکه در باز نویسی به مشکل نخورید کد Serialize رو میزارم و بقیه هم که مشخص هستش فقط Convert کردن می باشد و یا می توانید از خود کلاس Alphasoft.Class.Public برای این کار استفاده کنید.
public static byte[] ToBinary(object item)
{
var bf = new BinaryFormatter();
var ms = new MemoryStream();
bf.Serialize(ms, item);
return ms.GetBuffer();
}
public static object ToObject(byte[] item)
{
var ms = new MemoryStream(item);
var bf = new BinaryFormatter();
return bf.Deserialize(ms);
}
-----
برای استفاده از قابلیت ویرایش صفحه گزارش باید در کلاس Print در تابع PrintPreInvoice خط Report.Design() رو فعال کنید.
-----
در صورت داشتن سئوال در این باره در پست های آنده پاسخ خواهم داد.
به علت حجم بالای فایل در سایت نشود Upload کنم.
لینک دانلود ::: alphasoft.ir/download/preinvoice.rar (http://alphasoft.ir/download/preinvoice.rar) سایز فایل : 5.4 mb