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

هل يمكن دمج وظيفتين مختلفتين لمفتاح واحد

بدأه يوسف دايت في 6 أبريل 2008 · 2 رد · 823 مشاهدة · في قسم قواعد البيانات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أرجو ان تكونوا بخير وفي أحسن حال

عندي مشكلة في أحد النماذج ببرنامجي وهو نموذج أقوم فيه بحفظ جميع الملاحظات التغذوية الخاصة بالمريض

ولغاية هنا الموضوع ماشي

المشكلة هي في

مفتاح حفظ سجل جديد

ومفتاح حفظ التعديلات علي السجل الحالي

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

ولكن لو قام المستخدم بالضغط علي مفتاح حفظ سجل جديد وكان السجل موجود أصلا فإنني احصل علي رسالة خطأ بالطبع لان رقم السجل وهو كود المريض رقم فريد وبالتالي لا تقبل العملية

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

يعني يكون للمفتاح وظيفة حفظ السجل الجديد إذا كان كود السجل الحالي غير موجود

ووظيفة اخري هي حفظ التغييرات علي السجل في حال كان السجل موجود من قبل أنا قرأت روتين قبل كدة بس مش فاكر وظروف ضيق الوقت تقف حائلا بيني وبين إكمال تعلم البرمجة

والموضوع الآن هو حل للمشكلة

أنا حاولت أجعل المفتاحين visible.false وعندما يتم العثور علي الكود الخاص بالسجل يصبح مفتاح حفظ التغييرات هو الفعال والآخر مخفي ولكن لم أوفق

عايز أرفق لكم النموذج بس المشكلة الحجم كبير ومش عارف أرفقة

سوف أرفق لكم الكودالكود الخاص بمفتاح حفظ سجل جديد ومفتاح حفظ التغييرات في السجل الحالي

وشكرا سلفا

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

وهذا كود مفتاح حفظ سجل جديد لآول مرة

Private Sub Command6_Click()

On Error Resume Next

If Text4.Text = "" Then

MsgBox "من فضلك ادخل البيانات اللازمة", vbCritical, "خطأ"

Text4.SetFocus

Exit Sub:

End If

If Text8.Text = "" Then

MsgBox "من فضلك ادخل البيانات اللازمة", vbCritical, "خطأ"

Text8.SetFocus

Exit Sub:

End If

If Text10.Text = "" Then

MsgBox "من فضلك ادخل البيانات اللازمة", vbCritical, "خطأ"

Text10.SetFocus

Exit Sub:

End If

If Text11.Text = "" Then

MsgBox "من فضلك ادخل البيانات اللازمة", vbCritical, "خطأ"

Text11.SetFocus

Exit Sub:

End If

If Text12.Text = "" Then

MsgBox "من فضلك ادخل البيانات اللازمة", vbCritical, "خطأ"

Text12.SetFocus

Exit Sub:

End If

If Text13.Text = "" Then

MsgBox "من فضلك ادخل البيانات اللازمة", vbCritical, "خطأ"

Text13.SetFocus

Exit Sub:

End If

If Text14.Text = "" Then

MsgBox "من فضلك ادخل البيانات اللازمة", vbCritical, "خطأ"

Text14.SetFocus

Exit Sub:

End If

Text4.Text = Date

rs.AddNew

Rem ====================================================

rs("PTCODE") = Text1.Text

rs("eatinhabt") = Text8.Text

rs("like") = Text10.Text

rs("dislike") = Text11.Text

rs("foodallerg") = Text12.Text

rs("diettatinrem") = Text13.Text

rs("diettatinnam") = Text14.Text

rs.UPDATE

rs.CLOSE

s = "select * from nutrrecord"

rs.OPEN s, db, adOpenDynamic, adLockOptimistic

Set DataGrid1.DataSource = rs

rs.UPDATE

End Sub

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

Private Sub Command2_Click()

rs("PTCODE") = Text1.Text

rs("eatinhabt") = Text8.Text

rs("like") = Text10.Text

rs("dislike") = Text11.Text

rs("foodallerg") = Text12.Text

rs("diettatinrem") = Text13.Text

rs("diettatinnam") = Text14.Text

rs.UPDATE

rs.CLOSE

s = "select * from nutrrecord"

rs.OPEN s, db, adOpenDynamic, adLockOptimistic

Set DataGrid1.DataSource = rs

rs.UPDATE

Rem ====================================================

End Sub

هل بالإمكان التصحيح علي نفس البنية الحالية وبدون تعديل إسماء المتغيرات

أرجو المساعدة وشكرا جزيلا علي وقتك

#2

الأخ الكريم ، تحية طيبة وبعد ،

أنا لا أعلم ما هو المفتاح الرئيسي للجدول ، ولكنني سأفترض أن المفتاح الرئيسي للجدول هو PTCODE وأن نوعة رقمي ، انظر الي الكود بعد التعديل :

Private Sub Command6_Click()
	On Error Resume Next
	If Text4.Text = "" Then
		MsgBox "ãä ÝÖáß ÇÏÎá ÇáÈíÇäÇÊ ÇááÇÒãÉ", vbCritical, "ÎØÃ"
		Text4.SetFocus
		Exit Sub
	End If

	If Text8.Text = "" Then
		MsgBox "ãä ÝÖáß ÇÏÎá ÇáÈíÇäÇÊ ÇááÇÒãÉ", vbCritical, "ÎØÃ"
		Text8.SetFocus
		Exit Sub
	End If

	If Text10.Text = "" Then
		MsgBox "ãä ÝÖáß ÇÏÎá ÇáÈíÇäÇÊ ÇááÇÒãÉ", vbCritical, "ÎØÃ"
		Text10.SetFocus
		Exit Sub
	End If

	If Text11.Text = "" Then
		MsgBox "ãä ÝÖáß ÇÏÎá ÇáÈíÇäÇÊ ÇááÇÒãÉ", vbCritical, "ÎØÃ"
		Text11.SetFocus
		Exit Sub
	End If

	If Text12.Text = "" Then
		MsgBox "ãä ÝÖáß ÇÏÎá ÇáÈíÇäÇÊ ÇááÇÒãÉ", vbCritical, "ÎØÃ"
		Text12.SetFocus
		Exit Sub
	End If

	If Text13.Text = "" Then
		MsgBox "ãä ÝÖáß ÇÏÎá ÇáÈíÇäÇÊ ÇááÇÒãÉ", vbCritical, "ÎØÃ"
		Text13.SetFocus
		Exit Sub
	End If

	If Text14.Text = "" Then
		MsgBox "ãä ÝÖáß ÇÏÎá ÇáÈíÇäÇÊ ÇááÇÒãÉ", vbCritical, "ÎØÃ"
		Text14.SetFocus
		Exit Sub
	End If


	Rs.Filter = "PTCODE = " & Val(Text1.Text)
	If (Rs.RecordCount = 0) Then
		Text4.Text = Date
		Rs.AddNew
	End If

	Rs("PTCODE") = Text1.Text
	Rs("eatinhabt") = Text8.Text
	Rs("like") = Text10.Text
	Rs("dislike") = Text11.Text
	Rs("foodallerg") = Text12.Text
	Rs("diettatinrem") = Text13.Text
	Rs("diettatinnam") = Text14.Text
	Rs.Update

	If (Rs.State = 1) Then Rs.Close
	s = "select * from nutrrecord"
	Rs.OPEN s, db, adOpenDynamic, adLockOptimistic
	Set DataGrid1.DataSource = Rs
	Rs.Update
End Sub

لكن أخي ممكن سؤال ، لماذا تغلق الـ Rs وتجلب البيانات من جديد في النهاية كما هو موضح بالكود التالي :

If (Rs.State = 1) Then Rs.Close
s = "select * from nutrrecord"
Rs.OPEN s, db, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = Rs
Rs.Update

أعتقد أن الهدف هو جلب البيانات من جديد بعد التعديل علي الشبكة ( أليس كذلك ) !!!

أم أنه مجرد فتح من جديد لهدف الـ Grid ؟؟

إذا كان لهدف الـ Grid فقط لا غير فيمكنك إنشائة كما يلي :

Rs.Filter = ""
Set DataGrid1.DataSource = Rs

بدلاً من إرتجاع البيانات من جديد

شكراً

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

#3

الشكر الكثير لك انت وكلمة شكرا تقف عاجزة عن الشكر

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

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