الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يمكن للمستخدم التبديل بين قواعد البيانات Sqlserver

بدأه ابوطلال في 26 يوليو 2008 · 10 رد · 1,079 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

لدي مشروع يعمل على sqlserver يتصل بقاعدة بيانات للعام الحالي ويوجد قواعد بيانات للاعوام السابقة بنفس الجداول

كيف امكن المستخدم من اختيار قاعدة البيانات التي يريد الاتصال بها من قائمة كمبوبوكس

بحيث يستطيع التنقل بين الاعوام من شاشة الدخول الرئيسية

ملاحظة : استخدم C#.

ولكم جزيل الشكر

#2

كان الأصح أن تستخدم قاعدة بيانات واحدة وتقسم المعطيات على جداول

ولكن الآن!

بإمكانك أن تعرض واجهة للمستخدم لاختيار معلومات السنة التي يريد (طبعا كل عنصر من القائمة التي عرضتها مرتبط باسم قاعدة بيانات)

وعندما يختار المستخدم عنصرا معينا تقوم بتغيير الـ connection string الذي يتصل على قاعدة المعطيات!!! ليحوي اسم قاعدة المعطيات الجديدة!!!

MAAAAAAAAAAAAAAAAAAAAAAAC

#3

الف شكر لك اخوي على ردك

انا اعتمد في برمجتي على الاوبجكت والمعالج وليس الكود في الاتصال حسب الطرق المشروحة في موقع asp.net

يعني اعتمد على جملة الاتصال الموجودة في ملف ال web.config

فكيف اجعل الداتا ست يتغير كود اتصالها حسب اختيار المستخدم

ولكم جزيل الشكر

#4

ببساطة طالما أنك تستخدم الـ connection string الموجود في web.config

قم بوضع connection في هذا الملف لكل قاعدة بيانات وحسب الاختيار تحدد الـ connection المناسب للـ data source

!

MAAAAAAAAAAAAAAAAAAAAAAAC

#5

استخدمت الكود التالي:

if(DropDownList1.SelectedValue=="1")
		{
			SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString1"].ConnectionString);
		}
			   else
		{
			SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString2"].ConnectionString);
		}

وضعت الكود في تحميل الصفحة

ولكن لازالت البيانات تعتمد على اتصال الادابتر المعمول يدويا

ما الحل؟؟

#6

اذا كنت تستخدم SqlDataSource

فيمكن وضع الكود التالي

if(DropDownList1.SelectedValue=="1")
		{
			SqlDataSource1.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString1"].ConnectionString;
		}
			   else
		{
			SqlDataSource1.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString2"].ConnectionString;
		}

تم تعديل هذه المشاركة بواسطة c++2003 في 27 يوليو 2008 في 06:32

abdullahf4.jpg
#7

قد تحتاج الى إعادة تحميل DataBind الكنترول (َGridview) او غيره عندما تعدل الكونيكشن

اعمل اعادة تحميل من حدث SelectedIndexChanged

ضع الكود الذي وضع سابقا في حدث SqlDataSource

  protected void Sql_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
	{
		e.Command.Connection.ConnectionString = ConfigurationManager.ConnectionStrings[DDlcon.SelectedValue].ConnectionString;
	}

The World Must Be Crazy

#8

اليكم المشروع فيه مشكلتين والشرح داخل

وشاكر جهودكم مقدما

website.rar

#9
 

ObjectDataSource1.TypeName = "DataSet1TableAdapters.myTable11TableAdapter";

شاهد المرفقات بالتوفيق

masterpagecss.zip

abdullahf4.jpg
#10

اخوي الغالي

الله يوفقك وشاكر اهتمامك واجتهادك

بالنسبة للتعديل الذي اضفته جميل ولكن المطلوب بشكل دقيق انه يكون عندي واحد adpter ويقوم المستخدم

بتغيير الكونكشن حسب مفاتيح الاتصال الموجودة في ملف الويب كونفق فقط يبدل بين قواعد البيانات

ارجو ان اكون وضحت الصورة اكثر

تحياتي للجميع

#11

طالما انك ستستخدم Class1 فيمكنك اضافة الكونيكشن هناك مع اضافة الكونيكشن كباراميتر

[System.ComponentModel.DataObjectMethod(System.ComponentModel.DataObjectMethodType.Select, true)]
	public DataSet1.myTable1DataTable GD_All(string Conn)
	{
		Adpter.Connection.ConnectionString=ConfigurationManager.ConnectionStrings[Conn].ConnectionString;
		return Adpter.GetData();
	}

ويمكنك تمرير الباراميتر بالطريقة الموضحة سابقا في الردود

The World Must Be Crazy

مواضيع مشابهة