تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مشكلة بكود التعديل بسبب جملة فور
#21
لم يتغير شي ..
ويقوم بالحفظ والتعديل على الرغم من ان الشارة يحملها سجل اخر ..
واستخدمت مشروع الأخير وهو نفس المشكل
لم يتغير شي سوى ظهور رسالة تنبيه ؟؟

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

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

اما اذا لم نغير شي  فقط ضغطنا على السجل من الجريد الى التكسات
ثم تراجعنا لا يعمل شي

---
هذه امور صحيحة لمخرجات البرنامج استطعت ان اعمل بعضها لكن
المشكلة الرئيسية ماكنت اشرحها لك منذ البداية ؟؟

==========
على العموم بارك الله فيك وشكرا لك للإهتمام ..
وتحياتي لك .. ماقصرت
الرد }}}
تم الشكر بواسطة: ابو ليلى , ابراهيم ايبو
#22
السلام عليكم و رحمة الله و بركاته
الاخ عبد الله هل مشكلتك فقط مع تعديل رقم الشارة.

حملت المثال الاخير,بعد الاطلاع
هناك شيئ خطأ او سيناريو غير صحيح في هذا المثال.
اولا الدالة max_Main ليس من معنى لوجودها كونك تعتمد على حقول ترقيم تلقائي.
ثانياً عمليات الادخال الى الجدول tb2 وفق الجمل التالية :
PHP كود :
   Public Sub insert_Main(ByVal ID As IntegerByVal FName As IntegerByVal Shara As IntegerByVal Tel As StringByVal Cost As StringByVal DDate As Date)

 
       Dim cmd As New OleDbCommand("insert into tb2 (ID,FName,Shara,Tel,Cost,DDate) values(@ID,@FName,@Shara,@Tel,@Cost,@DDate)"con)
 
       cmd.Parameters.Add("@ID"OleDbType.Integer).Value max_Main() + 1
        cmd
.Parameters.Add("@FName"OleDbType.Integer).Value FName
        cmd
.Parameters.Add("@Shara"OleDbType.Integer).Value Shara
        cmd
.Parameters.Add("@Tel"OleDbType.VarChar).Value Tel
        cmd
.Parameters.Add("@Cost"OleDbType.VarChar).Value Cost
        cmd
.Parameters.Add("@DDate"OleDbType.Date).Value DDate.ToString("yyyy/MM/dd")
 
       con.Open()
 
       cmd.ExecuteNonQuery()
 
       con.Close()
 
   End Sub



    Private Sub btnAdd_Click
(sender As ObjectAs EventArgsHandles btnAdd.Click
        If cmbName
.Text "" Or txtCost.Text "" Then
            MsgBox
("قم بتعبئة الحقول الفارغة"MsgBoxStyle.Information"تنبيه")
 
           Exit Sub
        Else
            
'-----------------------------------------------------------------

            insert_Main(txtid.Text, ID, ID, txtTel.Text, txtCost.Text, dtDate.Value)
            dgv.DataSource = dt2
                MsgBox("تمت عملية الإضافة بنجاح", MsgBoxStyle.Information, "الإضافة")
                '
AllClear()
 
               FillDGV()
 
           End If

 
       'If txtShara.Text = "" Then
        ' 
   MsgBox("قم بكتابة رقم الشارة لإتمام عملية الإضافة"MsgBoxStyle.Information"تنبيه")
 
       '    Exit Sub
        '
End If

 
       'If txtCost.Text = "" Then
        ' 
   MsgBox("أدخل المبلغ لإتمام عملية الإضافة"MsgBoxStyle.Information"تنبيه")
 
       '    Exit Sub
        '
End If


 
   End Sub 

غير صحيحة بالنظر الى هذه الجملة من الدالة الثانية
PHP كود :
insert_Main(txtid.TextIDIDtxtTel.TexttxtCost.TextdtDate.Value
بالمقارنة يتم ادخال ID بدل رقم الشارة ؟؟ لا ادري ما الهدف.
و بالتالي فان اي جملة استعلام  على الجدول tb2 لفحص رقم الشارة لن يجدي نفعاً.
لا توجد ضوابط في الكود السابق ولا عمليات تحقق لا في الحفظ ولا في التعديل.
كما ان دالة التعديل في الكود لا تعالج تعديل رقم الشارة اساساً؟؟
هل المطلوب ان كل شخص يمتلك شارة فريدة لا يمتلكها غيره, سواء عند الادخال او التعديل.
بانتظار التوضيح؟؟
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد }}}
تم الشكر بواسطة: asemshahen5 , ابراهيم ايبو
#23
يا اخي الكريم
اذا كنت  تريد تعديل سجل ولكنك لاتريد تعديل حقل رقم الشارة فلا تقم باضافته الى كود التعديل

حاول وجرب تعدل كود التحديث Update كالتالي

كود :
Dim cmd As New OleDbCommand("update tb1 set FName=@FName where id=@id", con)
cmd.Parameters.Add("@FName", OleDbType.VarChar).Value = FName

cmd.Parameters.Add("@id", OleDbType.Integer).Value = id
con.Open()
cmd.ExecuteNonQuery()
con.Close()

الرد }}}
#24
السلام عليكم ورحمة الله وبركاته
اخي عبد الله الامر ليس لغز .... سأناقش الامر بالمنطق
لديك جدول فيه ثلاث خقول : 
1 - الاي دي وهو ترقيم تلقائي لانستظيع تعديله لانه فريد وهو المعرف
2- الاسم وهو اسم الشخص حامل الشارة ايضا لايمكن تعديله لان الاسم اطلق عليه وهو في المهد 
3 - الشارة وانت لاتريد تغييرها او تعديلها وهي خاصة بالشخص صاحب الاسم
الان بعد نفاذ الكمية من الحقول احلفك بالله ماذا بقي من اجل التعديل؟
اخي الغ كود التعديل هكذا ببساظة ونقطة على السطر
دمت بخير
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
تم الشكر بواسطة: ابو ليلى , ابو ليلى
#25
اخواني الموضوع اصبح كبير جدا ..
مع ان الأخ ..  WaeLx   قد اجاب على السوال بسطرين ..
ولكن حبيت ان استفيد منكم بإجابات أخرى فلاحظت ان الكثيرين عدلوا في البرنامج وزادت الاكواد ..

هذا هو الكود الذي ارسله الاخ WaeLx في بداية سؤالي ..
وهو يعمل جيدا ..

For I = 0 To dgv.Rows.Count - 1
If txtShara.Text = dgv.Rows(I).Cells(2).Value.ToString AND txtid.Text <> dgv.Rows(I).Cells(0).Value.ToString Then
MsgBox("رقم الشارة موجود مسبقا", MsgBoxStyle.Information, "خطأ")
txtShara.SelectAll()
txtShara.Focus()
Exit Sub
End If
Next

-------
اخواني يبدو انكم التبس عليك الامر ..
ال id ليس له دخل لانه متسلسل

المطلوب  Shara ..
وهو شارة العامل في العمل  ..

فهناك id متسلسل  . وشارة للعامل  اضافة للإسم ..

فقط لور كزت على جواب  الاخ WaeLx    في اول المشاركة
فقط عدل في الشرط  والامور سارت على احسن مايرام ..

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


شكرا لكم ..
الرد }}}
تم الشكر بواسطة:



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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم