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

هل يوجد خطأ بجملة Sql ؟

بدأه MS_SQL في 20 يوليو 2008 · 5 رد · 630 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أخواني اريد ان أعرف ماهو الخطأ هنا في هذه الجملة

 

If Rs.State = adStateOpen Then Rs.Close

sql1 = "select * from Computers where IPaddress= ' " & Text2.Text & " ' "
sql2 = sql1 & " And IPaddress= ' " & Text3.Text & " ' "
sql3 = sql2 & " And IPaddress= ' " & Text4.Text & " ' "
sql4 = sql3 & " And IPaddress= ' " & Text5.Text & " ' "


Rs.Open sql, Db, adOpenDynamic, adLockOptimistic


If Rs.EOF = False Then
   MsgBox "you have to change IP address"
   Exit Sub
   End If

حيث أريد منها أن تبحث في الجدول هل يوجد IP address مماثل ولا لا . نوع الحقل Text

فلسطين .. سوريا ..بورما ......وماذا بعد ؟!

سابقا

medo_programming

موقعي : www.alkhayat-it.com

مواضيع مهمه

-----------------------------------------------:

تعلم كل شىء عن الTriggers

#2

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

الجملة صحيحة ولكن هناك تفسير بسيط اذا كان هناك خطا فى التنفيذ فامن الممكن

تحويل نوع الحقل الى رقمى لان عندما يكون الحقل من نوع رقمى يفيد فى عملية البحث من السرعة والدقة اذا كانت البيانات المدخلة ارقام

مع مرعاة ان تكون علامات التنصيص كما يأتى

where IPaddress= " & text & "

هنا لا يوجد السينجل كوتيشن '

وارجو ان يكون هذا الحل وشكرا..

#3

السلام عليكم...

أولاً إذا كان نظري سليماً فإعتقد أنه توجد فراغات بعد علامة التنصيص الفردية (Single Quotation) الأولى و علامة التنصيص الفردية الثانية في كل سطر، و هذا خطأ. مثلاً إذا كان النص في Text2 هو 192.168.0.1 فإن الجملة (مع وجود الفراغات) تبحث عن ' 192.168.0.1 ' و ليس '192.168.0.1'.... الفكرة أن تنتبه إلى الفراغات فإنها غالباً ما تسبب المتاعب.

الخطأ الثاني منطقي: حسب ما فهمته من الكود أن لديك 4 مربعات نص هي Text2 و Text3 و Text4 و Text5 و أنك تريد معرفة ما إذا كان هناك في الجدول IP Address مطابق لأي واحد في مربعات النص الأربعة. النتيجة ستكون دائماً False (أي لا يوجد IP Address مطابق لأي من محتويات الخانات الأربع) إلا إذا كانت مربعات النص الأربعة تحتوي على نفس العنوان، و السبب هو أنك تستعمل العامل AND لربط الشروط في جملة SQL، حيث أن معناها هو: "أعطني السجلات التي يكون فيها الحقل IPAddress مساوياً للنص في Text2 و مساوياً للنص في Text3 و مساوياً للنص في Text4 و مساوياً للنص في Text5" في نفس الوقت! و هذا أعتقد أنه غير ممكن.

استعمل العامل OR بدل AND.

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#4

أخواني اولا أشكركم على تعاونكم

اقتباس
تحويل نوع الحقل الى رقمى لان عندما يكون الحقل من نوع رقمى يفيد فى عملية البحث من السرعة والدقة اذا كانت البيانات المدخلة ارقام

أخي انا حاولت تغيير نوع الحقل الى رقم ولكن المشكلة الان أن هذا الحقل عبارة عن IP Address ويوجد بهذا الحقل علامة ( . ) ولذالك لايمكن أن أحولة الى حقل رقمي

اقتباس
السبب هو أنك تستعمل العامل AND لربط الشروط في جملة SQL، حيث أن معناها هو: "أعطني السجلات التي يكون فيها الحقل IPAddress مساوياً للنص في Text2 و مساوياً للنص في Text3 و مساوياً للنص في Text4 و مساوياً للنص في Text5" في نفس الوقت! و هذا أعتقد أنه غير ممكن.

أخي انا أقصد من عملية البحث أن أبحث عن هل يوجد IP مطابق للذي يوجد في ( text 1 , text2, text3, text4 ) في جدول البيانات . حيث أن حقل IP Address هو عبارة عن مجموع ( text1 + text2 + text3 +text4 ) لكي أحصل على IP Address بخاناتة الاربعة

فلسطين .. سوريا ..بورما ......وماذا بعد ؟!

سابقا

medo_programming

موقعي : www.alkhayat-it.com

مواضيع مهمه

-----------------------------------------------:

تعلم كل شىء عن الTriggers

#5
اقتباس
أخي انا أقصد من عملية البحث أن أبحث عن هل يوجد IP مطابق للذي يوجد في ( text1 , text2, text3, text4 ) في جدول البيانات . حيث أن حقل IP Address هو عبارة عن مجموع ( text1 + text2 + text3 +text4 ) لكي أحصل على IP Address بخاناتة الاربعة

اذا كان حقل الــ IPAddress يساوي مجموع البيانات الموجوده في ( text1 , text2, text3, text4 ) يعني لو فرضنا أن حقل الــ IPAddress = 192.168.1.21

وكانت بيانات Text1 = 192 و Text2 = 168 و Text3 = 1 و Text4 = 21

فالمفترض ان تكون جملة الاستعلام كالتالي :

sql1 = "Select * From Computers Where Trim(IPaddress) = '" & Trim(Text1) & "." & Trim(Text2) & "." & Trim(Text3) & "." & Trim(Text4) & "'"

ليس كل ما يتمناه المرء يدركه

arabteam2000.gif

#6

السلام عليكم...

حسب التوضيح الأخير فإن كلام أخينا العقده صحيح.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

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