مقدمه
مطمئن هستيم كه حتماً در باره اينترنت شنيده ايد اما براستي اينترنت چه مي باشد؟ بطور بسيار ساده اينترنت مجموعه اي از كامپيوترهاي جهان مي باشد كه تمام آنها به يكديگر متصل هستند. بطور نمونه بعضي از مردم در دانشگاهها و شركتهاي بزرگ هستند كه ۲۴ ساعت به اينترنت متصل مي باشند. در صورتيكه ديگران با استفاده از يك مودم، كامپيوتر خانگي خود را در مدت زمان مخصوصي در روز به اين شبكه متصل مي كنند. بدون توجه به نوع اتصال، هنگاميكه شما متصل باشيد، شما و كامپيوترتان يك جزئي از اينترنت شده و با تمامي ديگر كامپيوترهايي كه در آن لحظه متصل مي باشند ارتباط برقرار كرده ايد.

World Wide Web در جاي خود بسيار لطيفتر و زيباتر است، بطوريكه شامل مجموعه اي از صدها ميليون سند كه هميشه بطور سريع قابل تغيير مي باشند است كه همه آنها در محلي از اينترنت بصورت HTML، PHP، ASP، و بلاخره ASP.Net قرار مي گيرند.

ASP.Net آخرين نسخه «صفحات فعال سرور» — Active Server Pages– تكنولوژي پيشرفته اي از مايكروسافت است كه براي ساخت وب سايتهاي پويا و مبتني بر بانك اطلاعاتي ابداع شده است.

صفحات فعال سرور يا همان ASP يكي از رايج ترين زبانها براي ساخت وب سايتهاي ارتقاء پذير و تعاملي است. بسياري از شلوغ ترين و پربيننده ترين سايتهاي وب در اينترنت از ASP استفاده مي كنند. به عنوان نمونه اي از اين نوع سايتها مي توان به وب سايت شركت هاي Dell، Barnes and Nobel، ۱-۸۰۰-Flowers، و خود سايت مايكروسافت اشاره كرد.

 

ASP.NET و فريم ورك دات نت
ASP.Net بخشي از فريم ورك سراسري دات نت مايكروسافت است، كه حاوي مجموعه اي عظيم از كلاسهاي برنامه نويسي است كه براي پاسخ به هر گونه نياز معقول برنامه نويسان تدارك ديده شده است.

تجارت الکترونیکی

برای تجارت الکترونیک تعاریف زیادی وجود دارد. بر خلاف مباحثی چون تحقیق در عملیات یا کنترل پروژه که دوران رشد و تغییر و تحول خود را طی کرده اند اینترنت و مباحث زاییده ی آن هنوز در حال تغییر هستند و بنا بر این تعاریف آنها نیز در این سیر تحولی در هر دوره از زمان دستخوش دگرگونی می شود. در بین تعاریف موجود از تجارت الکترونیک کاملترین آنها عبارت است از: خرید فروش و تبادل هرگونه کالا خدمات و یا اطلاعات از طریق شبکه های کامپیوتری از جمله اینترنت. این تعریف همانگونه که ملاحظه می کنید بسیار جامع و فراگیر است به گونه ای که مباحثی چون :e-learning ,e-medicine ، e-government و… را نیز تحت پوشش قرار می دهد. و تنها اینترنت را به عنوان ابزار معرفی نمی کند بلکه این عمل را از طریق هر گونه شبکه ی کامپیوتری ممکن می داند.

شاید کمتر کسی تصور می کرد که اختراع رایانه چنان تحولی در زندگی بشر ایجاد کند که تمام ابعاد زندگی وی را تحت تاثیر خود قرار دهد. اولین ثمره‌ی این انقلاب تکنولوژیکی، اینترنت – پدیده‌ای که ایده‌ی شکل‌گیری آن از جنگ جهانی دوم شکل گرفت – بود.شبکه‌های اولیه (آپارنت) دارای host نبودند و تمامی کامپیوترها نقش میزبان را ایفا می‌کردند و در عین‌ حال می

توانستند به حافظه ی یکدیگر دسترسی یابند . با رشد اینترنت و ایجاد شبکه های پیشرفته ی امروزی ، موضوع تکنولوژی اطلاعات یا IT مطرح شد و به‌تدریج تمام مسائل را تحت تاثیر خود قرار داد IT. در مدیریت سازمانی ، تکنولوژی اطلاعات در ساخت ، آموزش از راه دور ، تجارت الکترونیکی ، پیشرفتهای سخت افزاری و.. .از جمله موضوعات مطرح در زمینه‌ی این فن‌آوری جدید می‌باشند.

همانطور که ذکر شد تجارت الکترونیک نیز از جمله ابداعات نوین بشری است که در دهه اخیر، نقش تعیین‌کننده‌ای در تمامی انواع تجارت و معاملات بازی کرده‌است. تجارت الکترونیک در واقع به معنای فروش کالا و خدمات بصورت Online و از طریق اینترنت می‌باشد. به بیان دیگر تجارت الکترونیک، از قابلیت‌های اینترنت برای ارتقا و بهبود فرآیندهای تجاری استفاده می‌کند.

انواع مدلهای این شکل جدید تجارت شامل G2G, G2C, B2B, C2C, B2C و…،تمامی اجزای یک جامعه اعم از افراد عادی تا ارگان‌های بزرگ دولتی را به یکدیگر پیوند داده است. C نمایانگر خریدار, Bنمایانگر شرکت‌های خصوصی وG نشان‌دهنده ارگان‌های دولتی است. مدل C2C در واقع همان مزایده Online است که قابلیت مبادله کردن هر نوع کالای مورد توافق طرفین را دارد.طرفین این معامله هر دو از افراد عادی هستند. مدلهای B2B , B2C نیز قابلیت ارائه هر نوع محصولی را بر وب دارا هستند. در مدل B2B دو شرکت به مبادله تجاری با یکدیگر می پردازند و مدل B2C امکان تجارت الکترونیک را بین یک شرکت و یک مشتری را فراهم میکند. با توجه به دولتی بودن بیشتر خدمات در ایران و امکان ابتکار عمل بیشتر آنها ، پیاده سازی مدل G2G که تبادل کالا و خدمات میان نهادهای دولتی را امکان‌پذیر می‌سازد را محتمل‌تر می‌نماید.

در تمامی سیستم‌های یاد شده اجزای مشترکی وجود دارد که تشکیل‌دهنده بدنه‌ی اصلی آنها هستند. ایجاد یک سایت به عنوان فروشگاه الکترونیکی بر روی اینترنت ، طراحی هدف و یک برنامه استراتژیک برای شروع و ادامه کار فروشگاه ،پیروی و استفاده از اصول و روشهای مناسب بازاریابی در اینترنت ، ایجاد زیرساخت‌های امنیتی برای محافظت سایت و ایمن سازی مراحل مبادله ی اطلاعات ، انتخاب شیوه ی مناسب پرداخت در اینترنت ، شیوه های جدید توزیع کالا ، انتخاب سرور و host مناسب و … از ارکان جدا‌ ناشدنی این شیوه‌ی نوین تجارت می باشند که در مدل‌های ذکر شده به تناسب نقش پررنگ‌تر یا کمرنگ‌تری می‌یابند.
اما در بعد دیگر پیاده‌سازی و استفاده از این فن‌آوری جدید نیازمند ایجاد بسترهای فکری و فرهنگی جهت پذیرش آن از طرف جامعه، رفع موانع حقوقی و قانونی و تامین پیش ‌نیازهای سخت‌ افزاری و نرم‌افزاری می باشد.. به عنوان مثال Server یا Network پشتیبانی‌کننده‌ی مناسب , سیستم پرداخت متناسب در کشور و همچنین سرعت بالای دسترسی به شبکه از ملزومات فنی یک تجارت الکترونیک محسوب میشوند.
یک فروشگاه اینترنتی دارای امکانات ویژه ای است :
• بر خلاف فروشگاه‌های واقعی فردی به نام فروشنده در آن وجود ندارد.
• ساعات کار آن شبانه روزی و در تمام ایام هفته است.
• مشتری‌های آن از تمام نقاط دنیا و با فرهنگ‌ها و سلایق متفاوتی هستند.
• به علت ارتقاء قابلیت‌های فنی محیط (اینترنت) تولیدکنندگان می‌توانند به صورت کاراتر و موثرتر به معرفی و عرضه‌ی محصولات خود بپردازند.
• پست الکترونیکی یک شیوه‌ی کارا در بازاریابی مستقیم ( direct marketing ) به شمار می‌آید.
• از طریق گروه‌های خبری ( News Groups ) و گروه‌های بحث و تبادل نظر( discussion groups ) امکان ایجاد رابطه‌ای تعاملی بین تولیدکنندگان و مصرف‌کنندگان و جود دارد. …
بهره‌گیری از هریک از این امکانات نیازمند ایجاد ساختارهای فرهنگی لازم چه در میان مشتریان و چه در میان صاحبان بازار می‌باشد.

یکی از بخشهای مهم تجارت الکترونیک سیستم پرداخت است. برای پرداختی به دور از اشکال بر شبکه جهانی وب, یک سیستم پرداخت می بایست علاوه بر دارا بودن امکانات تکنولوژیکی مناسب از قبیل کارت‌های هوشمند،کارت‌های اعتباری , چک‌های الکترونیکی ، پول‌های الکترونیکی و… باید از لحاظ امنیتی نیز قابل اطمینان باشد . استفاده از شیوه های مبهم سازی اطلاعات مبادله شده‌ی کارت‌های اعتباری ، استفاده از امضای الکترونیکی ، استفاده از پروتکل‌های SSL و SET ،

استفاده از تکنیک‌های رمزگذاری ( Encryption ) ، استفاده از کیف‌های الکترونیکی دارای نگهبان و… از جمله روش‌های امنیتی مطرح در این زمینه می‌باشد. طراحی وب سایت مربوط با توجه به سلایق و نیازهای مشتریان از عوامل مهم در موفقیت یک تجارت الکترونیک است. بدیهی است که ابتکار فروشنده در بکار بردن راهکارهای مناسب برای متقاعد کردن بازدید کننده در خرید از طریق وب , بطور مثال وجود عکس و اطلاعات لازم در مورد محصول ضروری است. همچنین می‌بایست

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

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

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

استراتژی‌های در حین فعالیت‌های تجاری
آخرین مرحله و شاید مهمترین فاز کار را فعالیت‌های در حین فروش تشکیل می‌دهند. استراتژی‌های موجود در این بخش به دو بخش استراتژی‌های کوتاه مدت و بلند مدت تقسیم‌بندی می‌شوند :

اهداف کوتاه مدت استراتژی‌های فروش آنهایی هستند که به طورموقتی شما را در کوران فعالیت‌ها نگه می دارند. این نکته باید همواره مد نظر قراربگیرد که اینگونه استراتژی‌ها شاید بتواند برای مدت کوتاهی حضور شما را در جریان رقابت استمرار بخشد اما به هیچ وجه نمی‌تواند تضمین کننده حضور دائمتان در این عرصه باشند.

اهداف بلند مدت استراتژی‌های فروش آنهایی هستند که باعث حضور مستمر شما در جریان مبادلات می‌شود. این استراتژی‌ها هر سال با ایجاد نتایج جدید در این راه همراه خواهد بود.

امروزه حجم زیادی از مبادلات از طریق این شیوه‌ی نوین تجارت انجام می گیرد و با توجه به نمودار رشد ترسیم شده، انتظار می‌رود که چندین میلیون دلار از مبادلات بشری تا سال ۲۰۰۴ از طریق اینترنت انجام پذیرد.

طراحی و پیاده سازی سیستم خرید اینترنتی محصولات:
سیستمی که اینجانب طراحی و پیاده سازی کرده است به صورت یک ساحتار درختی در زیر نشان داده شده است:

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

ویژگی های عمومی برنامه نویسی سیستم:

محیط برنامه نویسی Visual Studio . net 2008
زبان برنامه نويسي: C#.net
پلت فرم پياده سازي براي صفحات پويا: ASP.NET 3.5
بانک اطلاعاتی Oracle 8.5

بخش های مختلف سایت :
۱) مدیریت سایت
۱-۱) مدیریت گروه ها
الف ) ایجاد و ویرایش گروه ها
ب ) ایجاد و ویرایش زیر گروه ها(۱)
ج ) ایجاد و ویرایش زیر گروه ها(۲)
۲-۱) مدیریت محصولات
الف ) ایجاد و ویرایش محصولات
ب ) ثبت و ویرایش مشخصات
۳-۱) مدیریت اخبار
ارسال خبر
۴-۱) مدیریت کارت های اعتباری
ایجاد کارت اعتباری جدید
۲) کاربران
۱-۲) صفحه Master
الف ) بخش عنوان
ب ) بخش خوش آمدگوئی و خروج
ج ) بخش منوها
۲-۲) صفحه اصلی
الف ) اخبار تازه ها
ب ) محصولات جدید

۳-۲) محصولات
گروه های اصلی
انتخاب محصول
زیر گروه ۱
انتخاب محصول
زیر گروه ۲
انتخاب محصول

۴-۲) ورود اعضاء
۵-۲) ثبت نام
الف ) ثبت نام اولیه
شرایط ثبت نام
ثبت نام
ب ) فعال سازی عضویت ویژه
۶-۲) سبد خرید
اجناس خریداری شده
۷-۲) درباره سایت
۸-۲) ارتباط با ما

مدیریت سایت :
برای ورود به بخش مدیریت سایت بر روی لینک < ورود به بخش مدیریت > موجود در بالای صفحه اصلی کلیک می کنیم.

این کار، کاربر را به صفحه Login.aspx منتقل می کند که در اینجا با وارد کردن UserName:administrator و pass:123456 می توانیم وارد بخش مدیریت سایت بشویم.

در این قسمت تابع Admin_Login این کار را به انجام می رساند.
private void admin_login()
{
string user_name, pass;
Session.Add(“admin_name”,”administrator”);
Session.Add(“admin_pass”,”123456″) ;
user_name = TxtB_user_n.Text;
pass = TxtB_pass.Text;
if ((user_name == Session[“admin_name”].ToString()) && (pass == Session[“admin_pass”].ToString()))
{
Session.Remove(“admin_name”);
Session.Remove(“admin_pass”); Response.Redirect(“/project/admin/Main_page.aspx”);
}
}
در این تابع از دو متغییر Session برای این کار استفاده شده است و اگر اطلاعات مدیریتی درست وارد شده باشد کاربر را به صفحه Main_page.aspx هدایت می کند.

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

ایجاد و ویرایش گروه ها:
برای ایجاد گروه های اصلی مربوط به محصولات بر روی این گزینه کلیک می کنیم. در این حال وارد صفحه new_group.aspx می شویم. رویداد Page_load این صفحه به صورت زیر اجرا می شود.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
pic_label0.Visible = false;
pic_label1.Visible = false;
Button3.Visible = false;
result_lb.Visible = false;
Panel_Error_1.Visible = false;
make_connect();
load_Data_GridV();
}
}
وقتی که صفحه در حال بارگزاری می باشد تابع load_Data_GridV(); گروه های از قبل ایجاد شده را جستجو کرده و در صفحه نمایش می دهد.کد این تابع به صورت ریر می باشد:
protected void load_Data_GridV()
{
DataTable dt = new DataTable();
string SelectText = “select * from main_Group order by group_id asc”;
check_oracle_conn(“open”);
if (check_result == true)
{
OracleDataAdapter da = new OracleDataAdapter(SelectText, oracle_conn);
da.Fill(dt);
if (dt.Rows.Count > 0)
{
GridV_MainG.DataSource = dt;
GridV_MainG.DataBind();
}
oracle_conn.Close();
}
}

برای ایجاد گروه جدید اطلاعات خواسته شده وارد کرده و دکمه < ثبت شود > را برای ثیت گروه جدید انتخاب می کنیم.اگر مشکلی در ثبت اطلاعات وجود نداشته باشد یک پیغام موفقیت آمیز ظاهر می شود وگرنه اطلاعات ثبت نشده و یک پیغام خطا نشان داده می شود. هم چنین برای پی بردن به نوع خطا یک لینک را در اختیار ما قرار می دهد.

کد مربوط به دکمه < ثبت شود > به صورت زیر می باشد:
protected void Button1_Click(object sender, EventArgs e)
{
int init_pic = load_pic(Fu_Main_G1, Image_Main_G1);
int init_pic1 = load_pic(Fu_Main_G2, Image_Main_G2);
if (init_pic == 0)
pic_label0.Visible = true;
else if (init_pic1 == 0)
pic_label1.Visible = true;
else
{
pic_label0.Visible = false;
pic_label1.Visible = false;
//********************************************
check_oracle_conn();
if (check_result == true)
{
OracleCommand oracle_comm = new OracleCommand(“ins_main_G”, oracle_conn);
oracle_comm.CommandType = CommandType.StoredProcedure;
oracle_comm.Parameters.Add(“in_Group_Name”, OracleType.VarChar).Value = TextBox1.Text;
oracle_comm.Parameters.Add(“in_group_pic”, OracleType.VarChar).Value = Fu_Main_G1.FileName;
oracle_comm.Parameters.Add(“in_titr_pic”, OracleType.VarChar).Value = Fu_Main_G2.FileName;
//********************************************
OracleParameter param = new OracleParameter();
param.Direction = ParameterDirection.Output;
param.OracleType = OracleType.Number;
param.ParameterName = “out_result”;
oracle_comm.Parameters.Add(param);
OracleParameter param1 = new OracleParameter();
param1.Direction = ParameterDirection.Output;
param1.OracleType = OracleType.Number;
param1.ParameterName = “out_ora_err_code”;
oracle_comm.Parameters.Add(param1);
oracle_comm.ExecuteNonQuery();
result = int.Parse(param.Value.ToString());
if (result == 0)
{
Panel_Error_1.Visible = false;
result_lb.Visible = true;
result_lb.Text = “گروه جدید ” + TextBox1.Text + ” با موفقیت به ثبت رسید “;
load_Data_GridV();
}
else
{
ora_err_code = int.Parse(param1.Value.ToString());
if (ora_err_code == -1)
{
MessageBox(“گروه ” + TextBox1.Text + ” قبلا ایجاد شده است.نمی توانید دوباره ثبت کنید. “);
result_lb.Visible = false;
Panel_Error_1.Visible = false;
}
else
{
result_lb.Visible = true;
result_lb.Text = “ثبت با شکست روبرو شد.برای کسب طلاعات بیشتر به جدول خطاها مراجعه شود.”;
Panel_Error_1.Visible = true;
}
}
oracle_conn.Close();
}
}
}
تابع درج ins_main_g مربوط به اوراکل به صورت زیر می باشد.
(in_Group_Name in varchar2,in_group_pic in varchar2,in_titr_pic in varchar2,
out_result out number,out_ora_err_code out number) is
—————————–
Seq_Group_id number;
Ora_err_code number;
Ora_err_msg varchar2(300);
—————————–
begin
out_result:=1;
select seq_main_g.nextval into seq_group_id from dual;
—————————–
out_result:=2;
insert into main_group(group_id,group_name,group_pic,titr_pic)
values
(Seq_Group_id,in_group_name,in_group_pic,in_titr_pic);
—————————–
out_result:=0;
commit;
—————————–
exception
when others then
Ora_err_code:=sqlcode;
Ora_err_msg:=sqlerrm;
out_ora_err_code:=Ora_err_code;
insert into error
(procedure_name,error_code,error_date,error_time,oracle_error_code,oracle_error_message)
values
(‘ins_main_g’,out_result,sysdate,to_char(sysdate,’hh24:mi:ss’),ora_err_code,ora_err_msg);
end;
کاربر می تواند با انتخاب گزینه < مشاهده > تغییراتی را در داده ها ی وارد شده انجام بدهد. در این لحظه دکمه < به روز رسانی > برای انجام تغییرات در دسترس قرار می گیرد.
کد مربوط به دکمه < مشاهده >:
protected void GridV_MainG_SelectedIndexChanged(object sender, EventArgs e)
{
result_lb.Visible = false;
Panel_Error_1.Visible = false;
check_oracle_conn();
if (check_result == true)
{
string selected_Row = “select group_name,group_pic,titr_pic from main_group where group_id=”;
selected_Row += GridV_MainG.SelectedRow.Cells[5].Text;
OracleCommand oracle_comm = new OracleCommand(selected_Row, oracle_conn);
OracleDataReader dr = oracle_comm.ExecuteReader();
if (dr.Read())
{
TextBox1.Text = dr.GetString(0);
Image_Main_G1.ImageUrl = “~\\pro_pic\\” + dr.GetString(1);
Image_Main_G2.ImageUrl = “~\\pro_pic\\” + dr.GetString(2);
Button1.Visible = false;
Button3.Visible = true;
}
oracle_conn.Close();
}
}
کد مربوط به دکمه < به روز رسانی >:
protected void Button3_Click(object sender, EventArgs e)
{
int init_pic = 1, init_pic1 = 1;
if (Fu_Main_G1.FileName != “”)
init_pic = load_pic(Fu_Main_G1, Image_Main_G1);
if (Fu_Main_G2.FileName != “”)
init_pic1 = load_pic(Fu_Main_G2, Image_Main_G2);
if (init_pic == 0)
pic_label0.Visible = true;
else if (init_pic1 == 0)
pic_label1.Visible = true;
else
{
pic_label0.Visible = false;
pic_label1.Visible = false;
check_oracle_conn();
if (check_result == true)
{
OracleCommand oracle_comm = new OracleCommand(“up_main_g”, oracle_conn);
oracle_comm.CommandType = CommandType.StoredProcedure;
oracle_comm.Parameters.Add(“in_group_id”, OracleType.Number).Value = GridV_MainG.SelectedRow.Cells[5].Text;
oracle_comm.Parameters.Add(“in_group_name”, OracleType.VarChar).Value = TextBox1.Text;
if (Fu_Main_G1.FileName == “”)
oracle_comm.Parameters.Add(“in_group_pic”, OracleType.VarChar).Value = GridV_MainG.SelectedRow.Cells[3].Text;
else
oracle_comm.Parameters.Add(“in_group_pic”, OracleType.VarChar).Value = Fu_Main_G1.FileName;
if (Fu_Main_G2.FileName == “”)
oracle_comm.Parameters.Add(“in_titr_pic”, OracleType.VarChar).Value = GridV_MainG.SelectedRow.Cells[2].Text;
else
oracle_comm.Parameters.Add(“in_titr_pic”, OracleType.VarChar).Value = Fu_Main_G2.FileName;
//**************
OracleParameter param = new OracleParameter();
param.Direction = ParameterDirection.Output;
param.OracleType = OracleType.Number;
param.ParameterName = “out_result”;
oracle_comm.Parameters.Add(param);
OracleParameter param1 = new OracleParameter();
param1.Direction = ParameterDirection.Output;
param1.OracleType = OracleType.Number;
param1.ParameterName = “out_ora_err_code”;
oracle_comm.Parameters.Add(param1);
oracle_comm.ExecuteNonQuery();
result = int.Parse(param.Value.ToString());
if (result == 0)
{
Panel_Error_1.Visible = false;
result_lb.Visible = true;
result_lb.Text = “تغییرات با موفقیت به انجام رسید”;
load_Data_GridV();
}
else
{
ora_err_code = int.Parse(param1.Value.ToString());
if (ora_err_code == -1407)
{
result_lb.Visible = false;
Panel_Error_1.Visible = false;
MessageBox(“نام گروه خالی می باشد. لطفا مقدار دهی نمائید.”);
}
else
{
result_lb.Visible = true;
result_lb.Text = “تغییرات به شکست انجامید. جهت اطلاع به جدول خطاها مراجعه شود”;
Panel_Error_1.Visible = true;
}
}
oracle_conn.Close();
}
}
}
در این تابع ممکن است که کاربر تصاویری را که از قبل وارد پایگاه داده کرده است را نخواهد تغییر بدهد به همین منظور دو متغییر init_pic و init_pic1 را با مقادیر اولیه ۱ در نظر گرفته ام که اگر کاربر فایل جدیدی را بارگزاری کرده باشد این دو متغییر توسط تابع Load_pic دوباره مقداردهی خواهند شد وگرنه مقدار ۱ به منزله این است که نام تصاویری که در DataGrid وجود دارند درست می باشند.
تابع به روز رسانی < up_main_g > مربوط به اوراکل به صورت زیر می باشد:
(in_group_id in number,in_group_name in varchar2,
in_group_pic in varchar2,in_titr_pic in varchar2,
out_result out number,out_ora_err_code out number) is
————————
ora_err_code number;
ora_err_msg varchar2(300);
————————
begin
out_result:=1;
update main_group
set
group_id=in_group_id,group_name=in_group_name,group_pic=in_group_pic,titr_pic=in_titr_pic
where group_id=in_group_id;
————————
out_result:=0;
commit;
————————
exception
when others then
ora_err_code:=sqlcode;
ora_err_msg:=sqlerrm;
out_ora_err_code:=ora_err_code;
insert into error
(procedure_name,error_code,error_date,error_time,oracle_error_code,oracle_error_message)
values
(‘up_main_g’,out_result,sysdate,to_char(sysdate,’hh24:mi:ss’),ora_err_code,ora_err_msg);
end;
برای حذف داده ها از جدول بر روی گزینه < حذف > کلیک می کنیم:
کد مربوط به دکه < حذف > به صورت زیر می باشد:
protected void GridV_MainG_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
check_oracle_conn();
if (check_result == true)
{
OracleCommand oracle_comm = new OracleCommand(“del_main_g”, oracle_conn);
oracle_comm.CommandType = CommandType.StoredProcedure;
oracle_comm.Parameters.Add(“in_group_id”, OracleType.Number).Value = GridV_MainG.Rows[e.RowIndex].Cells[5].Text; ;
//***********************
OracleParameter param = new OracleParameter();
param.Direction = ParameterDirection.Output;
param.OracleType = OracleType.Number;
param.ParameterName = “out_result”;
oracle_comm.Parameters.Add(param);
OracleParameter param1 = new OracleParameter();
param1.Direction = ParameterDirection.Output;
param1.OracleType = OracleType.Number;
param1.ParameterName = “out_ora_err_code”;
oracle_comm.Parameters.Add(param1);
oracle_comm.ExecuteNonQuery();
result = int.Parse(param.Value.ToString());
if (result == 0)
{
Panel_Error_1.Visible = false;
result_lb.Visible = true;
result_lb.Text = ” گروه ” + GridV_MainG.Rows[e.RowIndex].Cells[4].Text + ” با موفقیت حذف شد. “;
load_Data_GridV();
}
else
{
ora_err_code = int.Parse(param1.Value.ToString());
if (ora_err_code == -2292)
{
MessageBox(“خطای جامعیت!!! گروه انتخاب شده قابل حذف نمی باشد.”);
result_lb.Visible = false;
Panel_Error_1.Visible = false;
}
else
{
result_lb.Visible = true;
result_lb.Text = ” خطا در حذف گروه ” + GridV_MainG.Rows[e.RowIndex].Cells[4].Text + ” .برای کسب اطلاعات بیشتر به جدول خطاها مراجعه شود “;
Panel_Error_1.Visible = true;
}
}
oracle_conn.Close();
}
}
تابع حذف < del_main_g > واقع در سمت اوراکل به صورت زیر می باشد:
(in_group_id in number,out_result out number,out_ora_err_code out number)is
————————-
ora_err_code number;
ora_err_msg varchar2(300);
————————-
begin
out_result:=1;
delete
from main_group
where group_id=in_group_id;
————————-
out_result:=0;
commit;
————————-
exception
when others then
Ora_err_code:=sqlcode;
Ora_err_msg:=sqlerrm;
out_ora_err_code:=Ora_err_code;
insert into error
(procedure_name,error_code,error_date,error_time,oracle_error_code,oracle_error_message)
values
(‘del_main_g’,out_result,sysdate,to_char(sysdate,’hh24:mi:ss’),ora_err_code,ora_err_msg);
end;
ایجاد و ویرایش زیر گروه ها(۱):
برای ایجاد زیر گروه سطح ا این گزینه را انتخاب می کنیم.صفحه Subg.1.aspx ظاهر می شود.

تابع Page_load در این صفحه به صورت زیر می باشد:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
pic_label3.Visible = false;
pic_label2.Visible = false;
Btn_SubG1_3.Visible = false;
result_lb0.Visible = false;
Panel_Error_2.Visible = false;
make_connect();
loadData_DDList();
load_Data_GridV();
}
}
تابع loadData_DDList(); به صورت زیر می باشد:

protected void loadData_DDList()
{
DataTable dt = new DataTable();
string SelectText;
SelectText = “select Group_id,Group_name from main_Group “;
check_oracle_conn();
if (check_result == true)
{
OracleDataAdapter da = new OracleDataAdapter(SelectText, oracle_conn);
da.Fill(dt);
if (dt.Rows.Count > 0)
{
DDL_SubG1_1.DataSource = dt;
DDL_SubG1_1.DataTextField = “Group_name”;
DDL_SubG1_1.DataValueField = “Group_id”;
DDL_SubG1_1.DataBind();
}
else
DDL_SubG1_1.Items.Add(“خالی”);
oracle_conn.Close();
}
}
وظیفه این تابع این است تا گروه های اصلی از پیش ایجاد شده را انتخاب کرده و به صورت یک لیست کشوئی در اختیار کاربر قرار می دهد. اگر هیچ گروهی ایجاد نشده باشد مقدار < خالی > را نمایش می دهد.
تابع load_Data_GridV(); دقیقا مشابه تابع موجود در < ایجاد گروه ها > می باشد.
بقیه توابع و عملیات موجود در این صفحه از لحاظ کارکرد تقریبا مشابه صفحه قبلی می باشد. برای کسب اطلاعات بیشتر می توانید به CD ضمیمه مراجعه بفرمائید.
ایجاد و ویرایش زیر گروه ها(۲):
گروه بندی مربوط به محصولات می تواند تا سطح دوم رشد پیدا کند بنابراین اگر گروهی تا سطح دوم ادامه پیدا کند مدیر می تواند از این قسمت اقدام به وارد کردن اطلاعات نماید. با کلیک بر روی گزینه < ایجاد و ویرایش زیرگروه ها (۲) > صفحه Subg_2.aspx برای ما به نمایش در می اید.