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

كيف اعمل مقارنه فى قاعدة البيانات

مغلق
بدأه BMW316i في 15 يناير 2003 · 15 رد · 1,033 مشاهدة · في منتدى تصميم صفحات الويب
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كيف اعمل مقارنة فى قاعدة البيانات

مثال

يوجد عندى ملف عاوز اقارنه هل هو موجود فى قاعدة البيانات فلو هو موجود يكتب هذه الملف موجود فى قاعدة البيانات واذا ماكنش موجود يكتب ليس موجود

المشكلة اللى عندى هى انا بستخدم while not rs.EOF ودة بتسبب لى مشكلة انه لازم هيقارن فى قاعدة البيانات ب recored فطبعا لما هيروح الى اول recored لو الملف مش موجود هيكتب هذا الملف غير موجود وبعد كدة هينزل لل recored التانى وهكذا

طبعا كدة لو الملف مش موجود مثلا فى 10 recored هيكتب 10 مرات الملف مش موجود

ومثلا إن وجد اسم الملف فى ال recored ال 12 هيكتب 11 مرة الملف مش موجود والمرة ال 12 هيكتب موجود

ازاى اتغلب الى التكرار

#2

هل تقصد انك تريد ان تعرف اذا كان اسم احمد نثلا موجود كم مرة ؟؟

اذا كان كذلك فهذه هي الطريقة

rs=cn.execute("select * from table1 where Name='"&name&"'")

 set totalrs=cn.execute("select count(*) as total from table1 where Name='"&name&"'")

و طبعا ممكن تغير '"&name&"' الى اي شيء تريده

#4

انا هديك مثال

انا عندى قاعدة بيانات للمجموعه من المدرسين فيها اسم المدرس والمادة اللى بيدرسه

وعندى لسته بمجموعه من المدرسين

انا عاوز يخد اسم المدرس اللى فى السته ويقارنه بقاعده البيانات لو موجود هيكتب اسم المادة اللى بيدرسها ولو مش موجود هيكتب مش بيدرس

#5

طيب عند البحث و داخل التكرار while not rs.EOF ضع شرط :

if (teachar_name = rs(tec_name)) then

ثم تضع الأوامر التي تريد.

- teachar_name : هذه القيمة التي تبحث عنها.

-tec_name : الحقل الذي في قاعدة البيانات .

#6

اساسا

لا يجب ان يتكرر بيان معين في جدولين

#7

انا عملت كدة بس وجد مشكلة وهى انو بيكرر والسبب هو

انه لما بيروح على اول حقل ويقارن فلو موش موجود فبيكتب مش موجود مواد وبعد كدة يروح على الحقل التانى ويقارن فلو وجد يكتب مادة كذا فهى دة المشكلة

#8

do while not rs.EOF

if f1.name = rs("folname") then s = s & "

" & rs("owner")& " "

's = s & "

" & f1.name& " "

Rs.MoveNext

loop

rs.Close

conn.Close

هو داه الكود المشكلة هى انه بينفذ الشرط التانى فكل مرة لو مش اسم المدرس موجود يكتب مش بيدرس فلو فى فى قاعدة البيانات 5 اسامى هيكتب انه مش بيدرس 5 مرات انا عاوزة يكتب مرة وحدة أى عدم التكرار يارب حد يكون فهم انا عاوز ايه

#9

اخي اذا كانت المشكلة في تكرار الحقل name و انت لا تريدها استخدم هذا الاستعلام :

SQL="SELECT DISTINCT name FROM tableName"

و بالتالي لن تتكرر قيم للحقل name ..

You can fly while you can touch the sky

#10

يا محمد انت مش فاهم انا عاوز ايه انت مش بتركز فى فهم المشكلة علشان كدة مش بتعرف تحلها انا عارف انك مشغول فى الامتحانات

انت لو فهمت انا عاوز ايه وشوفت الكود صح هتعرف اية المشكلة

#11

طيب يا ريت بس تخبرني من أين ستستقبل البيانات هل مخزنة أم من حقل ادخال أم من قاعدة بيانات .. و يا ريت ترفق فقط قاعدة البيانات و أنا سأعمل لك المطلوب ان شاء الله كما تريد من أول مرة ;)

You can fly while you can touch the sky

#12

مش هينفع انى ابعت الملفات علشان هى كبيرة بس هقول الفكرة

بس يا عم انا عامل file manager حيث للكل عضو folder على السرفر فيمكنه رفع ملفات وانشاء ملفات وكذلك Shared Folder عام لكل الاعضاء حيث يمكن لكل عضو ان يترك اى ملف فى هذا ال Shared Folder حيث ان عندى يضعه فى ال shared folder بيتم تسجيله فى قاعدة بيانات لمعرفه صاحب هذا الملف والمطلوب هو

* ان فى ال folder بتاع العضو اذا كان فيه ملف قد وضعه من قبل فى ال shared folder يأخذ شكل معين مختلف عن باقى الملفات

فنا فكرت انى هعمل مقارنه بين الملف الموجود فى ال folder بتاع العضو وقاعدة بيانات فلو موجود يتغير شكلة و لو مش موجود يأخد الشكل العادى

فستخدمت do while not rs.EOF

* المشكلة هىالتكرار فى do while not rs.EOF حيث انه لما بيقارن بيروح الى اول حقل ويقارن اسم الملف الموجود فى ال folder بتاع العضو واسم الملف الموجود فى قاعدة البيانات

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

بختصار انا عاوز كود يدرو على اسم الملف فى قاعدة البيانات مرة واحدة مش حقل حقل بس

ويا محمد لو كان عندك موبايل او تليفون هاتو علشان اكلمك واشرحلك لو مش المشكله واضحة

#14

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

سأجهز لك الملف و ارفقه بعد قليل ..

You can fly while you can touch the sky

#15

شكرا يا اخ محمد انا حلت المشكله دة عن طريق rs.filter وهى طريقة سهل جدا

حيث يتم البحث فى قاعدة البيانات مرة وحدة مش حقل حقل وذلك لتجنب التكرار والكود اه

Rs.Filter = "folname='" & f1.Name & "'"

IF NOT Rs.EOF THen 

s = s & "<td class='dataTD' width='30' align='center'height='15'><font face='Verdana' size='1'>[img=imgsshared.gif]</font></td>" 

'the file exists

ELSE

'it does not exist

s = s & "<td class='dataTD' width='30' align='center'height='15'><font face='Verdana' size='1'>[img=imgsshar.gif]</font></td>" 

END IF

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

#16

و هذا حل اخر أيضا ..

:) الان فهمت فكرتك لكن ليه عندك رجاء .. يا ريت تستخدم اللغة العربية لشرح المشلكة .. لأني بصراحة تهت ..

شوف الموضوع بسيط جدا .. كل ما عليك انك أكيد راح تدخل لحساب العضو صح ؟؟

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

اذا كانت الملفات مرفوعة و خلاص راح تكون في الملجد folder الخاص بكل مستخدم .. نقوم بعمل استعلام يقوم بعمل فحص لكل عضو .. طبعا يفحص الملفات التي عنده و كل ملف يقارنه مع ملفاته الموجودة في جدول الملفات المشتركة (طبعا ان كنت لم تحدد رقم للعضو في الملفات المشتركة و هذا غير منطقي ستقوم بالمقارنة مع كل الملفات المووجودة في جدول الملفات المشتركة) .. تجعل هنا مؤشر لنفرض ان اسمه flag تقوم قيمته False و في حال وجود هذا الملف قم بعمل وظيفة أي تغيير صورة الحقل مباشرة للصورة الأخرى التي تدل على ن الملف مشترك ..

هذا كود توضيحي كخوارزمية للعمل :

 set rs=cn.execute("SELECT * FROM users")

  while not rs.EOF 

   set objRs=cn.execute("SELECT * FROM folder where userIs="&rs("userId"))

      while not objRs.EOF 

         call checkFile(objRs("userId"),objRs("fileName"))

  ' انتبه الى أن objRs("userId") = rs("userId") 

  ' لانه حقل مشترك بين الجدولين



      objRs.MoveNext

      WEND

  rs.MoveNext

  Wend



  Function checkFile(userId,fileName)

    if userId<>"" or fileId<>"" then

      set recordTemp=cn.execute("SELECT * FROM sharedFiles")

       while not recordTemp.EOF

         IF recordTemp("fileName")=fileName  THEN

           recordTemp("fileImageSource")="../images/shFile.gif"

           recordTemp.Update

         END IF

       recordTemp.MoveNext

       WEND

    end if



 End Function

You can fly while you can touch the sky

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

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