تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] مراجعة الاسم قبل التعديل بقاعدة البيانات
#1
السلام عليكم

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

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

دة كود التعديل العادي


كود :
  Dim com As New OleDbCommand("UPDATE  CLIENT_TB SET CLIENT_NAME=@CLIENT_NAME WHERE  CLIENT_ID =@CLIENT_ID", con)
       com.Parameters.AddWithValue("@CLIENT_NAME", TEXT_NAME.TEXT)
       com.Parameters.AddWithValue("@CLIENT_ID",LAB_IDVAL.Text)
       con.Open()
       com.ExecuteNonQuery()
       con.Close()

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


كود :
  fillDATASET(Me, DSDETAILSFILA, "CLIENT_TB", "SELECT CLIENT_NAME FROM CLIENT_TB WHERE  CLIENT_NAME = '" & TEXT_NAME.Text.Trim() & "'")
       If Not DSDETAILSFILA.Tables("CLIENT_TB").Rows.Count > 0 Then
           Dim com As New OleDbCommand("UPDATE  CLIENT_TB SET CLIENT_NAME=@CLIENT_NAME WHERE  CLIENT_ID =@CLIENT_ID", con)
           com.Parameters.AddWithValue("@CLIENT_NAME", TEXT_NAME.TEXT)
           com.Parameters.AddWithValue("@CLIENT_ID", LAB_IDVAL.Text)
           con.Open()
           com.ExecuteNonQuery()
           con.Close()
           Exit Sub
       Else
           MsgBox("الاسم مكرر سابقا يجب تغير الاسمالحالي او تعديلة ")

       End If

المشكلة الان الكود بالاعلي بينفع فقط في حالة الاضافة اما التعديل ففي مشكلة لو بعدل علي بيانات عميل معين وبعدل اي بيانات غير الاسم فمش هيعدل لان الاسم موجود وانا بعدل بنفس الاسم ومش هيكون مكرر عايز فكرة في الموضوع دة
الرد }}}
تم الشكر بواسطة: سعود , asemshahen5
#2
السلام عليكم اخي محمد
يفضل التعديل لكل الحقول وبرقم الاي دي لانه لايتكرر
اي اجعله شرطا 
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
تم الشكر بواسطة: سعود , asemshahen5 , محمد اسماعيل
#3
(02-08-19, 05:21 AM)ابراهيم ايبو كتب :
السلام عليكم اخي محمد
يفضل التعديل برقم الاي دي لانه لايتكرر
اي اجعله شرطا

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

دة عمود الاسم  وبعد ذالك الايدي :-

علي     1
ابراهيم   2
علاء       3  
جابر       4


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

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

ولا  فكرتك اية كاملة عشان مش مركز
الرد }}}
تم الشكر بواسطة: سعود , asemshahen5
#4
اخي الكريم انت اذا مستخدم DataSet او DataTable لماذا تستخدم اكواد اتصال متصل؟!
هل هناك ما يمنع من استخدام التحرير كامل(إضافة تعديل حذف بحث) باستخدام المخزن(ان صحت التسمية) واقصد الجدول المؤقت DataTable او القاعدة المؤقتة DataSet؟
ستجد المتعة والسهولة و الانسيابية ان تعاملت معها.
الا اذا كان هناك مانع لا اعرفه.....
تحياتي.
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
الرد }}}
#5
(02-08-19, 05:48 AM)سعود كتب : اخي الكريم انت اذا مستخدم DataSet او DataTable لماذا تستخدم اكواد اتصال متصل؟!
هل هناك ما يمنع من استخدام التحرير كامل(إضافة تعديل حذف بحث) باستخدام المخزن(ان صحت التسمية) واقصد الجدول المؤقت DataTable او القاعدة المؤقتة DataSet؟
ستجد المتعة والسهولة و الانسيابية ان تعاملت معها.
الا اذا كان هناك مانع لا اعرفه.....
تحياتي.

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

لو دة قصدك فهيا تعود مش اكتر انما مفيش اي مشكلة خالص بالنسبة ليا .
الرد }}}
تم الشكر بواسطة: asemshahen5 , ابراهيم ايبو
#6
PHP كود :
If Not DSDETAILSFILA.Tables("CLIENT_TB").Rows.Count 0 Then 
اريد اسئلك عن السطر هذا وخصوصا الجملة التالية:
DSDETAILSFILA
اليست هذه DataSet ؟
بلى صحيح؟
اذا هي بالفعل DataSet  فهذا يعني البيانات لديك فيها ولست بحاجة للتواصل مع المصدر الاصلي للبيانات في الوقت الحالي.
[تنبيه التحقق فيه نقص - اذا اقتنعت بكلامي واتضح لك باذن الله اكمل معك النقاش وان احببت الاكمال باي اسلوب تراه فانت حر]
اذا اردت التحقق من اسم هل موجود مسبقا ام لا تكتب الكود التالي وهو للاستعلام من نفس الـ DataSet المؤقتة الحالية.
PHP كود :
       If ds.Tables(0).Select("tname='" tname.Text "'").Count 0 Then MsgBox("Exist") : Exit Sub 
حاول تقارن بين هذا الاستعلام  وبين الكود الذي اقتبسته من مشاركتك والذي هو عبارة عن عدد كافة الصفوف.
ارجو تطلع عليها فستجد متعة بالتعامل معها الا ان كان هناك ما يمنع (واقصد مانع فني تقني)

آخر مثال صممته والذي قبله وقبله كله باستخدام الاتصال المنفصل مع DataRow
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
الرد }}}
#7
(02-08-19, 06:32 AM)سعود كتب :
PHP كود :
If Not DSDETAILSFILA.Tables("CLIENT_TB").Rows.Count 0 Then 
اريد اسئلك عن السطر هذا وخصوصا الجملة التالية:
DSDETAILSFILA
اليست هذه DataSet ؟
بلى صحيح؟
اذا هي بالفعل DataSet  فهذا يعني البيانات لديك فيها ولست بحاجة للتواصل مع المصدر الاصلي للبيانات في الوقت الحالي.
[تنبيه التحقق فيه نقص - اذا اقتنعت بكلامي واتضح لك باذن الله اكمل معك النقاش وان احببت الاكمال باي اسلوب تراه فانت حر]
اذا اردت التحقق من اسم هل موجود مسبقا ام لا تكتب الكود التالي وهو للاستعلام من نفس الـ DataSet المؤقتة الحالية.
PHP كود :
       If ds.Tables(0).Select("tname='" tname.Text "'").Count 0 Then MsgBox("Exist") : Exit Sub 
حاول تقارن بين هذا الاستعلام  وبين الكود الذي اقتبسته من مشاركتك والذي هو عبارة عن عدد كافة الصفوف.
ارجو تطلع عليها فستجد متعة بالتعامل معها الا ان كان هناك ما يمنع (واقصد مانع فني تقني)

آخر مثال صممته والذي قبله وقبله كله باستخدام الاتصال المنفصل مع DataRow

فهمتك
الي انتا قولتة صح تماما لو في بيانات كتير انما البحث وعدد الصفوف هيقتصر علي صفين فقط واحد الي انا واقف عندة والثاني المكرر مفيش الوقت او حجم البيانات الي يعطل او ياخذ وقت
انا معاك تمام فيما قولت وطريقتك الافضل   Idea
الرد }}}
تم الشكر بواسطة: asemshahen5 , ابراهيم ايبو
#8
اخي محمد الا يمكن ان يكون هناك سجل احر يحمل نفس الاسم ؟
الجواب يمكن ولكن سيحتلف عنه بالكنية او المواليد او او  ويبقى الاي دي فريد لايتكرر
شيء أخر لماذا تعدل الاسم؟ انت اذا عدلت الاسم هذا يعني شخص اخر وهنا يجب اضافة جديد لاتعديل
ناحية اخرى يمكن جعل حملة التعديل بشرطين Where name=@name And id=@id تشدد زائد
ولكن ليست ذات فائدة لان المعرف هو الاي دي وهذا يكفي
بالنسبة لما قاله اخي الحبيب سعود (هو دائما يضع يده على موطن الداء) الذي يتحدث عنه بسمى الاتصال بالوضع المنفصل
اما بداتا تايل او بداتاست وبصراحة انا استخدم هذا الوضع بنسبة 95 بالمئة  طبعا لكل من الوضع المنفصل والمتصل محاسن وعيوب
ان احببت ذلك تابع مع اخي سعود جزاه الله كل خير سيوضح لك الامر
نسيت ان اسألك كبف تجلب سجل الشخص لتقوم بتعديله؟
ام انك تقوم بكتابة اسم الشخص ومعلوماته ثم عند الحفظ سيتأكد ان كان هذا الاسم موجودا يقوم زر الحفظ بامر تعديل وان لم بكن موجودا
يقوم بامر حفظ ... وهذا ايضا حاطئ لماذا ؟ افرض ان لديك شخص ومسجل باسم Abdullah وقمت بكتابة الاسم لنفس الشخص وانت تقصده تماما وكتبت اسمه هكذا Abdallah فسيعتبر البرنامج ان هذا الاسم غير موجود فما رأيك
لذلك قبل اي تعديل يجب جلب السجل المراد التعديل عليه
دمت بخير اخي محمد
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
تم الشكر بواسطة: asemshahen5 , سعود , محمد اسماعيل
#9
(02-08-19, 07:03 AM)ابراهيم ايبو كتب : اخي محمد الا يمكن ان يكون هناك سجل احر يحمل نفس الاسم ؟
الجواب يمكن ولكن سيحتلف عنه بالكنية او المواليد او او  ويبقى الاي دي فريد لايتكرر
شيء أخر لماذا تعدل الاسم؟ انت اذا عدلت الاسم هذا يعني شخص اخر وهنا يجب اضافة جديد لاتعديل
ناحية اخرى يمكن جعل حملة التعديل بشرطين Where name=@name And id=@id تشدد زائد
ولكن ليست ذات فائدة لان المعرف هو الاي دي وهذا يكفي
بالنسبة لما قاله اخي الحبيب سعود (هو دائما يضع يده على موطن الداء) الذي يتحدث عنه بسمى الاتصال بالوضع المنفصل
اما بداتا تايل او بداتاست وبصراحة انا استخدم هذا الوضع بنسبة 95 بالمئة  طبعا لكل من الوضع المنفصل والمتصل محاسن وعيوب
ان احببت ذلك تابع مع اخي سعود جزاه الله كل خير سيوضح لك الامر
نسيت ان اسألك كبف تجلب سجل الشخص لتقوم بتعديله؟
ام انك تقوم بكتابة اسم الشخص ومعلوماته ثم عند الحفظ سيتأكد ان كان هذا الاسم موجودا يقوم زر الحفظ بامر تعديل وان لم بكن موجودا
يقوم بامر حفظ ... وهذا ايضا حاطئ لماذا ؟ افرض ان لديك شخص ومسجل باسم Abdullah وقمت بكتابة الاسم لنفس الشخص وانت تقصده تماما وكتبت اسمه هكذا Abdallah فسيعتبر البرنامج ان هذا الاسم غير موجود فما رأيك
لذلك قبل اي تعديل يجب جلب السجل المراد التعديل عليه
دمت بخير اخي محمد

موضوع الايكون هناك سجل اخر يحمل الاسم يعتمد علي ذاكرة المستخدم وتركيزة لان للاسف المستخدم بيستسهل وذاكرة صفر في كل الاحوال

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

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


كود :
 fillDATASET(Me, DSDETAILSFILA, "CLIENT_TB", "SELECT CLIENT_ID,CLIENT_NAME FROM CLIENT_TB WHERE  CLIENT_NAME = '" & TEXT_NAME.Text.Trim() & "' AND CLIENT_ID<>" & LAB_IDVAL.Text & " ")
       If Not DSDETAILSFILA.Tables("CLIENT_TB").Rows.Count > 0 Then
           Dim com As New OleDbCommand("UPDATE  CLIENT_TB SET CLIENT_NAME=@CLIENT_NAME WHERE  CLIENT_ID =@CLIENT_ID", con)
           com.Parameters.AddWithValue("@CLIENT_NAME", TEXT_NAME.TEXT)
           com.Parameters.AddWithValue("@CLIENT_ID", LAB_IDVAL.Text)
           con.Open()
           com.ExecuteNonQuery()
           con.Close()
           Exit Sub
       Else
           MsgBox("الاسم مكرر سابقا يجب تغير الاسمالحالي او تعديلة ")

       End If

انا حطيت الكود عشان الجميع يستفيد منة

بشكركم جميعا كل الشكر لك ولاخي سعود علي نصيحتة الغالية

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

كود :
' من قاعدة البيانات عند عدم وجود الاعمدة كاملة بالداتاجريد نفسة
       LAB_IDVAL.Text = DSDETAILSFILA.Tables("CLIENT_TB").Rows(0)("CLIENT_ID").ToString
       ' من  الداتاجريد مباشرة
       indx = DataGridView1.SelectedRows(0).Index
       LAB_IDVAL.Text = DataGridView1(1, indx).Value.ToString()

الكود سريع ومفيش مشاكل نهائي معايا بالرغم من استخدامي الداتاتابل بس عادي مش بهتم
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو
#10
الأخ : محمد إسماعيل واجهتني هذه المشكلة و من قبل وتمكنت من حلها بعد عدة محاولات .. أعتقد أن المشكلة تكمن في هذا الموضع CLIENT_ID =@CLIENT_ID في حالة إذا كان CLIENT_ID معرف على أنه رقم تلقائي .. لان قاعدة البيانات لا تسمح لك بالتعديل عليه.. فالاكود السابق يقوم بالتعديل على على الحقل CLIENT_ID من خلال البارميتر @CLIENT_ID.... قم بإسناد قيمة الحقل CLIENT_ID إلى متغير أو textbox لتكون نهاية الكود
كالتالي : (where CLIENT_ID= '" & TextBox14.Text & "'", con)) على أن لا يتم التعديل على textbox14 لان البرنامج في هذه الحالة لن يجد القيمة التي على أساسها سوف يتم التعديل.
الرد }}}
تم الشكر بواسطة: محمد اسماعيل , سعود


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  تصدير البيانات إلى ملف RTF مصمم هاوي 4 829 15-08-25, 04:13 PM
آخر رد: أبو خالد الشكري
  [VB.NET] ما هو أفضل موقع استضافة لقواعد البيانات MSSQL ؟ mmaalmesry 0 796 16-07-25, 10:45 PM
آخر رد: mmaalmesry
  مساعدة في كيفية ترحيل البيانات من داتا قريدفيو إلى داتا قريدفيو في فيجوال بيسك ahmedfa71 13 2,246 09-07-25, 11:24 PM
آخر رد: أبو خالد الشكري
  مشكلة في حفظ البيانات مصمم هاوي 2 1,025 30-06-25, 08:51 AM
آخر رد: مصمم هاوي
  بطء في جلب البيانات مصمم هاوي 9 1,002 08-05-25, 07:51 AM
آخر رد: مصمم هاوي
  تعديل كود تحديث البيانات مصمم هاوي 1 784 26-04-25, 06:07 PM
آخر رد: مصمم هاوي
Photo لايمكن تعرف على تنسيق قاعدة البيانات الدريساوي 2 697 26-04-25, 12:24 AM
آخر رد: الدريساوي
  مساعدة في طريقة تحميل الفيديوهات المخزنة في قاعدة البيانات foad8920 0 662 24-04-25, 12:58 PM
آخر رد: foad8920
  إغلاق الفورم مع حذف جميع البيانات الموجودة به صالح عبدالله 10 1,041 19-04-25, 08:54 PM
آخر رد: Kamil
  طريقة طباعة ملف pdf بقاعدة بيانات sql heem1986 0 520 25-02-25, 09:31 AM
آخر رد: heem1986

التنقل السريع :


يقوم بقرائة الموضوع: