نمایش اعداد بصورت حروف فارسی
در آخرین پروژه ای که کار میکردم نیاز بود که داده های عددی را بصورت کاراکترهای فارسی یا بهتر بگویم به حروف فارسی نمایش بدهم . تا به حال این کار را در خیلی از نرم افزارها با استفاده از توابعی که با زبانهای سطح بالاتر مثل c# یا Delphi و ... نوشته شده بود انجام می دادیم اما اینجا نیاز به این تبدیل تا سطح پایگاه داده پایین اومده بود .
فکر کردم شاید دوستان دیگری هم به همچینین موردی برخورد کنند در زیر این تابع آورده شده است.
همانطور که میدانید اصطلاحا به توابع در پایگاه داده UDF یا User Define Function میگویند. در زیر نحوه استفاده و خروجی تابع را مشاهده میکنید.
صدا کردن تابع :
Select dbo. NumberToPersianWords(654321)
خروجی تابع : ششصد و پنجاه و چهار هزار و سیصد و بیست و یک
مثال استفاده در Query
Select FactorNumber , dbo. NumberToPersianWords(Amount)
From Factor
Create FUNCTION dbo.NumberToPersianWords(@Number Numeric (38, 0))
RETURNS VARCHAR(8000)
AS BEGIN
DECLARE @inputNumber VARCHAR(38)
DECLARE @NumbersTable TABLE (number CHAR(2), word VARCHAR(10))
DECLARE @outputString VARCHAR(8000)
DECLARE @length INT
DECLARE @counter INT
DECLARE @loops INT
DECLARE @position INT
DECLARE @chunk CHAR(3) -- for chunks of 3 numbers
DECLARE @tensones CHAR(2)
DECLARE @hundreds CHAR(1)
DECLARE @tens CHAR(1)
DECLARE @ones CHAR(1)
IF @Number = 0 Return 'صفر'
-- initialize the variables
SELECT @inputNumber = CONVERT(varchar(38), @Number)
, @outputString = ''
, @counter = 1
SELECT @length = LEN(@inputNumber)
, @position = LEN(@inputNumber) - 2
, @loops = LEN(@inputNumber)/3
-- make sure there is an extra loop added for the remaining numbers
IF LEN(@inputNumber) % 3 <> 0 SET @loops = @loops + 1
-- insert data for the numbers and words
INSERT INTO @NumbersTable SELECT '00', ''
UNION ALL SELECT '01', 'يك' UNION ALL SELECT '02', 'دو'
UNION ALL SELECT '03', 'سه' UNION ALL SELECT '04', 'چهار'
UNION ALL SELECT '05', 'پنج' UNION ALL SELECT '06', 'شش'
UNION ALL SELECT '07', 'هفت' UNION ALL SELECT '08', 'هشت'
UNION ALL SELECT '09', 'نه' UNION ALL SELECT '10', 'ده'
UNION ALL SELECT '11', 'يازده' UNION ALL SELECT '12', 'دوازده'
UNION ALL SELECT '13', 'سيزده' UNION ALL SELECT '14', 'چهاده'
UNION ALL SELECT '15', 'پانزده' UNION ALL SELECT '16', 'شانزده'
UNION ALL SELECT '17', 'هفده' UNION ALL SELECT '18', 'هيجده'
UNION ALL SELECT '19', 'نوزده' UNION ALL SELECT '20', 'بيست'
UNION ALL SELECT '30', 'سي' UNION ALL SELECT '40', 'چهل'
UNION ALL SELECT '50', 'پنجاه' UNION ALL SELECT '60', 'شصت'
UNION ALL SELECT '70', 'هفتاد' UNION ALL SELECT '80', 'هشتاد'
UNION ALL SELECT '90', 'نود'
WHILE @counter <= @loops BEGIN
-- get chunks of 3 numbers at a time, padded with leading zeros
SET @chunk = RIGHT('000' + SUBSTRING(@inputNumber, @position, 3), 3)
IF @chunk <> '000' BEGIN
SELECT @tensones = SUBSTRING(@chunk, 2, 2)
, @hundreds = SUBSTRING(@chunk, 1, 1)
, @tens = SUBSTRING(@chunk, 2, 1)
, @ones = SUBSTRING(@chunk, 3, 1)
-- If twenty or less, use the word directly from @NumbersTable
IF CONVERT(INT, @tensones) <= 20 OR @Ones='0' BEGIN
SET @outputString = (SELECT word
FROM @NumbersTable
WHERE @tensones = number)
+ CASE @counter WHEN 1 THEN '' -- No name
WHEN 2 THEN ' هزار ' WHEN 3 THEN ' ميليون '
WHEN 4 THEN ' بيليون ' WHEN 5 THEN ' تريليون '
WHEN 6 THEN ' كادريليون ' WHEN 7 THEN ' كنتيليون '
WHEN 8 THEN ' سيكستيليون ' WHEN 9 THEN ' سپتيليون '
WHEN 10 THEN ' اكتيليون ' WHEN 11 THEN ' نونيليون '
WHEN 12 THEN ' دسيليون ' WHEN 13 THEN ' آندسيليون '
ELSE '' END
+ @outputString
END
ELSE BEGIN -- break down the ones and the tens separately
SET @outputString = ' '
+ (SELECT word
FROM @NumbersTable
WHERE @tens + '0' = number)
+ ' و '
+ (SELECT word
FROM @NumbersTable
WHERE '0'+ @ones = number)
+ CASE @counter WHEN 1 THEN '' -- No name
WHEN 2 THEN ' هزار ' WHEN 3 THEN ' ميليون '
WHEN 4 THEN ' ميليارد ' WHEN 5 THEN ' تريليون '
WHEN 6 THEN ' كادريليون ' WHEN 7 THEN ' كنتيليون '
WHEN 8 THEN ' سيكستيليون ' WHEN 9 THEN ' سپتيليون '
WHEN 10 THEN ' اكتيليون ' WHEN 11 THEN ' نونيليون '
WHEN 12 THEN ' دسيليون ' WHEN 13 THEN ' آندسيليون '
ELSE '' END
+ @outputString
END
-- now get the hundreds
IF @hundreds <> '0' BEGIN
SET @outputString = (SELECT word
FROM @NumbersTable
WHERE '0' + @hundreds = number)
+ ' صد '
+ @outputString
END
END
SELECT @counter = @counter + 1
, @position = @position - 3
END
-- Remove any double spaces
SET @outputString = LTRIM(RTRIM(REPLACE(@outputString, ' ', ' ')))
SET @outputstring = UPPER(LEFT(@outputstring, 1)) + SUBSTRING(@outputstring, 2, 8000)
RETURN @outputString -- return the result
END
GO
GRANT EXEC on DBO.NumberToPersianWords TO PUBLIC
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
موفق باشید
اين روزها طراحي گرافيكي صفحات در شرپوينت بسيار گسترش يافته و اكثر سايتهاي شرپوينتي ديگر صورت قديمي استاندارد شرپوينت را ندارند .در اين خصوص ميتوانيد پست آرش را در زمينه سايتهاي برتر طراحي شده با شرپوينت را اينجا بخوانيد .
همانطور كه ميدانيد استفاده از CSS در طراحي گرافيكي سايتها بسيار متداول است در اين پست چند ترفند در خصوص دستكاري كردن كلاسهاي خود شرپوينت عنوان ميكنم .
ابتدا با قرار دادن تكه كد زير در صفحه ASPX ميتوانيد متوجه شويد كه اسم كلاس مورد نظر هر كدام از اجزاء صفحه چيست ؟
<script language="jscript">
function ClassInfo()
{
if (window.event.srcElement.className != null)
{
stsclass.innerText = window.event.srcElement.className;
}
else
{
stsclass.innerText = "";
}
}
window.document.body.onmouseover = ClassInfo;
</script>
<div style="border-style:solid;border-width:1px; width: 281px; height: 34px;
position: absolute; left: 286px; top: 41px; z-index:15; padding-left:4px;
padding-right:4px; padding-top:2px; padding-bottom:2px; background-color:#EEEEF4">
position: absolute; left: 286px; top: 41px; z-index:15; padding-left:4px;
padding-right:4px; padding-top:2px; padding-bottom:2px; background-color:#EEEEF4">
<p id="stsclasstitle"><font face="Tahoma" id="stsclasstitle">Classname: </font>
<font face="Tahoma"id="stsclass"> </font>
</p></div>بعد از انجام اين كار با بردن ماوس روي هر يك از اجزاء نام كلاس CSS آنها طبق شكل زير نمايش داده ميشود.

نكته مهمي كه ميتوان اشاره كرد اين است كه تغيير مستقيم در كلاسهاي CSS شرپوينت موجب ميشود كه اين تغييرات در كل سايتها و زير سايتها اعمال شود حال براي جلوگيري از اين تاثير ميتوان با استفاده از ترفند CSS اين تغييرات در بصورت موقتي در سطح يك صفحه انجام داد. اين كار با استفاده از keyword !important در CSS انجام ميشود استفاده از اين keyword به شما اين امكان را ميدهد كه تعاريف قبلي اين كلاسها را به نوعي رونويسي كنيد . براي نمونه در زير فونت CSS كلاسي با نام SampleClass تغيير پيدا كرده است.
<style type="text/css">
.SampleCSSClass
{
font-family:Tahoma !important;
}
</style>حال ميتوانيد كلاسهاي مورد نظر را تغيير دهيد . اگر خواستيد فايلهاي CSS شرپوينت را تغيير دهيد يا ببينيد ميتوانيد در مسيرهاي زير آنها را پيدا كنيد :
Drive:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\1033\STYLES
Drive:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\PublishingLayouts\en-us
اطلاعات كاملي در خصوص كلاسهاي CSS در WSS را ميتوانيد در اين آدرس مطالعه كنيد.
http://msdn.microsoft.com/en-us/library/ms438349.aspx
موفق باشيد.
آشنايي با مدارک مايکروسافت در تکنولوژي شرپوينت- Microsoft SharePoint Certification Overview
نزديک به دو سال قبل مايکروسافت نسل جديدي از مدارک فني خود را با تکيه بر تکنولوژيهاي سرور خود معرفي کرد. اين سري مدارک در سه سطح متخصصان فناوري اطلاعات را طبقه بندي ميکند . مدارک این سه سطح به ترتيب MCTS , MCM , MCA نام دارد . در اين مطلب سعي ميکنيم مطالبي مرتبط با مدارک مايکروسافت در حوزه شرپوينت ارائه کنيم .

در حال حاضر مدارک مایکروسافت در محصولات حوزه شرپوينت شامل سه عنوان زير است :
§ Microsoft Certified Technology Specialist (MCTS)
§ Microsoft Certified Master (MCM)
§ Microsoft Certified Architect (MCA)
مدرک Microsoft Certified Technology Specialist certification - MCTS

در ابتدايي سطح کارشناسان IT با توجه به محصول يا تکنولوژي تخصصي خودشان و شرکت در آزمون مربوطه موفق به کسب مدرک Microsoft Certified Technology Specialist (MCTS) ميشوند .در حوزه شرپوينت آزمونهاي اين مدارک با توجه به دو محصول Windows SharePoint Service 3.0 و Microsoft Office SharePoint Server 2007 ترتيب داده شده است و در هر يک از اين محصولات در دو بخش توسعه و مديريت آزمون برگزار ميشود . با گذراندن يکي از اين چهار آزمون متقاضي به دريافت مدرک MCTS نائل ميشود .
آزمون 70-542
نام رسمي اين آزمون Microsoft Office SharePoint Server 2007 Application Development ميباشد و تمرکز اصلي مطالب اين امتحان بر مفاهيم توسعه برنامه هاي کاربردي بر پايه محصول Microsoft Office SharePoint Server 2007 است . مايکروسافت دو کتاب زير را براي گذراندن اين امتحان پيشنهاد کرده است:
Inside Microsoft Office SharePoint Server 2007
Inside the Index and Search Engines: Microsoft Office SharePoint Server 2007
آزمون 70-630
نام رسمي اين آزمون Microsoft Office SharePoint Server 2007 – Configuration ميباشد و هدف اصلي اين امتحان آزمايش متقاضي در خصوص تسلط وي بر کاربري و مديريت شرپوينت نسخه 2007 است . شرکت کنندگان اين آزمون بايد دانش و تجربه کافي در همه عناوين زير را داشته باشند :
· مفاهيم استقرار
· روشهاي Upgrade از نسخه قبل
· پيکربندي جستجو
· پيکربندي مديريت محتوا
· پيکربندي فرمهاي کسب و کار
· مفاهيم و مديريت هوش تجاري ( BI )
· امنيت
مايکروسافت دو کتاب زير را براي گذراندن اين امتحان پيشنهاد کرده است:
Microsoft Office SharePoint Server 2007 Administrator’s Companion
Inside Microsoft Office SharePoint Server 2007
آزمون 70-541
نام رسمي اين آزمون Microsoft Windows SharePoint Services 3.0 – Application Development ميباشد و
تمرکز اصلي مطالب اين امتحان بر مفاهيم توسعه برنامه هاي کاربردي بر پايه Windows SharePoint Service 3.0 است .
آزمون 70-631
نام رسمي اين آزمون Microsoft Windows SharePoint Services 3.0 – Configuration ميباشد و هدف اصلي اين امتحان تسلط بر کاربري و مديريت بر پايه WSS 3.0 است .
- پيکربندي سرويس دهنده وب IIS
- آشنايي با سرويس Active Directory مايکروسافت
- آشنايي با زيرساختهاي شبکه
- آشنايي با Microsoft Office SharePoint 2007
- درک مطالب وابسته به دات نت 2.0 و ارتباطات آن با شرپوينت ويندوز سرويس 3.0
- آشنايي با Microsoft Internet Security and Acceleration (ISA) Serve
- آشنايي با مفاهيم Network load-balancing براي نرم افزارها و سرويسها
- مديريت پايگاه داده SQL Server 2000-2005
- آشنايي با الگوها و مفاهيم امنيت در شرپوينت سرويس
- آشنايي با تهيه نسخه پشتيبان و بازگرداندن آن در شرپوينت سرويس
مدرک Microsoft Certified Master – MCM
کارشناساني که موفق به کسب هر چهار مدرک MCTS در حوزه شرپوينت شوند به کسب مدرک MCM نائل ميشوند . دارنده مدرک MCM توانايي طراحي ، ساخت ، پيکربندي ، استقرار و پشتيباني محيطهاي پيچيده و بزرگ را با استفاده از MOSS 2007 داراست . جدول زير گزارش تعدادي از داندگان اين مدرک در حوزه هاي مختلف را نمايش ميدهد :
مدرک | تعداد دارندگان |
|
Microsoft Certified Master: Microsoft Exchange Server 2003 Microsoft Certified Master: Microsoft Exchange Server 2007 Microsoft Certified Master: Microsoft Office Communications Server 2007 Microsoft Certified Master: Microsoft Office SharePoint Server 2007 Microsoft Certified Master: Microsoft SQL Server 2008 Microsoft Certified Master: Windows Server 2008 Directory | 150 50 10 8 2 27 |
|
اطلاعات بيشتر را در خصوص Microsoft Certified Master (MCM) ميتوانيد در اينجا مطالعه کنيد .
مدرک Microsoft Certified Architect – MCA

MCA از نظر فني معتبرترين مدرک در تکنولوژي هاي مايکروسافت است و دارندگان اين مدرک از توانايي فني بسيار بالايي برخوردارند و پس از کسب اين مدرک از کلاس جهاني خاصي برخوردار ميشوند و کاملا مورد اعتماد مايکروسافت قرار ميگيرند .
دارندگان اين مدرک اشخاصي هستند که تجربه و تسلط کاملي بر يکي از سري تکنولوژي هاي سرور مايکروسافت دارند و توانايي درک و تفسير نيازهاي کسب و کار و ارائه بهترين تکنولوژي را دارا ميباشند و ميتوانند طراحي هايي تکنولوژيک با مقياسهاي بسيار بزرگ را براي نيازهاي پروژه هاي پيچيده انجام دهند. از مهمترين توانايي اين اشخاص ارائه استراتژي هاي متناسب کسب و کار است در تيمهاي فني به اشخاصي با اين توانايي اصطلاحا معمار خطاب ميشود .
متقاضيان کسب مدرک MCA : SharePoint بايد مدرک Microsoft Certified Master ( MCM ) را کسب نمايند و پس از قبولي برنامه خاص اين مدرک که حتي شامل مصاحبه با کارشناسان و معماران مايکروسافت است موفق به کسب اين مدرک ميشوند البته تعداد دارندگان اين مدرک که از سال 2008 ارائه ميشود نسبت به ساير مدارک مايکروسافت بسيار کم است . جالب است که تعداد دارندگان اين مدرک را در هر يکي تکنولوژيهاي سرور مايکروسافت در جدول زير مشاهده کنيد :
مدرک | تعداد دارندگان |
|
Microsoft Certified Architect: Database Microsoft Certified Architect: Infrastructure Microsoft Certified Architect: Messaging Microsoft Certified Architect: Solutions Microsoft Certified Architect: SharePoint | 18 38 65 77 0 |
|
همانطور که در جدول مقايسه کرديد به دليل جديد بودن اين مدرک هنوز شخصي موفق به دريافت مدرک Microsoft Certified Architect: SharePoint نشده است . اطلاعات بيشتر را در خصوص Microsoft Certified Architect (MCA) ميتوانيد در اينجا مطالعه کنيد .
مراجع :
www.microsoft.com/learning/mcp/sharepoint/2007/default.mspx
Microsoft® Office SharePoint® Server 2007 Certification Paths
www.microsoft.com/learning/mcp/certified.mspx
اکثر تیمهای توسعه نرم افزاری از نظر افراد و نقش آنان ساختار یکسانی دارند اما اين ساختار درتيمهاي شرپوینت کمی متفاوت است زیرا فعاليتهاي مرتبط با پروژه های شرپوينت توسعه و برنامه نويسي تنها نیست ، گاها برخي از پروژه ها اصلا نيازي به برنامه نويسي ندارند . در این مقاله سعی میشود با استفاده از راهنمایی های متدولوژي توليد مایکروسافت (Microsoft Solution Framework) بر افراد تشکيل دهنده يک تيم شرپوينت و نقش هاي آن مروري انجام دهيم .البته شرح نقشها در MSF دارای جزئیات متفاوتی است ، برای آشنايي بیشتر ميتوانيد اين مطلب را مطالعه کنید MSF Team Model Overview .
کلیدی ترین نقش در تیم شرپوينت به عهده مشاور شرپوينت (SharePoint Consultant) است . مشاور شرپوينت آشنايي کاملي با تمامي محصولات و تکنولوژي هاي ارائه شده توسط مايکروسافت دارد و علت آن هم اين است که راه حلهاي او بايد با استفاده از محصولات متفاوت و گسترده مايکروسافت ارائه شود . برای درک بيشتر بايد اشاره کرد که اين مشاور با توجه به نياز پروژه بايد از بين راه حلهاي موجود بهينه ترين راه حل از لحاظ ابزار ، تکنولوژي ، نيازمنديها ، کارآيي ، هزينه License و ... را انتخاب کند. این نقش بايد توانايي تشخيص مسائل کليدي رقابت در کسب و کار پروژه را دارا باشد و بتواند با شناخت از امکانات شرپوينت براي اين مسائل بهترين پاسخ را ارائه دهد.
يک SharePoint Consultant در تيمهاي فروش و بازاريابي نيز وظايفي را مانند تهيه اسناد قبل از فروش و و ارائه راهکارهاي مرتبط با پروژه را به عهده دارد . در برخي از تيمهاي کوچک اين مشاور نقش مديريت پروژه را نيز به عهده ميگيرد . غیر از مشاور چند نقش ديگر نیز در اين پروژه ها فعاليت دارند که در ادامه مروري بر اين نقشها و وظايف آنان در تيمهاي شرپوينت داريم . قابل ذکر است که معمولا در تيمهاي کوچک اعضاي همزمان چند نقش را به عهده ميگيرند .
مدير محصول (Product Manager) :
عموما هدف مدير محصول جلب رضايت مشتري ميباشد . در پروژه هاي شرپوينت اين نقش علاوه بر جلب رضايت مشتري فعاليتهايي براي بازاريابي هاي جديد در محدوده آن پروژه نيز انجام ميدهد شايان ذکر است در MSF نقشي با نام Account Manager وجود دارد که مسئوليت اصلي آن شناخت فرصتهاي جديد فروش در حوزه پروژه و مشتري است. معمولا Account Manager از تکنولوژي مرتبط با پروژه دانش مقدماتي دارد ولي در فرآيندهاي کسب و کار دانش بسيار بالاتري دارد.
توسعه گر شرپوينت (SharePoint Developer) :
يک توسعه گر شرپوينت فردي است که غير از برنامه نويسي بايد مهارتهاي ديگري را مانند برنامه نويسيASP.NET ، JavaScript ، CSS ، HTML داشته باشد . سطح آشنايي يک توسعه گر با مفاهيم گسترده شرپوينت با توجه به نياز پروژه کاملا متفاوت است.
آزمونگر (Tester) :
اين نقش پس از تهيه و توليد محصول شرپوينت تاييدهاي از قبيل کارکرد ، کيفيت و کارآيي را انجام ميدهد. به علت گستردگي محصولات و تکنولوژي هاي استفاده شده در شرپوينت عموما تست پروژهاي توليدي آن به خودي خود از پيچيدگي و سختي خاصي برخوردار است . بر اساس مفاهيم MSF در پروژه هاي بسيار بزرگ نقشي با نام QALead مديريت تست را به عهده ميگيرد. اين نقش وظايفي مثل رسيدگي به Unit Test و جامعيت محصول توليدي تاييد نسخه نهايي و انطباق آن با نيازهاي مطرح شده در تعريف پروژه را به عهده دارد.
گرافيست (Designer) :
بي شک يکي از مهمترين نکات در توليد محصولات نرم افزاري زيبايي و يکپارچگي فرمهاي ورود اطلاعات است . گرافيست علاوه بر ذوق و تجربه در طراحي ، آشنايي خوبي بر ASP.NET تسلط بسيار زيادی بر HTML و CSS دارد.
مدير نشر (Release Manager) :
اين نقش وظيفه نشر و استقرار محصول را به عهده دارد . اين نقش تخصصهاي خاصي را نياز دارد که آشنايي با اجزاء تشکيل دهنده زيرساخت شرپوينت و شبکه آن است . براي اين نقش علاوه بر آشنايي کامل با زير ساخت شرپوينت تسلط بر IIS , SQL , ISA و شبکه بسيار مهم است .