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

مقارنة اسماء في جدولين

بدأه R_IT في 14 أكتوبر 2009 · 9 رد · 1,068 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اخواني مشرفي واعضاء المنتدى

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

الحقيقة لدي مشكلة اود طرحها طالبا مساعدتكم وجزاكم الله خيرا

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

انا اعرف انه في حالة الاسماء متطابقة فان الموضوع سهل جدا ولكن وجدت ان كثير من الاسماء كتبت بصيغ اخرى مثلا (عبد الحميد) تكتب (عبدالحميد) او (أحمد) تكتب (احمد) او مثلا (حمزة) تكتب (حمزه) وهكذا..

الفكرة لدي هو ان اقوم بعملية استبدال هذه الاسماء باسماء موحدة بعدة استعلامات و القيام بالفاء كافة الفراغات في الاسم مثال (احمد طارق سلمان) اريدها تكتب بهذه الصيغة (احمدطارقسلمان) ثم عمل المقارنة ولكني امضيت فترة طويلة ولم اتوصل الى النتيجة الصحية وليس لدي الخبرة الكافية في كتابة الكودات او الدوال فهلا ساعدتموني في حل هذه المشكلة ؟

مع جزيل الشكر

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

Comparison.rar

#2

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

أخي الكريم بالامكان استخدام التحديث للبيانات

بتقنية الاتصال ADO مع لوب تحديث السجلات

مهما كثرت ... جرب الكود التالي مع الجدول الاول المسمى Tblnames1

مع اضافة ماتريد لدالة Replace ستجد ان اللوب يحدث الاسماء التي فيها اشكال

مثل أحمد سيتحدث الى احمد في كل الحقل و عبد الحميد الى عبدالحميد وحمزة الى حمزه

وهكذا ....... هذه إضاءة بسيطة وفتح للطريق لك لكي تقوم بذلك بنفسك

الان أنشيء نموذجا جديدا .. ضع عليه زر أمر

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

Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
rst.Open "[Tblnames1]", CurrentProject.Connection, _
adOpenDynamic, adCmdTable
Do Until rst.EOF
rst!Name = Replace(rst!Name, "أحمد", "احمد")
rst!Name = Replace(rst!Name, "حمزة", "حمزه")
rst!Name = Replace(rst!Name, "عبد الحميد", "عبدالحميد")
rst.Update
rst.MoveNext
Loop
rst.Close
MsgBox "تم التحديث", _
	vbInformation + vbOKOnly, _
	"EKSEER"

وفقك الله ورعاك

تم تعديل هذه المشاركة بواسطة اكسيرالحياة في 15 أكتوبر 2009 في 02:14

#3

اخي اكسير الحياة

رعاك الله وبارك فيك

لقد عمل الحدث بصور رائعة ولكن بقيت الفراغات بين الاسماء هل هناك طريقة لالغاء كافة الفراغات بين الاسماء هذا فيما يخص الجزء الاول

الجزء الثاني هو المقارنة بين الجدولين حيث وجدت ان هناك اسماء ثلاثية واخرى رباعية فيجب قطع جزء من الاسم يعني مثلا اعمل المقارنة على 20 حرف

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

مع التقدير

#4

وبناءً على فتح الأستاذ إكسير، ما رأيك أن تجرب الاستعلام التالي:

SELECT Tblnames1.name
FROM Tblnames1, tblnames2
WHERE Replace(Replace(Replace([Tblnames1].[name]," ",""),"ة","ه"),"أ","ا") like Replace(Replace(Replace([Tblnames2].[a_name]," ",""),"ة","ه"),"أ","ا") & '*' or Replace(Replace(Replace([Tblnames2].[a_name]," ",""),"ة","ه"),"أ","ا") like Replace(Replace(Replace([Tblnames1].[name]," ",""),"ة","ه"),"أ","ا") & '*'
1 −1
#5

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

أخى إكسير ما شاء الله كود رائع.

أخى أحمد مبارك أيضاً إستعلام رائع ... ولكن:

أعتقد أننا نحتاج هنا إلى وضع الأسماء التى نريد تعديلها كاملة .. وإلا سيقوم الاستعلام باستبدال الحروف المكتوبة فى الاستعلام أياً كان موقعها بالكلمة .. أمثلة على ذلك أن يصبح "مبارك الحيقى" مبأرك ألحيقى" لاحظ الهمزة على ألف المد العادية بالإسمين .. وهكذا مثلاً إبراهيم (إبرأهيم) .. سامح (سأمح) .. إلخ.

ونفس الكلام طبعاً للحروف الأخرى مثال (زهرة) ستصبح (زةرة) .. واحنا ما نقدرش على زعل زهرة طبعاً :) .....إلخ

تم تعديل هذه المشاركة بواسطة Mohamed Nada في 16 أكتوبر 2009 في 14:05

... بقمة السعادة .. أعود بإذن الله لصحبتكم الرائعة قريباً ...

#6

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

ملحوظة جيدة أخي محمد، ولذلك عمدت إلى استخدام الاستعلام، لأنه لا يغير في قيم الجداول شيئاً، فقط يطابق الحروف مؤقتاً للمقارنة، ولذلك لم يضرنا أي تغييرات أجرينا، مادامت متطابقة في الحقلين المعنيين... مع العلم أن الاستعلام يقوم بتغيير أ إلى ا وة إلى ه وليس العكس، لكن طريقة عرض الاستعلام هنا في صفحة المنتدى جاءت معكوسة، لكن هذا لا يغير من منطق الحل: توحيد طريقة كتابة الحروف كيف كانت لغرض المقارنة فقط مع عدم تغيير القيم الحقيقية في الجداول...

هذا ظني والله أعلم

#7

أخى الحبيب أحمد

جزاك الله خيراً على التوضيح والمتابعة

محمد ندا

... بقمة السعادة .. أعود بإذن الله لصحبتكم الرائعة قريباً ...

#8

اخي العزيز احمد مبارك

الاخ العزيز محمد ندا

وفقكم الله اساتذتنا الاعزاء واشكر لكم مروركم

في الحقيقة استفدت كثير من الحدث الذي عمله الاخ اكسير جزاه الله خيرا وقد اضفت له داله اخرى وجدتها في منتدانا الغالي وهي لمزج الاسم وعملت مقارنة بين جدولين وكانت النتيجة جيدة بالنسبة لي وسوف ارفق القاعدة وارجو ملاحظة الجدولين لرؤية شكل الحقول قبل تشغيل الفورم او الاستعلام.

المهم اخواني وماأرجوه من مساعدة هو عمل فورم رئيسي مرتبط بالجدول الاول واخر فرعي مرتبط بالجدول الثاني عند التحرك في الفورم الرئيسي (اي قيد) تظهر القيود (الاسماء) ذات الشبه في الفورم الثانوي على ان يكون الفلتر من الحرف الخامس الى الحرف العاشر ( يعني منتصف الاسم الكلمة تقريبا) او حسب التحديد ويقوم بنقل ID للفورم الاول بحقل للجدول الثاني (الفورم الثاني).

ارجو اني قد وفقت في شرح مامطلوب

جزاكم الله خيرا

Comparison.rar

#9

الاخ اكسيرالحياة الاخوان احمد مبارك ، محمد ندا

الاخوان اعضاء المنتدى المحترمين

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

اخواني كما بدأتم مع ارجو مساعدتي في اكمال ما مطلوب

لدي فورم فرعي QRYf1 مرتبط بجدول tblnames1 وفورم فرعي اخر QRYf2 مرتبط بجدول tblnames2

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

واكون شاكر فضلكم .ارفق القاعدة كمثال

Comparison.rar

#10

اخواني مشرفي واعضاء المنتدى

ارجو ابداء ملاحظاتكم

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

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

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

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

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