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

كيف أربط باراميتير بالSQL في الدوت نيت ؟

مغلق
بدأه ابن الشريف في 4 فبراير 2007 · 11 رد · 949 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم جميعاً,

أقوم باستخدام فيجوال بيسك.نت 2005 وأستخدم Table Adapters لجلب المعلومات من قاعدة البيانات ولكن عندي مشكلة...

كيف أقوم بعمل Concatination بين الـParameter وبين علامة '%' ؟

هذه الـQuery التي قمت بعملها ويظهر لي خطأ في فعلها:

SELECT	 SOPTYPE, SOPNUMBE, DOCID, CUSTNMBR, CUSTNAME, ADDRESS1, SLPRSNID, COUNTRY, ORIGTYPE, CITY, USER2ENT, POSTEDDT, 
					  DOCDATE
FROM		 dbo.SOP10100
WHERE	 (CUSTNAME LIKE '%' &  @p & '%')

الرجاء المساعدة : )

أخوكم,

#2

يمكنك استخدام stored procedure كالتالي .

CREATE PROCEDURE dbo.MySP
@p  varchar(50)
 AS
SELECT	 SOPTYPE, SOPNUMBE, DOCID, CUSTNMBR, CUSTNAME, ADDRESS1, SLPRSNID, COUNTRY, ORIGTYPE, CITY, USER2ENT, POSTEDDT, 
					  DOCDATE
FROM		 dbo.SOP10100
 where CUSTNAME like '%' + @p  +'%'
GO

ان شاء الله يفيدك هذا الكود ...

#3

شكراً يا joseph

لكن حتى الربط بإستخدام علامة + لا يفيد !!

الرجاء إخباري

how to concatinate a parameter with the percentage keyword % ?

مع التحية ,,

#4

تستطيع ان تقوم بذلك من دون استخدام البارمتر ، وهنا مثال من برنامج سابق قمت بتصميمه :

	Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

			AccessDataSource1.SelectCommand = "SELECT [CalendarNo], [UserCode], [CalendarDate], [CStart], [CEnd], [CActiveTypeCode] FROM [Calendar] WHERE ([CalendarDate] = @SelectedDate) AND (([CActiveTypeCode]<>@Private) OR ([CActiveTypeCode]= @Private AND [UserCode]= @userparam)) AND ([CInvite] like '%" & Session("usernamesession") & "%')"

	End Sub

كمثال اخر حسب الكود بطريقة VB.NET 2002

		
		Dim MyConn As OleDbConnection
		MyConn = New OleDbConnection(ConfigurationManager.ConnectionStrings("calendarConnectionString").ConnectionString)

		Dim trainingCommand As New OleDbDataAdapter("select * From [Calendar] where (CalendarDate = #" & datetxt.Year & "/" & datetxt.Month & "/" & datetxt.Day & "#) and (CActiveTypeCode <> 'Private') and (CPlace = 'Training Center') and ((CStart BETWEEN #" & stimetxt & "# and #" & etimetxt & "#) or (CEnd BETWEEN #" & stimetxt & "# and #" & etimetxt & "#) or (CStart <= #" & stimetxt & "# and CEnd >= #" & etimetxt & "#))", MyConn)
		Dim dstr As New DataSet
		trainingCommand.Fill(dstr, "tr")
الخ

واذا كنت مصمم على استخدام البارميترز فانا لا انصحك بوضع p@ وانما ضع بدلا منها علامة الاستفهام ، ثم قم بتعريف البارميترز ، كما بالمثال التالي ادناهع

	  
		 Dim MyConnt1 As OleDbConnection
				MyConnt1 = New OleDbConnection(ConfigurationManager.ConnectionStrings("calendarConnectionString").ConnectionString)
				Dim Insertcmd As New OleDbCommand
				Insertcmd.Connection = MyConnt1
				Insertcmd.CommandText = "INSERT INTO [TrainingCenter] ([TStime],[TEtime],[ReserveDate],[Asker],[Breakfast],[CoffeeBreak],[TurkishCoffee],[Lunch],[LightLunch],[DataShow],[vidio1],[vidio2],[stationery],[DVD],[LunchDescripe],[LunchTime],[Comment]) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
				Insertcmd.CommandType = CommandType.Text

				MyConnt1.Open()


				Insertcmd.Parameters.Add("@TStime", OleDbType.VarChar).Value = CType(CType(FormView2.FindControl("CStartTextBox"), TextBox).Text.ToString, DateTime)
				Insertcmd.Parameters.Add("@TEtime", OleDbType.VarChar).Value = CType(CType(FormView2.FindControl("CEndTextBox"), TextBox).Text.ToString, DateTime)
				Insertcmd.Parameters.Add("@ReserveDate", OleDbType.VarChar).Value = datetxt
				Insertcmd.Parameters.Add("@Asker", OleDbType.VarChar).Value = Session("usernamesession").ToString.ToUpper
				Insertcmd.Parameters.Add("@Breakfast", OleDbType.VarChar).Value = CType(breakfastChk.Checked, Int32)
				Insertcmd.Parameters.Add("@CoffeeBreak", OleDbType.VarChar).Value = CType(CoffeeChk.Checked, Int32)
				Insertcmd.Parameters.Add("@TurkishCoffee", OleDbType.VarChar).Value = CType(TurkishChk.Checked, Int32)
				Insertcmd.Parameters.Add("@Lunch", OleDbType.VarChar).Value = CType(lunchRadio.Checked, Int32)
				Insertcmd.Parameters.Add("@LightLunch", OleDbType.VarChar).Value = CType(LightRadio.Checked, Int32)
				Insertcmd.Parameters.Add("@DataShow", OleDbType.VarChar).Value = CType(DatashowChk.Checked, Int32)
				Insertcmd.Parameters.Add("@vidio1", OleDbType.VarChar).Value = CType(Vidio1Radio.Checked, Int32)
				Insertcmd.Parameters.Add("@vidio2", OleDbType.VarChar).Value = CType(Vidio2Radio.Checked, Int32)
				Insertcmd.Parameters.Add("@stationery", OleDbType.VarChar).Value = CType(stationeryChk.Checked, Int32)
				Insertcmd.Parameters.Add("@DVD", OleDbType.VarChar).Value = CType(DVDChk.Checked, Int32)
				Insertcmd.Parameters.Add("@LunchDescripe", OleDbType.VarChar).Value = LunchTxt.Text
				Insertcmd.Parameters.Add("@LunchTime", OleDbType.VarChar).Value = LunchTimeTxt.Text
				Insertcmd.Parameters.Add("@Comment", OleDbType.VarChar).Value = CommentTxt.Text

				Response.Write(Insertcmd.ExecuteNonQuery())

				MyConnt1.Close()
				MyConnt1 = Nothing

تم تعديل هذه المشاركة بواسطة basharss في 5 فبراير 2007 في 11:24

logosite.gif
#5

أخي بشار شكراً لك لكن سؤالي كان كالتالي:

الربط بين الـparameter وبين الـ% تكون بـ& أم بـ+ ؟

لإني لما قمت بعمل + لم يعمل كما كان متوقع !! فكيف يتم الربط ؟

مشكورين على التفاعل...

والسلام,

#6

انا اعرف انه يتم استخدام ال & في الربط داخل جمل ال sql وكذلك للربط بين المتغيرات النصية .

logosite.gif
#7

نعم أخي بشار هذا ما عنيت ومع هذا لم يعمل !!!!

فهل لك أو لباقي الإخوة مثال للربط ؟

رجاء المساعدة الأمر ضروري : )

أخوكم,

#8

اخي اذا كنت تعمل من خلال ال query فلماذا علامة التنصيص '

قم بإعادت كتابة جملة الاستعلام بدون وضع ال '

هذا اذا كنت تستخدم الويزرد Wizard في عمل الاستعلام .

يفضل التعديل من خلال الكود كما هو مبين في الامثلة المدرجة اعلاه .

او ارجو التوضيح اكثر حول طلبك ووضع الكود من بدايته .

logosite.gif
#9

أخي أنا أعمل عن طريق الفيجوال بيسك 2005 وأقوم بإدخال هذه الـQuery عن طريق الـTable Adapter

ولهذا وضعت علامة التنصيص...

الغريب أني لما كنت أتصل بقاعدة بيانات أوراكل وأستخدم علامة || للربط بين الـParameter وبين الـ% لم يكن يعطيني مشكلة !!!

فما هو الحل ؟

أخوكم,

#10

وجدت الحل:

تغيير الـParameter Tytpe من AnsiString إلى مجرَّد String

والسلام,

#11

تأكد من الكود من خلال الدخول الى صفحة الكود

logosite.gif
#12

تأكدت من الكود لكن المشكلة التي وجدت لها الحل هو أن الـDefault Datatype لأي Parameter في الـTable Adapter داخل الـDataset يكون AnsiChar ..وهذا لا يعمل مع الـQuery

فاضطررت لتغير الـDatatype إلى String فزالت المشكلة : )

أخوكم,

هذا الموضوع مغلق.

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…