السلام عليكم جميعا ..
شكرا للأخ WaeLx على الكود لانه يعمل جيدا وحل لي المشكلة ..
بارك الله فيك ..
========
ولاني اريد ازيد من الفهم لان هذه المشاركات تجعلك تفهم كيف ..
يفكر المبرمجين ورايت الاخ ابراهيم ايبو وضع رد وحابب اعرف فكرته في التعديل وحل المشكلة سأرفع لك
المشروع اخي ابراهيم ايبو لتنظر فيه وتعدل .. لكي افهم فكرتك ..
-----
شكرا لكم جميعاً للمشاركة ووفقكم اله .
وهذا هو المشروع
السلام عليكم ورحمة الله وبركاته
مسألة تعديل مشروع لمبرمج أخر اصعب من انشاء مشروع جديد بسبب محاولة فهم الاكواد والربظ بين الادوات المهم
اخي عبد الله قاعدة البيانات لديك كنت ستواجه فيها مشكلة الحفظ والتعديل وكلما اغلقت الرنامج واعدت تشغيله سوف لن تجد ماقمت بتخزينه
والسبب انك وافقت على انشاء نسخة من قاعدة البيانات واصبح لديك اثنتا واحد في المشروع وواحدة في مجلد الـ Debug
قمت بانشاء قاعدة بيانات جديدة باسم DB1
تم تعديل مثالك وبعض الامور في الاكواد وعدلت لك صب التحقق الى فنكشن ينادى عليه في اي جملة حفظ اوتعديل
سيتم تمرير 3 باراميترات ( اسم الجدول - اسم الحقل في الجدول - اسم مربع النص المراد التحقق من قيمته )انظر الى كود بوتون الحفظ والتعديل
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات
21-06-20, 06:13 PM (آخر تعديل لهذه المشاركة : 21-06-20, 06:17 PM {2} بواسطة abdulla2.)
(21-06-20, 03:09 PM)ابراهيم ايبو كتب : السلام عليكم ورحمة الله وبركاته
مسألة تعديل مشروع لمبرمج أخر اصعب من انشاء مشروع جديد بسبب محاولة فهم الاكواد والربظ بين الادوات المهم
اخي عبد الله قاعدة البيانات لديك كنت ستواجه فيها مشكلة الحفظ والتعديل وكلما اغلقت الرنامج واعدت تشغيله سوف لن تجد ماقمت بتخزينه
والسبب انك وافقت على انشاء نسخة من قاعدة البيانات واصبح لديك اثنتا واحد في المشروع وواحدة في مجلد الـ Debug
قمت بانشاء قاعدة بيانات جديدة باسم DB1
تم تعديل مثالك وبعض الامور في الاكواد وعدلت لك صب التحقق الى فنكشن ينادى عليه في اي جملة حفظ اوتعديل
سيتم تمرير 3 باراميترات ( اسم الجدول - اسم الحقل في الجدول - اسم مربع النص المراد التحقق من قيمته )انظر الى كود بوتون الحفظ والتعديل
وعليك السلام.
ربما كلامك صحيح..
فقط حبيت افهم فكرتك..
وهذا يفتح لي أفكار في فهم بعض
المختصين بما يفكرون..
على العموم شمرا لك..
انا في العمل وسأعود مساء
وارى مشروك.. جزاك الله خير..
----
فقط عندي سؤال بخصوص
ان قاعدة البيانات لا تحفظ كما قلت.. ما السبب
هل لان التقارير لها دخل لانها تعمل نسخة
كلامك صحيح انا عملت نسخه للقاعدة
ما الحل هل اعيد اكتب واصمم القاعدة من جديد
مش معقول وكيف احل المشكلة
ممكن توضح لي المشكلة.. لماذا؟
21-06-20, 07:59 PM (آخر تعديل لهذه المشاركة : 21-06-20, 08:01 PM {2} بواسطة abdulla2.)
???
أخي ابراهيم ايبو تابعت مشروعك ..
لا جديد فيه ؟؟
انا حينما اقوم واريد ان اعدل الشارة لا يسمح لي لكن ماذا لو اردت ..
أن اعدل في الإسم وتبقى الشارة كما هي ؟؟؟
نفس المشكلة سيعيد لي اظهار الرسالة لان الشرط مربوط برقم الشارة ؟؟؟
انا اريد يكون مرن حتى مع اسم الموظف بارك الله فيك ..
فربما هناك خطأ بالاسم والشارة صحيح ... فاريد اغير الاسم وتبقى الشارة ولا اريد ان يظهر لي رسالة
ان الشارة موجودة سيكون عائق لي من تعديل اسم الموظف ..؟؟
هذا المقصد بارك الله فيك ..
السلام عليكم اخي عبدالله
اشكرك على اهتمامك بعملك
كتبت لك الكود ولكن لم يخطر ببالي اننا في جملة التعديل قد نغير في الاسم وهذا امر وارد او ربما نغير الشارة
لذلك غيرت قليلا في الكود بحيث تظهر رسالة تخبرك بوجود سجل يحمل الشارة نفسها سواء السجل نفسه او غيره وتطلب الموافقة على المتابعة لبتم التعديل او الحفظ
او الخروج من الاجراء شيء أخر كنت قد نسيت وهو اني اضفت لايبل Lbl_id وكنت قد استخدمته في الكود كمربع نص انتبهت لهذا الخطأ وخطأ صغير أخر متعلق بكود الحفظ مع باراميتر ال ID
المهم استبدل هذه الاكواد فقط وسيعمل معك باذن الله
الفنكشن اصبح هكذا
كود :
Public Function DetectedValue(tble As String, colum As String, txtCompar As TextBox) As Boolean
Dim detct As Boolean = False
Dim dts As New DataTable()
Try
dts.Clear()
da = New OleDbDataAdapter("select * From " & tble & " where " & colum & " = '" & txtCompar.Text.Trim & "'", Con)
da.Fill(dts)
If dts.Rows.Count > 0 Then
detct = True
Else
detct = False
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "Alert", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End Try
Return detct
End Function
صب الحفظ
كود :
Public Sub insert_User(ByVal FName As String, ByVal Shara As String)
' عندما يكون الاي دي ترقيم تلقائي لاندخل الاي دي في كود الحفظ هو يتولد تلقائيا
Dim cmd As New OleDbCommand("insert into tb1 ( FName,Shara) values( @FName,@Shara)", con)
cmd.Parameters.Add("@FName", OleDbType.VarChar).Value = FName
cmd.Parameters.Add("@Shara", OleDbType.VarChar).Value = Shara
con.Open()
cmd.ExecuteNonQuery()
con.Close()
End Sub
كود بوتون الحفظ
كود :
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
'---------------------------------
' التحقق من وجود سجل فيه نفس الشارة عبر الفنكشن التي ستبحث في الجدول وان وجدت ستعيد قيمة ترو
Try
If DetectedValue("tb1", "Shara", txtShara) = True Then ' التحقق من الحقل
If (MessageBox.Show("يوجد سجل يحمل القيمة هل تريد المتابعة؟", "Alert", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)) = Windows.Forms.DialogResult.Yes Then
insert_User(txtName.Text, txtShara.Text)
FillDGV()
MsgBox("تمت عملية الإضافة بنجاح", MsgBoxStyle.Information, "الإضافة")
AllClear()
Else
txtShara.Focus()
Exit Sub
End If
Else
insert_User(txtName.Text, txtShara.Text)
FillDGV()
MsgBox("تمت عملية الإضافة بنجاح", MsgBoxStyle.Information, "الإضافة")
AllClear()
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
صب التعديل
كود :
Public Sub update_User(ByVal FName As String, ByVal Shara As String, ByVal id As Integer)
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
بوتون التعديل
كود :
Private Sub btnUpdate_Click(sender As Object, e As EventArgs) Handles btnUpdate.Click
Try
If DetectedValue("tb1", "Shara", txtShara) = True Then ' التحقق من الحقل
If (MessageBox.Show("يوجد سجل يحمل القيمة هل تريد المتابعة؟", "Alert", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)) = Windows.Forms.DialogResult.Yes Then
update_User(txtName.Text, txtShara.Text, Lbl_Id.Text)
FillDGV()
MsgBox("تمت عملية التعديل بنجاح", MsgBoxStyle.Information, "التعديل")
AllClear()
Else
txtShara.Focus()
Exit Sub
End If
Else
update_User(txtName.Text, txtShara.Text, Lbl_Id.Text)
FillDGV()
MsgBox("تمت عملية التعديل بنجاح", MsgBoxStyle.Information, "التعديل")
AllClear()
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات
شكرا لك للإهتمام ..
وإن شاء الله تتيسر الأمور وانظر في المشروع وأعدل كل شي ..
وأوافيك بالنتيجة ..
---
عندنا مشكاة نعاني منها في اليمن هي الكهرباء ..
4 ساعات منطفآة و 2 ساغتين شغال ..
في المجموع 16 ساعة منطفأة و 8 ساعات شغال ..
---
لا نكاد نجد الوقت للنظر في اللابتوب ..
بالكاد نصارع ونعمل شارجينج للأجهزة ..
---
على العموم شكرا لك ..
وبأقرب فرصة أوافيك ..
22-06-20, 06:14 PM (آخر تعديل لهذه المشاركة : 22-06-20, 06:20 PM {2} بواسطة abdulla2.)
شكرا لك أخي ابراهيم ايبو
جربت الأكواد ولكن ؟
على الرغم من انه يظهر رسالة ان الرقم موجود لكن لوضغط ..
اليوزر موافق سيعدل القيمة على الرقم من ان هناك سجل يحمل نفس القيمة ؟
ورجعنا لنفس الخطأ وهو التكرار ..
وهذه صورة من الالسجلات المكررة
السلام عليكم اخي عبدالله
الكود يعمل بشكل ممتاز ربما لم تغير الفنكشن
عندما نختار اي سجل من الداتا غرايد ستظهر البيانات في مربعات النصوص والاي دي في اللايبل
الان لو اردنا التعديل بطبيعة الحال السجل موجود برقم الاي دي والشارة
لدينا الحالات التالية :
-- لو غيرنا الشارة لوحدها سيتم التعديل بدون ان تظهر رسالة وجود سجل يحمل الشارة الا اذا وضعنا اسم شارة موجود في سجل أخر غير السجل الحالي عندها ستظهر الرسالة
-- او غيرنا الاسم لوحده ستظهر الرسالة بوجود سجل يحمل الشارة وفي الرسالة لدينا حالتين
1 - yes سيتم التعديل ان ضغطنا عليه اي موافق
2 - اما ان ضغطنا no سيتم الخروج بدون تعديل ويوضع مؤشر الماوس في مربع نص الشارة لنعدل
اما في الحفظ فقط ان كان احد السجلات فيه نفس الشارة ايضا لدينا خيارين الموافقة اولا
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات
23-06-20, 12:51 AM (آخر تعديل لهذه المشاركة : 23-06-20, 01:19 AM {2} بواسطة abdulla2.)
أخي بارك الله فيك ..
رقم الشارة في العمل لايتكرر إطلاقا ..
فحينما تظهر الرسالة لي بلا او نعم ؟؟
------
لا أحتاج ان يظهر لي بلا أو نعم لانه منطقياً لا يمكن وضع شارة
عامل موجودة لعامل آخر ..؟؟
----
وانا غيرت كل الاكواد التي اعطيتني اياها ..
ولا زال يظهر لي الرسالة وحنما اقول نعم ..
يعيد نفس الشارة وهي موجودة مسبقا ويحفظها ..
وهذا خطأ ..؟
المقصود في التعديل والحفظ حينما اعدل او احفظ
لماذا يظهر لي رسالة بلا او نعم
ماذا لو بالخطأ ضغط نعم سيحفظ او سيعدل برقم موجود مسبقاً
وهذا تكرار لايجوز ويسبب مشاكل
لان الشارة لا تتكرر في العمل ..
23-06-20, 02:05 AM (آخر تعديل لهذه المشاركة : 23-06-20, 03:31 PM {2} بواسطة ابراهيم ايبو.)
السلام عليكم ورحمة الله وبركاته اخي عبد الله ظهور الرسالة هي لضبط عملية الحفظ والتعديل من الضغط بالخطأ على بوتون التعديل او الحفظ وكذلك اعلامك بوجود سجل يحمل الشارة سواء الذي تعدله او ان قمت بوضع شارة لسجل أخر سهوا لدي سؤال هل تستخدم قاعدة البيانات التي انشأتها انت؟ اي المسماة DB اذا كنت تستخدمها فكلامك صحيح لانني نبهتك عنها بأنك ستعاني من مشكلة الحفظ والتعديل فيها استخدم القاعدة التي انشأتها لك وهي المسماة DB1 حمل المثال الاخير وجرب يتم التعديل ان وافقت ولايتم اذا لم توافق وكذلك الحفظ وكنت قد شرحت لك الحالات اما غير ذلك لااعلم ان كان لديك شيئ آخر دمت بخير
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات