![]() |
|
مشكلة بكود التعديل بسبب جملة فور - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183) +--- الموضوع : مشكلة بكود التعديل بسبب جملة فور (/showthread.php?tid=35284) |
مشكلة بكود التعديل بسبب جملة فور - abdulla2 - 19-06-20 عندي مشكلة عملت لوب في زر الحفظ عندي حقلين الاسم والرقم.. اذا الرقم موجود بقاعدة البيانات يظهو رسالة موجود مسبقا والامور تمشي تمام --- المشكلة حينما اعمل تعديل لاني لا اردي ان اعدل الرقم برقم موجود مسبقا واريد اعدل يعتبر الرقم موجود مسبقا ويظهر لي الرسالة --- كيف اتحاوز المشكلة.. ============= يعني في الحفظ احتاج جملة الفور ومافي مشكلة لكن بالتعديل اقمت بضغط على السجل سيجلب البيانات الى التكسات وحينما اعدل الرقم سيظهر لي رسالة الرقم موجود اريد ان يفهم انني اعدل واضيف جملة الفور لكن سيظهر لي رسالة الرقم موجود ؟؟؟ ولو الغيت جملة الفور سيكرر نفس الرقم وهذا مالا اريده .. ارجو المساعدة وفقكم الله RE: مشكلة بكود التعديل بسبب جملة فور - معاند الحظ - 19-06-20 اخي بالنسبة للتعامل مع قواعد البيانات وفيما يخص سؤالك فهناك ثلاث عمليات هي 1- اضافة (قيمة جديدة) مثل انشاء سجل واضافة قيم الحقول التابعة له للقاعدة 2- التحديث (تحديث قيمة موجودة مسبقا بقيمة جديدة) 3- الحذف لكن لو ترفق الكود اللي تستخدمه او ترفق المشروع عشان تكون الصورة اوضح RE: مشكلة بكود التعديل بسبب جملة فور - abdulla2 - 20-06-20 وعليك السلام .. شكراً للرد .. ========= هذا كود الإضافة مع الإستدعاء ... Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click If txtName.Text = "" Then MsgBox("قم بإدخال الإسم لإتمام عملية الإضافة", MsgBoxStyle.Information, "تنبيه") Exit Sub End If If txtShara.Text = "" Then MsgBox("قم بكتابة رقم الشارة لإتمام عملية الإضافة", MsgBoxStyle.Information, "تنبيه") Exit Sub End If '--------------------------------- For I = 0 To dgv.Rows.Count - 1 If txtShara.Text = dgv.Rows(I).Cells(2).Value.ToString Then MsgBox("رقم الشارة موجود مسبقا", MsgBoxStyle.Information, "خطأ") txtShara.SelectAll() txtShara.Focus() Exit Sub End If Next '----------------------------------------------------------------- insert_User(txtid.Text, txtName.Text, txtShara.Text) FillDGV() dgv.DataSource = dt1 MsgBox("تمت عملية الإضافة بنجاح", MsgBoxStyle.Information, "الإضافة") AllClear() End Sub ========================================================= وهذا كود التعديل مع الإستدعاء For I = 0 To dgv.Rows.Count - 1 If txtShara.Text = dgv.Rows(I).Cells(2).Value.ToString Then MsgBox("رقم الشارة موجود مسبقا", MsgBoxStyle.Information, "خطأ") txtShara.SelectAll() txtShara.Focus() Exit Sub End If Next Public Sub update_User(ByVal FName As String, ByVal Shara As String, ByVal id As Integer) btnUpdate.Enabled = False btnDelete.Enabled = False btnAdd.Enabled = True '----------------------------------------------------------- Dim cmd As New OleDbCommand("update tb1 set FName=@FName,Shara=@Shara where id=@id", con) cmd.Parameters.Add("@FName", OleDbType.VarChar).Value = FName cmd.Parameters.Add("@Shara", OleDbType.VarChar).Value = Shara cmd.Parameters.Add("@id", OleDbType.Integer).Value = id con.Open() cmd.ExecuteNonQuery() con.Close() End Sub insert_User(txtid.Text, txtName.Text, txtShara.Text) FillDGV() dgv.DataSource = dt1 MsgBox("تمت عملية التعديل بنجاح", MsgBoxStyle.Information, "التعديل") AllClear() ======================== وهذا كود الحذف Public Sub delete_User(ByVal id As Integer) btnUpdate.Enabled = False btnDelete.Enabled = False btnAdd.Enabled = True '------------------------------------------------------------------------------------------- If txtid.Text = "" Then MsgBox(" !!..حدد البيانات المطلوب حذفها", MsgBoxStyle.Information, "تنبيه") Exit Sub End If Try Dim cmd As New OleDbCommand("delete From tb1 where id=@id", con) cmd.Parameters.Add("@id", OleDbType.Integer).Value = id con.Open() cmd.ExecuteNonQuery() con.Close() FillDGV() Catch ex As Exception If con.State = ConnectionState.Open Then con.Close() MsgBox(ex.Message) End Try End Sub الاستدعاء Private Sub btnDelete_Click(sender As Object, e As EventArgs) Handles btnDelete.Click If MsgBox(" !!.. هل أنت متأكد من حذف بيانات هذا الموظف ", MsgBoxStyle.YesNo, "تأكيد الحذف") = DialogResult.Yes Then If MsgBox(" ?.. هناك سجلات مرتبطة بهذا الموظف سيتم حذفها بالكامل للإستمرار إضغط نعم ", MsgBoxStyle.YesNo, "تأكيد الحذف") = DialogResult.Yes Then delete_User(txtid.Text) FillDGV() dgv.DataSource = dt1 AllClear() End If End If End Sub RE: مشكلة بكود التعديل بسبب جملة فور - معاند الحظ - 20-06-20 يا اخي تقول انك تستخدم الكود التالي للتعديل كود : For I = 0 To dgv.Rows.Count - 1ولو تلاحظ ان الكود فيه الشرط التالي اذا كانت القيمة الموجودة في txtShara.Text هي نفس القيمة الموجودة في dgv.Rows(I).Cells(2).Value.ToString اذن امنع التعديل اضهر رسالة خطأ فما ادري بصراحة كيف تبغى تعدل البيانات مع الشرط هذا ؟ لان الشرط يمنع التعديل بينما انت تحتاج الى شرط يكون كالتالي كود : For I = 0 To dgv.Rows.Count - 1RE: مشكلة بكود التعديل بسبب جملة فور - ابراهيم ايبو - 20-06-20 السلام عليكم ورحمة الله وبركاته اخي الكريم لماذا تضع جملة انسرت في كود التعديل ولماذا تتحقق من وجود السجل اصلا يكفي ان تقوم باستدعاء السجل بناء على رقمه وعندها سيتم ملء البيانات في مربعات النصوص عندها ستكتب القيم الجديدة ماعدا رقم الاي دي لان التعديل سيتم بناء عليه اي انه هو شرط التعديل تفضل هذا كود التعديل اما الاستدعاء فيتم قبل التعديل حسب ماتبرمج انت من كود اما ان تقوم بالبحث برقم سجل وتجلبه ثم تعدل او ان كانت البيانات في الداتا غرايد وعند اختيار سجل سيتم عرض حقول السجل في مربعات النصوص ايضا عدل ثم اضغط زر التعديل هذا صب ضعه كما هو كود : Public Sub Update_tb1(Fname As String, Shara As String, Id As Integer)كود : TryRE: مشكلة بكود التعديل بسبب جملة فور - abdulla2 - 20-06-20 اعذروني لم انتبه اني وصعت كود الاضافة بالغلط نسخت كود الاضافة المفروض كود التعديل ولكن اخطأت بالنسخ للمنتدى ======= بارك الله فيكم ولكن هناك اشكال بالاكواد طيب لو عدلت رقم الشارة وكان رقم الشارة موجود باحدى السجلات الأخرى سيحفظ بنفس الرقم وهذا ما لا اريده؟؟؟ RE: مشكلة بكود التعديل بسبب جملة فور - WaeLx - 20-06-20 (20-06-20, 10:35 AM)abdulla2 كتب : اعذروني لم انتبه اني وصعت كود الاضافة بالغلط نسخت كود الاضافة المفروض كود التعديل السلام عليكم و رحمة الله و بركاته قم بربط الشرط ب ID ليكون الكود كالتالي بفرض ان العمود الأول = ID كود : For I = 0 To dgv.Rows.Count - 1RE: مشكلة بكود التعديل بسبب جملة فور - abdulla2 - 20-06-20 اخي هو ليس id shara هي رقم شارة العمل اما ال id فو يتولد اوتوماتكلي عبر دالة max RE: مشكلة بكود التعديل بسبب جملة فور - WaeLx - 20-06-20 (20-06-20, 01:57 PM)abdulla2 كتب : اخي هو ليس id السلام عليكم أخي الحبيب ما فهمته من سؤالك هو أنك لا تريد رقم الشارة أن يكون متكرر في حالة تسجيل عامل جديد فالبرنامج سيتأكد أن الرقم غير موجود أما في حالة تعديل بيانات عامل، فرقم الشارة موجود بالفعل لهذا العامل، لذا انت لا تريد أن تظهر رسالة بأن الرقم موجود في حالة التعديل لكن اذا كنت تعدل بيانات العامل و عدلت أيضا رقم الشارة لرقم يخص عامل اخر، فهنا يجب أن تظهر رسالة تنبيه و الكود الذي اقترحته عليك هو انه يقارن رقم id العامل الذي تقوم بتعديل بياناته (الموجود بالفعل في dgv) برقم العامل الذي يحمل نفس رقم الشارة، فاذا كان هو نفس العامل الذي تقوم بتعديل بياناته فلا تظهر رسالة خطأ، أما اذا وجد id اخر غير الذي تقوم بالتعديل عليه و يحمل نفس رقم الشارة، فسيعطي رسالة خطأ فقط جرب الكود الذي وضعته و اخبرني ان كان يعمل ام لا RE: مشكلة بكود التعديل بسبب جملة فور - ابراهيم ايبو - 20-06-20 السلام عليكم ورحمة الله وبركاته موفور الشكر لاخي Waelx على مايقدمه من مساعدة لاخوته في المنتدى بالنسبة لموضوع الاخ عبد الله الامر جدا بسيط وكما اشار لك الاخ وائل نقوم بالتحقق من وجود سجل يحمل القيمة التي سندخلها في حقل الشارة اكانت حفظ جديد ام تعديل فقط اضيف اننا نقوم بعمل جملة بحث عن السجلات في الداتا تابل بدلا من الداتا غرايد ان كانت تساوي القيمة المدخلة في مربع نص الشارة ويتم ذلك قبل امر الحفظ او التعديل عبر تعريف متغير من نوع بولين فان وجدنا سجلا يحمل نفس القيمة يكون ترو وان لم يوجد ستكون قيمته فولس وبناء على القيمة نحفظ او نعدل المثال التالي بالكامل للفكرة صب التحقق يمكننا استخدامه مع اي جدول واي حقل فقط نمرر الباراميترات الثلاث ( اسم الجدول - اسم الحقل - مربع نص الادخال) ملاحظة حقل الاي دي جعلته ترقيم تلقائي |