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

ارجو نوضيح عدم تكرار السجل

مغلق
بدأه ابوعمر75 في 9 فبراير 2008 · 20 رد · 3,542 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الاخوه الاعزاء عندي كود نقلته من المنتدى حول عدم تكرار السجل ولكن هذا لايمنع التكرار اذا كان الاسم فيه فراغات مثل

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

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

وتقبلوا خالص تحياتي

#2

لازلنا منتظرين

#3
ابوعمر75 كتب:
لازلنا منتظرين

اخي الفاضل ابو عمر

ولماذا الإنتظار بارك الله بك

ضع مثالك حتى يستطيع الأخوة في المنتدى مساعدتك

#4

دائما سباقه الله يسعدك في الدنيا والاخره

هذا المثال

#5

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

ربما تفيدك

Option Compare Database
Option Explicit

Function removespaces(originaltext)

Dim originaltextlen
Dim i
Dim temp
Dim temp1

If originaltext <> " " Then

	originaltextlen = Len(originaltext)
	temp = ""
	temp1 = ""

	For i = 1 To originaltextlen

		temp1 = Mid(originaltext, i, 1)

		If temp1 <> " " Then
			temp = temp & temp1
		End If

	Next i

	removespaces = temp

End If

End Function

وهذا كود استدعاء الدالة في مربع نص بالنموذج

=removespaces([text1])

لكن مربع النص غير منضم ومثالك مربع النص منضم

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#6

بسم الله الرحمن الرحيم

بارك الله فيكم اخواني

#7

أخي الغالي

انا جربت دالة Replace وطلع هذا الكود

Private Sub Text0_AfterUpdate()
Me.Text0 = Replace([Text0], " ", "")
End Sub

لكن هناك مشكلتين

المشكلة الاولي ان لازم مربع النص يكون غير منضم

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

عموماً انا ما زلت بجرب وربنا يسهل واوصل لحل

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 11 فبراير 2008 في 12:17

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#8

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

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

وشكرا لكم جميعا

_____.rar

#9
اقتباس
المشكلة الاولي ان لازم مربع النص يكون غير منضم

اخي محمد لم تواجهني هذه المشكلة اثناء محاولتي الحل..فمربع النص يمكن ان تغير قيمته حتى لوكان منضما، ولكن الا يكون منضما لمعادلة او تعبير رياضي..

فكرت في طريقة باستبدال الفراغات ب "-" ثم اعادة استبدالها مرة اخر ولكن سندخل في دائرة مفرغة..

همام

وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ

مواضيعي ومشاركاتي

#10

بارك الله بكم جميعا اخواني الكرام

اخي الكريم ابو عمر

هذا ملفك بعد التعديل

اكتب ما شئت من الأسماء المتشابهه سواء بدون فراغات او حتى بـ 100 او 1000 فراغ بين كل اسم والأخر وستجد ان الكود والبرنامج سيتعرف على الإسم مباشرة ولن يقبل التكرار

post-15367-1202759616_thumb.gif

انتقل الى سجل جديد ثم اكتب اي اسم مشابه للإسم .. عبدالله احمد مثلا اكتب عبد الله احمد او عبد الله احمد او عبدالله احمد

عند ادخال اسم غير هذا الإسم فلا يوجد مشكله ولكن لا يمكن تكرار نفس الإسم مرتين مهما حدث

post-15367-1202759969_thumb.gif

بعد الإدخال والإنتقال الى سجل جديد لن يقبل البرنامج وسيظهر رساله اعتراضية بها اسم الشخص الموجود اصلا في الجدول مسبقا والمشابه للمدخل حديثا وسيتم الغاء السجل فورا

post-15367-1202760011_thumb.gif

za_NoRep.rar

1
#11

شكراً للأخت Zahrah على هذا الحل فإننى حاولت كثيراً وضح حلول أو بدائل لهذه المشكلة ولكن دون جدوى كانت كل محاولة بالرغم من نجاحها إلا أنها كانت تحتوى على مشكلة ولا تؤدى الغرض.....

عموماً حلكم هذا قد قرب المشوار كثيراً..

إلا أنه هناك ملاحظة صغيرة...

مشكلة الهمزات "اأإآ" وحرف الياء "ى ي" أجد معهم مشكلة فى مقارنة الأسماء الموجودة قبلاً

أرجو أن يكون لهما حل..

وشكراً مرة أخرى على هذه الهدية...

#12

رائع جدا مشكورين على المجهود العظيم

#13

أختي الغالية زهرة

بارك الله فيكي علي هذا العمل الرائع

أخي الغالي hongy lover

أنت معك حق بنسبة 500%

لذلك عملت تعديل بسيط علي مرفق استاذتنا الغالية زهرة واضفت الدالة Replace لكي يتم استبدال الهمزات بحروف من غير همزات ايضا تم حل مشكلة

( ي و ى ) وفي هذه الحالة اذا حاولنا تسجيل اسم بالبرنامج

عبد الله احمد

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

عبد الله أحمد

هنا الفرق في الهمزة التي فوق أحمد في هذه الحالة لا يقبل البرنامج التسجيل

ويصبح الكود كالتالي

Private Sub name_AfterUpdate()
Me.txtName = Replace([txtName], "أ", "ا")
Me.txtName = Replace([txtName], "إ", "ا")
Me.txtName = Replace([txtName], "إ", "ا")
Me.txtName = Replace([txtName], "آ", "ا")
Me.txtName = Replace([txtName], "ة", "ه")
Me.txtName = Replace([txtName], "ي", "ى")
End Sub

مرفق الملف بعد التعديل

za_NoRep_up.rar

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 12 فبراير 2008 في 10:31

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#14

شكراً أخى محمد فؤاد

فكرة حلوة

لكن أعتدت أن أقيم فعالية تنفيذ الأكواد التى أنتهى منها ولا يرضينى سوى نتيجة 100% بدون أى أخطاء

إذا جربت كتابة اسم يحتوى فى وسطه على ياء مثل "عبير" ستجد الاسم تحول "عبىر"

ما نريده صح 100% فعلاً هو أن يتم إدخال الأسماء صحيحة مع احتفاظها بالهمزات و"ي"

أى يتم إدخال الاسم كما هو

عبير أحمد مهني

آمال معين مهدي

وهكذا....

ولكن إذا صادف أحد آخر وقام بإدخال الأسماء هكذا

عبير احمد مهنى

امال معين مهدى

يرفض تسجيلها مرة أخرى

هى دية الفكرة.....

#15

بارك الله بكم جميعا

بناء على طلبكم يمكننا عدم تكرار اي اسم مهما وجد به فراغات وايضا مع اختلاف الكتابة سواء للهمزات مثل [أإآا] او التاء سواء كانت مربوطة او هاء غير منقوطه [ة ه] او الياء سواء ياء مقصورة بدون نقط او ياء في آخر الكلمة [ى ي]

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

post-15367-1202818137_thumb.gif

post-15367-1202818157_thumb.gif

post-15367-1202818177_thumb.gif

ادخل الكلمات المطلوب استبدالها مثلا

احمد ..... الى .... أحمد

ابراهيم ... الى .... إبراهيم

امال ...... الى ..... آمال

مدنى .... الى ..... مدني

مهدى ... الى .... مهدي

وقيس على ذلك بقية الكلمات التي تريد استبدالها

اختر خصائص مربع النص ثم قم بضبط هذه الخيارات بهذا الشكل

post-15367-1202818232_thumb.gif

في حدث الحالي للنموذج ضع هذا الكود

Private Sub Form_Current()
Me.txtName.AllowAutoCorrect = True
Me.Refresh
End Sub

وهذا المثال بعد التعديل

za_NoRep_UP.rar

1
#16

بارك الله فيكي يا اختنا الغالية زهرة

حل جميل

لكن عندي سؤال

هل سيتم ضبط كل هذه الاعدادات وكتابة الاسماء المتوقع تغييرها عند نقل قاعدة البيانات من جهاز لاخر

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

لكن المشكلة مش في ضبط الاعدادات

المشكلة هنا هفضل اخمن جميع الاسماء المتوقعة والتي تحتوي علي همزات وخلافة اعتقد ان الموضوع هيكون مرهق للغاية خصوصا لو المؤسسة كبيرة الحجم

او حتي معدل دوران العمالة فيها كثيرة وسريعة

لذلك من وجهة نظري ان حل دالة replace اوقع

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

هذا رأيي

ويا ريت لا احد يزعل من اختلاف الاراء

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 12 فبراير 2008 في 16:36

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#17

اخي الفاضل محمد

لا يوجد اي زعل في اختلاف وجهات النظر

هذا الموضوع تقوم بعمله مرة واحده فقط على القاعدة التي تعمل عليها ولن تتغير هذه الإعدادات إلا ان تقوم انت بتغييرها عمدا

وحتى اثناء نقل القاعدة الى جهاز آخر سوف تحتفظ القاعدة بهذه الإعدادات المسبقة .

اذا كل ما في الموضوع هو القيام بين كل فتره وفتره عند وجود كلمات جديده او متطابقة مع اختلاف الهمزات او غيرها ان تقوم بإدراجها .

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

اما دالة الإستبدال Replace فأجد انها غير عملية بالنسبة للغة العربية حيث انها سوف تستبدل اي حرف مثل الألف بدون همزه ( ا ) الى ( أ او إ او آ ) لأنها لا تفرق بين سياق الحرف في الكلمة او الإسم ولكن هذه الدالة تنفع مع اللغة الإنجليزية لعدم وجد اي همزات او خلافة

1
#18

بارك الله فيكي يا اختنا الغالية زهرة علي الايضاح

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#19

لي مداخة اولا وسؤال، اذا سمحتم

بعد شكر كل من الاخت زهرة والاخ العزيز محمد فؤاد، اسال مايلي،،

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

مثال.. لاستخدام التاريخ الهجري.. في قاعدة البيانات.ز

اقتباس
Application.SetOption "Use Hijri Calendar", True

وهناك امثلة كثيرة خطر ببالي هذا فقط للتو واردت ان اشارك به..

همام

وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ

مواضيعي ومشاركاتي

#20

بارك الله بك اخي همام

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

#21

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

بصراحه ماكان ودي انها الموضوع كنا نستمتع بحوار العمالقه

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

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