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

استفسار : حقل متغير في حالة البحث

بدأه visual6.0 في 27 مايو 2013 · 13 رد · 791 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

 

كيف يمكن جعل اسم الحقل المراد البحث فيه عبارة عن متغير ، مثلا

 

 

@A1 VARCHAR(2)Select * from names Where @A1='OK'

 

 

فانا اريد البارميتر  هو الحقل المراد البحث فيه

 

وشكرا ليكم

تم تعديل هذه المشاركة بواسطة visual6.0 في 27 مايو 2013 في 06:45

#2

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

 

أخي الفاضل

 

سيكون الاسكريبت كالتالي

 

Declare @A1 as varchar (2)
Set @A1 = 'OK'
select * from names where itemnumber = @A1

 

أما اذا أردت ان تقوم بانشاء اجراء مخزن وبداخلة البراميتر المطلوب فستقوم بكتابة الاسكريبت التالي

 

CREATE PROCEDURE ParmSample
 @EmpIDParm INT
 AS 
SELECT * FROM names WHERE ID= @EmpIDParm
GO  EXEC ParmSample @EmpIDParm = 1234
 GO

 

بالتوفيق

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 27 مايو 2013 في 07:33

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#3

مرحبا بك أخي وشكرا على ردك ولكن سؤالي يبدوا لم يفهم بشكل اكبر

 

select * from names where varchar(2)= @A1

 

مالون بالاحمر هو الحقل ولكن عبارة عن متغير ولكن مباشر

#4

أخي الفاضل

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

 

أنا مازالت لا أفهم ماذا تريد ان تفعل بالضبط

 

1- العبارة where varchar(2)= @A1 لا تعني شيء وخاطئة

2- اين يوجد اللون الاحمر التي تشير اليه 

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#5

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

 

الذي أقصده أخي هو حقل البحث يكون عبارة عن متغير وليس جامد لكي أحدد اسمه من البرنامج بدلا من كتابته مباشرة.

 

مثلاً : لدي حقول باسم A1 و A2 و A3

 

واريد أن أعمل بحث في العمود A + المتغير

 

 

DIM Temp_Field AS STRING
Temp_Field = "A_1"
SELECT * FROM NAMES WHERE Temp_Field=1

تم تعديل هذه المشاركة بواسطة visual6.0 في 27 مايو 2013 في 17:10

#6

أخي ما تتحدث عنه قدمته لك في المشاركة رقم 2#

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#7

أخي الغالي الذي في المشاركة هو قيمة البحث من متغير وأنا أريد حقل البحث وليس القيمة

تم تعديل هذه المشاركة بواسطة visual6.0 في 27 مايو 2013 في 17:36

#9

للأسف أخي لا توجد المهمة التي اريدها ، متشكر لك المداخلة

#10

السلام عليكم

 

من خلال لغة البرمجة يمكنك التحكم بالاستعلام كيفما تشاء مثل

 

 

DIM Temp_Field AS STRING
DIM  FieldValue AS STRING
Temp_Field = "A_1"
FieldValue = 1
dim sql as string

sql="SELECT * FROM NAMES WHERE " &  Temp_Field & "=" &  FieldValue

'اعمل اتصال بقاعدة البيانات وبعد ذلك نفذ الجملة التالية
con.Execute(sql)

وارجو توضيح لغة البرمجة والطريقة التي تستخدمها

#11

أنا عملت كذا لكن المشكل هو  create  أو Alter لا اريد ارهاق السيرفر في كل عملية بحث ، لكن هل من الممكن عن طريق if elseif ?

#12

تم حل المشكل بحمد الله وتوفيقه ، لمراجعة حل المشكل اذهب للرابط التالي:

 

حل المشكل

#13

أخي الفاضل

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

 

مع احترامي الشديد لك فالمشاركة التي قد وضعتها بخصوص تمرير القيم الفارغة للبراميترات باستخدام ISNULL لا تمت بصلة عن ما كنا نناقشة هنا !! ربما عدم وضوح المطلوب هو ما سبب هذا الخلط وعدم الاجابة علي سؤالك بالشكل السليم لذلك اتمني في المرات القادمة محاولة قدر المستطاع شرح مشكلتك بشكل من التفصيل والايضاح حتي تكون الاجابة في محلها . فدائما حل المشكلة يأتي من فهم السؤال جيدا فأن لم يفهم السؤال جيدا أو تم طرحه بشيء من الغموض فسيؤدي ذلك الي اجابة باهتة وغير واضحة وفي الاخر لن تؤدي الي المطلوب

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#14

 You Need Dynamic SQL

(DECLARE @Attribute NVARCHAR(20),@Query NVARCHAR(1000
'SET @Attribute='EmployeeID
SET @Query='SELECT * FROM HumanResources.Employee
'WHERE '+@Attribute+'=11

EXEC SP_EXECUTESQL @Query

dynamicSQL.sql

تم تعديل هذه المشاركة بواسطة omaralbluwe في 18 أغسطس 2013 في 11:30

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

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

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

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

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