بایگانی

نوشته های برچسب زده شده ‘C#’

یونیکد و طراحی بانک اطلاعاتی کاملا فارسی

۹ خرداد ۱۳۸۸

و باز هم سلام، حکایت این مطلب از این قراره که مشغول طراحی بانک یک پروژه کوچیک بودم که باز یک مشکل قدیمی یقه من و سفت چسبید! پیدا کردن معادل های انگبیسی برای اسم فیلد ها! اغلب دوستان با این مشکل مواجه هستن بعضی ها به فینگلیش می نویسند بعضی ها هم که به زبان انگلیسی تسلط بیشتری دارند با کمی بالا پایین معادل های انگلیسی استفاده می کنند.
وقتی با یکی از دوستان مشغول صحبت سر این جریان بودم حرف جالبی زد: چرا اسم فیلدها را فارسی ننویسیم، پس یونیکد به چه درد می خوره؟! راستش من تا حالا زیاد به این مسئله فکر نکرده بودم، عادت قدیمی از ابزارهای قدیمی یواش یواش این فکر و از سرم بیرون کرده بود، اما واقعا این مسئله تا چه حد عملی است و آیا درد سر ساز خواهد بود یا نه به عنوان سوال بین ما مطرح شد و تنها جواب ممکن یک چیز بود، یک تست عملی.
بسیار خوب من مشغول شدم و سعی کردم از ابتدا یک بانک با مشخصه های کاملا فارسی بسازم. مشخصه هایی که به زبان فارسی ایجاد کردم شامل موارد زیر بود :
۱- نام بانک اطلاعاتی
۲- نام جداول
۳- نام فیلدها
۴- نام Stored Procedure ها و پارامترها
به نظرم برای تست همین موارد کافی بود. ابزارها، محیط های توسعه و کامپوننت هایی که برای این تست استفاده کردم :
• Microsoft Sql Server 2008

1- Visual Studio 2008 – .Net Framework 3.5 sp1
2- مجموعه کامپوننت های Janus ( این مورد برای این بود که سازگاری محصولات جانبی در .Net به صورت حداقل بررسی شود)
۳- زبان برنامه نویسی C#
4- کنترل گزارش گیری Stimul Report

1- CodeGear RAD Studio 2009
2- زبان برنامه نویسی دلفی
۳- مجموعه کامپوننت های Raize نسخه ۵٫۱
۴- مجموعه کامپوننت های Ehlib
5- کامپوننت گزارش گیری FastReport
همونطور که می بینید برای این تست از محیط ویژوال استودیو و RAD Studio استفاده کردم چرا که این محیط ها عمومیت بیشتری بین برنامه نویسان ایرانی دارند.
نتیجه های اولیه این تست برای من بسیار جالب بود. به نظرم تصاویر زیر بسیار گویا تر باشد:

Vote on iDevCenter

Microsoft C Sharp, SQL Server, ابزارهای برنامه نویسی , , , , , , , ,

افزایش خودکار Build و Revision

۸ خرداد ۱۳۸۸

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

افزایش خودکار شماره Build و Revision :

دقیقا نمی دونم به چه دلیل ویژوال استودیو به صورت خودکار شماره Build و Revision را در زمان هر Build اضافه نمی کنه! از اونجایی که نسخه نرم افزار در مواردی برای من بسیار مهم و حیاتی بود یک روز تمام وقت گذاشتم تا روشی برای این کار پیدا کنم، چند تا Add-in و نمونه کد برای این کار پیدا کردم و بلاخره بعد از تست به روشی که در ادامه توضیح می دهم، رسیدم.

این مطلب بر گرفته از این مقاله در سایت Code Project است. نویسنده این مقاله با استفاده از قطعه کدی که به زبان VB.Net نوشته شده یک روش ابتکاری ارائه داده. به دلیل یکپارچه بودن محیط .Net ما با تغییرات بسیار جزئی قادر هستیم از این روش در پروژه های C# هم استفاده کنیم. در مقاله اصلی توضیحات کاملی داده شده پس در اینجا فقط به روش استفاده در C# می پردازیم.

برای شروع شما نیاز به DLL ساخته شده در مقاله اصلی نیاز دارید که از طریق لینکهای زیر قابل دریافت است:

دریافت نسخه کامپایل شده: buildtaskdll

دریافت کد منبع: buildtask_source

یک پروژه نمونه در C# ایجاد کنید. پروژه نمونه را ذخیر کنید و سپس ویژوال استودیو را ببندید. به محل ذخیره شدن پروژه بروید و فایل پروژه با پسوند csproj. را در یک پردازش گر متن مثل NotePad باز کنید. از Notepad++ هم می توانید استفاده کنید. تگ Project را پیدا کنید و بعد از آن این خط را اضافه کنید :

<UsingTask TaskName=”BuildTasks.IncrementBuildNumber” AssemblyFile=”BuildTask.dll” />

به طور کامل بعد از تغییر باید به نتیجه زیر برسید :

<?xml version=”1.0″ encoding=”utf-8″?>

<Project ToolsVersion=”3.5″ DefaultTargets=”Build” xmlns=”http://schemas.microsoft.com/developer/msbuild/2003″>

<UsingTask TaskName=”BuildTasks.IncrementBuildNumber” AssemblyFile=”BuildTask.dll” />

<PropertyGroup>

حالا تگ <Target Name=”BeforeBuild“> را پیدا کنید. این تگ باید در اواخر فایل باشد.

نکته! این قسمت در کد به صورت کامنت است و برای استفاده باید از حالت کامنت خارج شود. داخل این تگ Target باید تگ زیر را اضافه کنید :

<IncrementBuildNumber AssemblyFileLocation=”$(MSBuildProjectDirectory)PropertiesAssemblyInfo.cs” />

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

<!– To modify your build process, add your task inside one of the targets below and uncomment it.

Other similar extension points exist, see Microsoft.Common.targets.–>

<Target Name=”BeforeBuild”>

<IncrementBuildNumber AssemblyFileLocation=”$(MSBuildProjectDirectory)PropertiesAssemblyInfo.cs” />

</Target>

<Target Name=”AfterBuild”>

</Target>

</Project>

نکته! قسمت های Bold شده برای راهنمایی شما است، تا به راحتی بتوانید محل تغییرات را پیدا کنید.

بسیار خوب. تغییرات را ذخیره کنید. حالا فایل DLL که در ابتدای این مقاله دانلود کردید در کنار فایل پروژه کپی کنید.

نکته! باید فایل DLL کامپایل شده را در کنار فایل پروژه که با پسوند .csproj است کپی کنید. کپی این فایل در کنار فایل solution برنامه که با پسوند .sln است بی فایده خواهد بود. همچنین در زمان انجام این تغییرات پروژه در ویزوال استودیو نباید باز باشد.

بسیار خوب همه کارها انجام شد. حالا پروژه نمونه را در ویژوال استودیو باز کنید. در زمان باز شدن پروژه ویزوال استودیو یک پیغام هشدار به شما می دهد که ممکن است این پروژه حاوی دسوراتی است که ممکن است کامپیوتر شما را تحت تاثیر قرار دهد. در اینجا این پیغام را نادیده بگیرید و گزینه Load Project Normally را انتخاب کنید.

در صورتی که همه کارها را به درستی انجام داده باشید از این پس بعد از هر بار Build برنامه شماره Build , Revision به صورت خودکار افزایش پیدا می کند. شما می توانید در فایل AssemblyInfo.cs مشخصات نسخه برنامه را مشاهده کنید.

در آخر هم با استفاده از کد زیر می توانید شماره نسخه برنامه را در کد بگیرید :

static public System.Version AssemblyVersion

{

get

{

return System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;

}

}

پروژه نمونه را هم از اینجا می توانید دریافت کنید: دانلود

موفق و پیروز باشید.

Vote on iDevCenter

Microsoft C Sharp, ابزارهای برنامه نویسی , , , , , , ,

یک جستجوی ساده با استفاده از عملگر Like

۲۱ بهمن ۱۳۸۷

سلام

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

در این مطلب جدید با عنوان یک جستجوی ساده، قصد دارم پیاده سازی یک جستجوی ساده را برای شما توضیح بدهم.

ابتدا از منوی Data->Add New Data Source با پایگاه داده مورد نظر ارتباط برقرار می کنیم، در این مقاله من از پایگاه داده موجد در SQL Server استفاده کردم، شما بنا به نیاز می توانید از پایگاه داده مورد نظر خودتان استفاده کنید.بعد از برقراری اتصال به پایگاه داده در Solution Explorer بر روی فایل Dataset ساخته شده که دارای پسوند xsd است دبل کلیک کنید تا Dataset Designer نمایش داده شود.

solutionexplorer

datasetdesigner

همانطور که مشاهده می کنید جداول شما در این قسمت نمایش داده می شوند، هر جدول دارای یک Table Adaper است که Query های مورد نظرمان را در این قسمت اضافه می کنیم. در اینجا ما قصد داریم یک Query با دستورات SQL برای جستجو بنویسیم.برای این منظور روی Table Adapter جدول مورد نظر راست کلیک کنید و گزینه AddQury را انتخاب کنید. در پنجره Wizard گزینه اول را تیک بزنید و سپس Next و در پنجره جدید باز هم گزینه اول را انتخاب کنید و مجددا Next.

chosequerytype

chosequerytype

بعد از این کار نوبت نوشتن دستورات SQL برای Query مورد نظرمان است. برای این کار ما از دستور Select و عملگر Like استفاده خواهیم کرد.

ساختار دستورات Sql ما به شرح زیر است.

Select Fields name Or * from Table name where Key Field like ‘%’+@SearchParam+’%’

بررسی این ساختار:

Select : کلمه کلیدی در دستورات Sql است که برای انتخاب رکورد ها استفاده می شود.

Fields name : بعد از دستور Select باید نام فیلدهای جدول مورد نظر است، در صورت امکان بهتر است فقط نام فیلدهایی را بنویسید که به آنها نیاز دارید، مثلا اگر جدول شما ۲۰ فیلد دارد و شما فقط به مقدار بعضی از فیلدها نیاز دارید، نام فیلد های مورد نظر را بنویسید و با کاما ‘,’ آنها را از هم جدا کنید، در غیر این صورت استفاده از کاراکتر * به معنی فراخوانی تمام فیلدها خواهد بود.

From : کلمه کلیدی است که بعد از آن نم حدول مورد نظر که قصد دارید جستجو بر روی انجام شود.

Table name : نام جول مورد نظر

where : کلمه کلیدی است که برای تعیین شرط در دستورات Sql استفاده می شود.

Key Name : نام فیلدی است که قصد دارید بر اساس آن یک شرط جستجو تعریف کنید

Like : کلمه کلیدی یا به عبارتی نوعی عملگر است که برای جستجوی موردی استفاده می شود، به طور مثال زمانی که شرط جستجو مثلا al باشد کلمه ali نیز جزء نتایج جستجو خواهد آمد.

کاراکتر های % : استفاده از این کاراکتر ها قبل و بعد از مقدار مورد نظر در عملکرد دستور Like تثیر می گذارد، عملکرد این کرارکتر ها همانند کاراکتر * در زمان جستجوی فایلها در ویندوز است.

SearchTerm@ : در Query  هایی که در Table Adapter ایجاد می کنیم می توانیم مقدار های متغیر را که قصد داریم از طریق کد مقدار دهیم به صورت پارامتر در Query تعریف کنیم. پارامتر ها باید با استفاده از کاراکتر @ تعریف شوند.

با توجه به توضیحات بالا دستورات Qury ما برای این برنامه نومنه به شکل زیر است.

SELECT OrderNo, CarGroup, CarNo, CarType, UserOffice, DamagePlace, InDate, CoveredReport FROM dbo.DastooreKar where CarType like ‘%’ + @CarType + ‘%’

query

بعد از نوشتن Query مورد نظرتان با فشردن Next به مرحله بعدی می رویم.

در این قسمت نام متدها را مشخص می کنید که دقیقا با همین نام بعدا در کد فراخوانی می کنیم.

methodnames

در ادامه Next و در صورت صحیح بودن همه موارد ذکر شده باید به نتیجه مشابه شکل زیر دست دست یافته باشید:

finalstep

حالا بریم کد بنویسیم:D ، البته قبل از کد نویسی از قسمت Datasource جدول مذکور را با Drag&Drop روی فرم بندازید تا کنترل های مربوطه به فرم اضافه شوند، علاوه بر اینها یک کنترل TextBox هم به فرم اضافه کنید.

form

حالا در رویداد TextChanged کنترل TextBox کد زیر را می نویسیم:

TamiratNIDCDataSetTableAdapters.DastooreKarTableAdapter ds_Dastoorekar = new TamiratNIDCDataSetTableAdapters.DastooreKarTableAdapter();

ds_Dastoorekar.FillByCarType(tamiratNIDCDataSet.DastooreKar,textBox1.Text);

مراحل انجام کار بسیار ساده است، ابتدا یک Instance از Table Adapter جدول مورد نظر ساختیم، سپس با استفاده از متد FillByCarGroup که اگر به خاطر داشته باشید در زمان ایجاد Query جدید معرفی کردیم، جستجو را انجام میدهیم.

اگر همه کارها را درست انجام داده باشید، بعد از اجرای برنامه از نتایج جستجو لذت ببرید:D

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

موفق و پیروز باشید

Vote on iDevCenter

Microsoft C Sharp, SQL Server , , , , , , ,