X
تبلیغات
پیکوفایل

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




CREATE PROCEDURE [dbo].[sp_SQLNotify]
   @From varchar(100) ,
   @To varchar(100) ,
   @Subject varchar(100)=" ",
   @Body varchar(4000) = "Motley Fool Inc."
/*********************************************************************

This stored procedure takes the above parameters and sends an e-mail.
All of the mail configurations are hard-coded in the stored procedure.
Comments are added to the stored procedure where necessary.
Reference to the CDOSYS objects are at the following MSDN Web site:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/_cdosys_messaging.asp

***********************************************************************/
   AS
   Declare @iMsg int
   Declare @hr int
   Declare @source varchar(255)
   Declare @description varchar(500)
   Declare @output varchar(1000)

--************* Create the CDO.Message Object ************************
   EXEC @hr = sp_OACreate 'CDO.Message', @iMsg OUT

--***************Configuring the Message Object ******************
-- This is to configure a remote SMTP server.
-- http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/_cdosys_schema_configuration_sendusing.asp
   EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendusing").Value','2'
-- This is to configure the Server Name or IP address.
-- Replace MailServerName by the name or IP of your SMTP Server.
   EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value', 'نام سرویس دهنده ایمیل'

-- Save the configurations to the message object.
   EXEC @hr = sp_OAMethod @iMsg, 'Configuration.Fields.Update', null

-- Set the e-mail parameters.
   EXEC @hr = sp_OASetProperty @iMsg, 'To', @To
   EXEC @hr = sp_OASetProperty @iMsg, 'From', @From
   EXEC @hr = sp_OASetProperty @iMsg, 'Subject', @Subject

-- If you are using HTML e-mail, use 'HTMLBody' instead of 'TextBody'.
   EXEC @hr = sp_OASetProperty @iMsg, 'TextBody', @Body
   EXEC @hr = sp_OAMethod @iMsg, 'Send', NULL

-- Sample error handling.
   IF @hr <>0
     select @hr
     BEGIN
       EXEC @hr = sp_OAGetErrorInfo NULL, @source OUT, @description OUT
       IF @hr = 0
         BEGIN
           SELECT @output = '  Source: ' + @source
           PRINT  @output
           SELECT @output = '  Description: ' + @description
           PRINT  @output
         END
       ELSE
         BEGIN
           PRINT '  sp_OAGetErrorInfo failed.'
           RETURN
         END
     END

-- Do some error handling after each step if you need to.
-- Clean up the objects created.
   EXEC @hr = sp_OADestroy @iMsg
  
   PRINT 'Mail Sent!'
GO

اگر تا حالا با پورتال سورس باز دات نت نیوک dotnetnuke  کار کرده باشید . حتما متوجه شده اید که ساختار ماژول نویسی آن مبتنی بر سه لایه است .  

 

 

اما آنچه که من می خواهم در این مطلب بیان کنم ، ماژول نویسی بر پایه orm  و بخصوص Entity Framework  است . ما می دانیم یکی از مهمترین محاسن این فریم ورک این است که ما را از شر برخی کد نویسیها بخصوص در لایه دیتا و لایه business  خلاص می کند ، علاوه بر آن دقت تولید کدهای ما نیز بالاتر می شود .

برای اینکار مراحل زیر را دنبال می کنیم . ابتدا پورتال dotnetnuke  را دانلود کنید من در اینجا نسخه 6 این پورتال رانصب کرده ام اکنون پرتال را در کامپایلر vs  باز می کنیم .

اکنون روی پوشه App_Code کلیک راست کنید و گزینه فولدر جدید را انتخاب کنید . 

 

 

 

فولدر ایجاد شده را EFNotes  نام گزاری کنید . 

 

اکنون فولدر DesktopModules   را باز کنید و بر روی آن کلیک راست کنید و فولدر جدیدی به همان نام EFNotes  در آن بسازید . 

 

فایل Web.config  را باز کنید و قسمت compilation را پیدا کنید و در زیر مجموعه codeSubDirectories فولدر جدید ایجاد شده را اعلام کنید مانند تصویر زیر :   

  

 

اکنون پرتال را اجرا کنید و به قسمت با یوزر و پاسورد میزبان وارد شوید ، سپس در قسمت میزبان host  گزینه  SQL  را برای اجرای اسکریپت ایجاد جدول انتخاب کنید و اسکریپت زیر را اجرا کنید تا جدول مورد نظر ساخته  شود . 

 

CREATE TABLE [dbo].[EF_Notes](

    [ID] [int] IDENTITY(1,1) NOT NULL,

    [Date] [datetime] NULL,

    [Message] [nvarchar](500) NULL,

 CONSTRAINT [PK_EF_Notes] PRIMARY KEY CLUSTERED

(

    [ID] ASC

)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

) ON [PRIMARY

 

پس از ایجاد جدول بالا دوباره به سورس بر می گردیم .در فولدر EFNotes  موجود در بخش APP_Code  کلیک راست می کنیم . 

 

 

 

و گزینه اضافه کردن آیتم جدید یعنی Add New Item  را انتخاب می کنیم . از پنجره باز شده گزینه

ADO.NET Entity Data Model  را انتخاب می کنیم . و کلید Add  را کلیک می کنیم . اکنون در پنجره باز شده Generate from database را انتخاب کنید . و کلید next  را بزنید . در این مرحله باید گزینه SitSqlServer  را انتخاب کنید .

 

  مجددا دکمه next را کلیک کنید و به مرحله بعدی بروید در این مرحله از بخش جدولها ، جدول  EF_Notes  را که قبلا ایجاد کرده ایم را انتخاب کنید . و بر روی دکمه Finish  کلیک کنید .اکنون برروی فایل ایجاد شده دابل کلیک کنید تا مدل خود را مطابق شکل زیر ببینید .  

 

 

 

اکنون مدل داده های ما آماده است . پس به فولدر DesktopModules  بر می گردیم و برروی فولدر EFNotes که ایجاد کرده بودیم کلیک راست می کنیم و گزینه Add New Item  را انتخاب می کنیم

 

 

 

از پنجره ظاهر شده گزینه Web User Control را انتخاب می کنیم نام فایل را view .ascx  می گزاریم مانند شکل زیر :   

 

  

دکمه Add  را کلیک کنید تا فایل مورد نظر ایجاد شود . کد زیر را در فایل جایگزین کنید . 

<%@ Control Language="C#"

AutoEventWireup="true" CodeFile="View.ascx.cs"

Inherits="DotNetNuke.Modules.EFNotes.View"

%> 

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

 

 

 

  اکنون گزینه طراحی Design  را کلیک می کنیم و مانند شکل زیر عمل می کنیم : 

 

 

 

 

سپس گزینه تنظیمات Configure Data Source  را انتخاب می کنیم . شما از گزینه اول  Name Connection  باید نام ارتباطی Ef  که قبلا ایجاد کرده ایم را انتخاب کنید و دکمه next  را کلیک کنید اکنون در این مرحله نام ماهیت یا در واقع نام مدل جدول را انتخاب کنید و سپس فیلدهای مورد نظرتان را از این قسمت انتخاب کنید ما در اینجا گزینه اول را انتخاب می کنیم یعنی تمام فیلدهای جدول را انتخاب کرده ایم و برای ایجاد دستورات حذف و تغییر و اضافه سه گزینه پایین را تیک می زنیم .    

 

 

اکنون یک کنترل Listview    را از جعبه ابزار انتخاب کنید و بر روی فایل قرار دهید . در اینجا شما  

باید منبع داده یعنی DataSource  را همان EntityDataSource  انتخاب کنید . پس گزینه Configure ListView  را انتخاب کنید  گزینه های  

Enable Editing ,inserting,deleting  را انتخاب کنید .

   

 

 

دکمه ok  را کلیلک کنید . اکنون پروژه را ذخیره کنید .

نکته مهم برای استفاده از Entity Framework  در dotnetnuke  شما نیاز به

Entity FrameWork Model Adapter  دارید که باید از لینک زیر آن را دانلود کنید . و سپس فایلهای مرجع زیر را به پروژه اضافه کنید .  

 

 

 

اکنون باید تنظیمات مربوط به مدل ایجاد شده در APP_Code را اعمال کنیم برای اینکار از فولدر APP_Code t فولدر EFNotes باید فایل کد سی شارپ مدل را باز کنید .   

 

 

در قسمت تعریف کلاس مدل جایی که نام کلاس تعریف می شود و پس از آن ارث بری تعریف می شود

global::System.Data.Objects.ObjectContext را حذف کنید و بجای آن عبارت زیر را بنویسید

BrandonHaynes.ModelAdapter.EntityFramework.DotNetNukeObjectContext

 

 

 

اکنون کد نویسی تمام شده ، پروژه را کامپایل کنید تا اجرا شود و سپس با یوزر hostوارد شوید . 

از host شما باید گزینه extensions و سپس گزینه create new module را انتخاب کنید . 

 

 

 

اکنون ماژول شما آماده است و کافیست تنظیمات آن را در dotnetnuke  انجام دهید . 

  
 
  

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

همه ما با واژه کارآفرینی مواجه شده ایم ، مفهوم‌ و ایدة‌ کارآفرینی‌، مفهومی‌ جدید و متعلق‌ به‌ عصر حاضر نمی‌باشد. این‌ مفهوم‌ از قبل‌ از قرون‌ وسطی‌ مطرح‌ بوده‌که‌ در طول‌ زمان‌ دچار تحولاتی‌ نیز شده‌ است‌. به‌ طور خلاصه‌، کارآفرین‌ سازمان‌ دهنده‌ و فعال‌ کننده‌ یک‌ واحد اقتصادی‌ (یاغیر اقتصادی‌) و کسب‌ و کار به‌ منظور دستیابی‌ به‌ سود (دستاوردهای‌) شخصی‌ (یا اجتماعی‌) است‌.

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

1-کارمند کارآفرین در واقع کارمندی است ، که سازمان محل کار را متعلق به خود می داند و برای ایجاد ارزش افزوده در سازمان تلاش می کند

2-دارای خلاقیت است و از انجام کارهای تکراری متنفر است ، اگر قرار است کارمندی را برای امور عادی استخدام کنید بهتر است یک کارمند معمولی استخدام کنید ، اما اگر می خواهید در بخش تولید و یا توسعه و غیره که به ارزش افزوده سازمان مرتبط است فردی را استخدام کنید بهتر است کارمند کارآفرین استخدام کنید .

3-از نوآوری نمی ترسد ، کارمند کارآفرین همواره به دنبال کسب تجربه های جدید و یادگیری نوآرویهای جدید است ، سعی می کند همیشه خود را به روز کند .

4-نیازی به هل دادن ندارد ، کارمند کارآفرین فقط کافیست اهداف را برایش مشخص کنید ، او بقیه راه را بلد است و تا آخرش خواهد رفت .

5-قابل اعتماد است !، خیلی مهم است مخصوصا در فضای سنتی جامعه ما ، به نظر من برای اینکه این کارمند مفید باشد باید به او اعتماد کنید .

6-از ابزارهای کنترلی شدید ، بیزار است ، این نوع کارمندان از اینکه همانند دیگر کارمندان شدیدا تحت کنترل باشند به شدت بیزار هستند و می خوهند کمی آزادی عمل داشته باشند . حتما به این نکته توجه کنید .

7-اهل زیر آب زدن نیستند ، این نوع کارمندان به اهداف خود فکر می کنند ، و حوصله زیر آب زنی و خراب کاری ندارن ، اما بنا بر شواهدی دارای اخلاق خاص هم هستند ،

8-برای رسیدن به درآمد بالا فکر می کنند ، اما نه بر اساس اضافه کاری و ساعت و ... بلکه بر اساس کارهای خوب و قابل لمس و واقعی

9-نسبت به سلسه مراتب سازمانی هم حساسیت دارند مثلا برای ارتباط با بالاترین فرد سازمان نباید دچار محدودیت شوند .

10-امکانات می خواهند ، برای انجام کارهای خود نیاز به بسترها و امکانات دارند ، باید فراهم شود در غیر اینصورت ، کارآفرین نخواهند بود و صرفا کارمند معمولی خواهند شد.

11-از گفتن جمله بلد نیستم نمی ترسند !!! بله درست خواندید این افراد ادعای بلد بودن همه چیز را ندارند ، بلکه اگر چیزی را بلد نیستند خیلی راحت اعتراف می کنند که در شرایط فعلی بلد نیستند اما اگر به آنها زمان بدهیم به بهترین شکل ممکن پاسخ را پیدا می کنند .

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

13-در محیط کار فقط به کار فکر می کنند ، پس مواظب باشید آنها را از محیط کارمندان وقت تلف کن جدا کنید چون کارایی آنها را تحت تاثیر قرار می دهد

 

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

 

اما شرکتهای کارمندی !

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