منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : مشكلة في كود التعديل على السجل
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمه الله وبركاتوا

اواجه مشكله في زر التعديل
هذا هو الكود :
PHP كود :
Dim SavInto As New OleDb.OleDbCommand
            Dim ConStr 
As String _
            
"Provider=Microsoft.ace.OLEDB.12.0; Data Source =" _
            Application
.StartupPath "\student.accdb"
            
Dim Conn As New OleDbConnection(ConStr)
            
SavInto.Connection Conn
            SavInto
.CommandType CommandType.Text
            SavInto
.CommandType CommandType.Text
            SavInto
.CommandText "UPDATE tb SET Name = '" Trim(txt_name.Text) & "' , Address= '" Trim(txt_address.Text) & "' ,  phone= '" Trim(txt_phone.Text) & "'"
            
Conn.Open()
            
SavInto.ExecuteNonQuery()
            
Conn.Close()
            
MsgBox("تم التعديل على السجل بنجاح"

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

قاعدة البيانات اسمها : Student والجدول اسمه :tb
ويحتوي على البيانات التاليه :

name,address,phone

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

انا استخدم vb 2012
لان مافيه شرط where عدل على الكود بحيث يشترط رقم معين يستعلم عنه مثلا
كود :
where id=val(id.text)
قمت بالتعديل على الكود و وضعت الشرط where ولكن النتيجه نفسها

PHP كود :
SavInto.CommandText "UPDATE tb SET  name= '" Trim(txt_name.Text) & "' , Address= '" Trim(txt_address.Text) & "', phone= '" Trim(txt_phone.Text) & "' WHERE Address ='" txt_address.Text "'" 


فهل الكود الذي كتبته غير صحيح ؟؟
استعلم عن عمود لاتتكرر القيم فيه هل العمود: Address لا تتكرر القيم فيه؟؟
السلام عليكم

تعديل الاستعلام

PHP كود :
SavInto.CommandText "UPDATE tb SET  name= '" Trim(txt_name.Text) & "' , Address= '" Trim(txt_address.Text) & "',phone= '" Trim(txt_phone.Text) & "' WHERE Address ='" txt_address.Text "' and  id="val(id.text

اخي العزيز عدل الid الى أي عمود Primary Key في الجدول
اخي العزيز انا قمت بالتعديل على الكود وانا ف الحقيقة لم استخدم primery key لان لم ارد ذلك

قمت بتعديل الكود كالتالي :

PHP كود :
Dim SavInto As New OleDb.OleDbCommand
        Dim Cn 
As String _
        
"Provider=Microsoft.ace.OLEDB.12.0; Data Source =" _
        Application
.StartupPath "\student.accdb"
        
Dim Conn As New OleDbConnection(Cn)
        
SavInto.Connection Conn
        SavInto
.CommandType CommandType.Text
        SavInto
.CommandText "update tb set name= '" Trim(txt_name.Text) & "', address='" Trim(txt_address.Text) & "', phone='" Trim(txt_phone.Text) & "' where address= '" Trim(txt_address.Text) & "'"
        
Conn.Open()
        
SavInto.ExecuteNonQuery()
        
Conn.Close()
        
MsgBox("تمت عملية تعديل السجل بنجاح")

       
        
Me.Hide()
        
Me.Show() 

والكود شغال 100% حيث انه يقوم بالتعديل على كل سجل بمفرده حسب التعديلات التي يدخلها المستخدم على كل عمود

لكن المشكله التي ظهرت لي الان هي انه عندما اغلق البرنامج واعيد تشغيل كل سجل قمت بالتعديل عليه يرجع مثل ما كان كاني لم اعدل عليه بمعنى اخر كانه لم يقم بالتعديل على البيانات من داخل قاعدة البيانات بل على النموذج مع ان مسار الاتصال بقاعدة البيانات صحيح .. اذاً ما المشكله .؟؟
اخواني سوف ارفق لكم النموذج ارجوا التعديل عليه وارفاقه مرة اخرى لي .. لاني ف الحقيقه تعبت كثير في هذا الكود بالتحديد ..
اعذرني اخي فقد قمت بتهيئة (Format) الجهاز لدي ولم اثبت الا فيجوال بيسك 2010 لاني واجهت مشاكل مع vb 2012