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

ماالخطأ في هذا الكود ....... ( استعلام عن تكرار البيانات )

مغلق
بدأه salehr3 في 30 يوليو 2006 · 8 رد · 569 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

لقد وجدت في هذا المنتدى مثال جميل وهو عبارة عن مذكرة تحتوي اسم ورقم ومذكرة ... ولما تضيف اسم جديد ... إذا وجد تكرار في البيانات يعلمك عن وجود هذا الأسم .. وأنا عملت مثل هذا المثال بالضبط ولكن للأسف فوق كل ذلك يوجد خطأ في جملة( Set Rec = DB.OpenRecordset(SQL لا أعرف ما السبب وعند استخدامي للمثال لا يظهر هذا الخطأ ... أرجو إفادتي بالخطأ ...والكود إلي عاملنه كامل في الأسفل ....لا زد ولا نقصت فيه وهو نقلا عن الملف الذي حملته من هنا

Dim DB As Database
Dim Rec As Recordset

Private Sub Command1_Click()
Text1.Text = ""
Text2.Text = ""

End Sub

Private Sub Command2_Click()
If Trim(Text1.Text) = "" Then MsgBox "الرجاء التأكد من المدخل ", vbInformation, "": Exit Sub
If Trim(Text2.Text) = "" Or Not IsNumeric(Text2.Text) Then MsgBox "الرجاء التأكد من المدخل ", vbInformation, "": Exit Sub




'------------------------
'البحث عن القيمتين رقم الملف والاسم قبل عملية الاضافة فاذا وجدا لم يقم بالاضافة بل سيسألك اذا رغبت بالتعديل عليه

SQL = ""
SQL = "Select * from [tab3] Where [name] = " & Trim(Text1.Text) & " and [numb] = '" & Trim(Text2.Text) & "'"
Set Rec = DB.OpenRecordset(SQL) 
With Rec
  If Rec.EOF Then
'في عدم وجود السجل سيتم تنفيذ الكود التالي

.AddNew

			Else
'في حال وجود السجل سيتم تنفيذ الكود التالي

			Msg_1000 = MsgBox("السجل موجود هل تريد التعديل عليه", vbQuestion + vbYesNo, "")
		 If Msg_1000 = vbYes Then

			.Edit
				Else

 Exit Sub
 End If

  End If

!Name = Trim(Text1.Text)
!numb = Trim(Text2.Text)
.Update
Data1.Refresh

End With
End Sub

Private Sub Form_Load()
Set DB = DBEngine.OpenDatabase(App.Path & "\db1.mdb")

'Data
With Data1

	.DatabaseName = App.Path & "\db1.mdb"
	.RecordSource = "tab3"

End With
End Sub

تم تعديل هذه المشاركة بواسطة salehr3 في 30 يوليو 2006 في 13:34

#2

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

لديك خطأ في جملة الـ SQL

اكتبها كالتالي

 SQL = "Select * from [tab3] Where [name] = '" & Trim(Text1.Text) & "' and [numb] = '" & Trim(Text2.Text) & "'"

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

	rs.FindFirst "ID= '" & Text3 & "'"
	If rs.NoMatch Then
		'ضع كود اضافة السجل هنا
		MsgBox "No"
	Else

		MsgBox "عفوا هذا الرقم تم تسجيله من قبل"

	End If

ارجو انه يفيدك

===============

الى اللقاء

تم تعديل هذه المشاركة بواسطة MR^King في 30 يوليو 2006 في 14:14

JusT LeT YouR MinD WorK

#3

السلام عليكم

اخي الكريم اسم الحقل يدل على انه بص

اقتباس
[name] = " & Trim(Text1.Text) & "

والنصوص في لغة SQL يجب ان توضع بين علامات التنصيص " " او ' '

والارقام بدون علامات تنصيص

والله أعلم

سبحانك اللهم وبحمدك أشهد ان لا اله الا أنت

أستغفرك وأتوب اليك

الهم صلي وسلم وبارك على سيدنا وحبيبنا محمد

#4

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

اقتباس
والنصوص في لغة SQL يجب ان توضع بين علامات التنصيص " " او ' '

والارقام بدون علامات تنصيص

والله أعلم

عفوا اخي محب الرسول هذا الكلام خاطئ

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

في حالة البحث عن رقم نسخدم العلامتين ++

اما في حالة البحث عن نص نقوم بوضع &&

هذا هو فقط الفرق بينهما

والخطأ في الكود الذي وضعه الاخ salehr3 هو انه لم يضع العلامتين ' ' في المتغير الاول لجملة الاستعلام

اما باقي الجملة فهي صحيحة

بالتوفيق :)

=====================

الى اللقاء

JusT LeT YouR MinD WorK

#5

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

saleh.zip

#6

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

اخي صالح قمت بالتعديل على الكود المرفق

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

الكود الان يعمل بشكل سليم ولكن ...

لا يمكن تكرار اي سجل يحتوي على الشرطين يعني

لو ان هناك سجل وكان حقل الـ name يحتوي على MA مثلا حقل الـ numb المقابل له يحتوي على الرقم 4

فانه لايمكن اضافة سجل يحتوي على نفسي البيانات

بينما اذا كان مثلا حقل الـ name يحتوي على MA والـnumb يحتوي على 7 (او العكس) فسيتم اضافة السجل

ارجو ان تكون فهمت المقصود من الملحوظة السابقة واليك البرنامج بعد التعديل

بالتوفيق

================

الى اللقاء

saleh.rar

JusT LeT YouR MinD WorK

#7

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

لن اتناقش حول

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

في حالة البحث عن رقم نسخدم العلامتين ++

اما في حالة البحث عن نص نقوم بوضع &&

هذا هو فقط الفرق بينهما

ولكن ارجو ان تقرأ عن لغة SQL جيدا

وتجميع السلاسل النصية (String) بلغة visual basic

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

من رقم الى نص فهو غير مجدي اخي الكريم

هذا يعني الاستغناء عن النوع number من قواعد البيانات!!

اذا اردت الحل راجع ما كتبته

اقتباس
والنصوص في لغة SQL يجب ان توضع بين علامات التنصيص " " او ' '

والارقام بدون علامات تنصيص

والله أعلم

اي ان الجملة يجب ان تكون هكذا

SQL = "Select * from [tab3] Where [name] = '" + Trim$(Text1.Text) + "' and [numb] = " & Text2.Text

والله اعلم

تم تعديل هذه المشاركة بواسطة Mo7eb_Alrasool في 30 يوليو 2006 في 21:10

سبحانك اللهم وبحمدك أشهد ان لا اله الا أنت

أستغفرك وأتوب اليك

الهم صلي وسلم وبارك على سيدنا وحبيبنا محمد

#8

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

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

وضع علامات ++ او && لم اكن اقصد وضعها بدلا من ' او " ولكن لها مكانها واظنك تعرفه

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

ويمكنك تحميل المثال وتجربته

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

وطبعا الاراء تختلف من شخص لآخر لكن المهم ان الاختلاف في الرأي لا يفسد للود قضية

تمنياتي بالتوفيق لك وللجميع :)

=================

الى اللقاء

JusT LeT YouR MinD WorK

#9

شكرا جزيل للأخ mr king على مساعدته الطيبة والحين تمام عندي وهذا ما أردته من أسبوع وأنا أحاول ...

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

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

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

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

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

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

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