الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

حفظ البيانات بعد التعديل عليها في datagridview

بدأه مثابر دوت نت في 29 ديسمبر 2011 · 15 رد · 1,885 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدي مشكلة الحفظ في قاعدة البيانات

لدي جدول يحتوي على اربعة اعمدة العمود الرابع مرتبط بجدول اخر كفورغن كي

الجدول الاول

اسم الطالب ورقمة ومستواه ام الحقل الرابع فيحتوي على حالة الطالب تحتوي على رقم

الجدول الثاني

حالة الطالب يحتوي على حقلين رقم الحالة واسم الحاله

قمت بعرضها في datagridview بحيث تظهر بالشكل التالي

رقم الطالب اسمه مستواه حالته(ليست رقم الحالة بل اسم الحاله)

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

امل المساعدة وهذا الكود

Imports System.Data    
Imports System.Data.OleDb    
Public Class Form4    
Dim oldValue As String = ""    
Public conn As New OleDb.OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=C:\Users\bin\Debug\Data.mdb;user id=admin;jet oledb:database password=12345")    
Dim DS1 As DataSet    
Dim BindingSource1 As BindingSource    
Dim BindingSource2 As BindingSource    
Dim DA1 As New OleDbDataAdapter    
Dim DA2 As New OleDbDataAdapter    
Private colCase As New DataGridViewComboBoxColumn    
Private colReportTime As DataGridViewTextBoxColumn    

Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load    
Dim Tab1 As New OleDbCommand(" SELECT * FROM stdT INNER JOIN casetype ON stdT.stdcase=casetype.id ", conn)    
DA1 = New OleDbDataAdapter(Tab1)    
Dim builder1 As New OleDbCommandBuilder(DA1)    


Dim Tab2 As New OleDbCommand("SELECT * from CASETYPE ", conn)    
DA2 = New OleDbDataAdapter(Tab2)    
Dim builder2 As New OleDbCommandBuilder(DA2)    

DS1 = New DataSet()    
Dim ds2 As New DataSet    
DA1.Fill(DS1, "stdt")    
DA2.Fill(DS1, "casetype")    

DataGridView1.DataSource = DS1    
DataGridView1.DataMember = "stdt"    
colCase.DataPropertyName = DataGridView1.Columns(2).DataPropertyName    
''DELETE OLD COLUMN    
DataGridView1.Columns.Remove("STDCASE")    

''ADD NEW COMBOXCOLUMN    
DataGridView1.Columns.Insert(2, colCase)    
DataGridView1.Columns(2).Name = "stdcase"    
DataGridView1.Columns(2).Width = 80    
DataGridView1.Columns(2).HeaderText = "CASE TYPE"    
With colCase    

.DataSource = DS1.Tables(1)    
.DisplayMember = "CASETYPE"    
.ValueMember = "id"    
.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill    
.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing    

End With    


End Sub
هذا كود الحفظ
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click    


DA1.Update(DS1, "stdt")    
DA2.Update(DS1, "casetype")    



End Sub
#2

يجب كتابت جملة التعديل داخل DA1 لا امر الحفظ يقوم بطلب التعديل من DA1

#3

كيف

ارجو ان تتكرم علي وتساعدني

#4

السلام عليكم ورحمه الله وبركاته

اخي عليك تعريف امر الاداج في الخاصية InsertCommand في الـ DataAdapter

.:: Wish to become better and better ::.

#5
VB Helper كتب:

السلام عليكم ورحمه الله وبركاته

اخي عليك تعريف امر الاداج في الخاصية InsertCommand في الـ DataAdapter

وعليكم السلام ورحمة الله وبركاته

اخي الكريم

لعلك تساعدني في هذا

وشكرا

#6

السلام عليكم ورحمه الله وبركاته

اخي قم بأخذ الفكرة من الكود التالي

DA1.InsertCommand = New SqlCommand("Insert Into YourTable Values(...)",conn)
1

.:: Wish to become better and better ::.

#7
VB Helper كتب:

السلام عليكم ورحمه الله وبركاته

اخي قم بأخذ الفكرة من الكود التالي

DA1.InsertCommand = New SqlCommand("Insert Into YourTable Values(...)",conn)

هل احتاج for loop لجميع صفوف datagridview ام لا

#8

لا تحتاج loop ولكن ضع هذا الامر في تصميم da

عليك القراءة في ado

1
#9

هل من الممكن ان تعملها لي لانني حاولت ولم استطع

#10

في الداتا ست اتبع خطوات الصور

post-2727-041471600 1325423735_thumb.gif

المرفقات
untitled.GIF
2
#11

مشكور ما قصرت ولكن انا اتعامل مع جدولين

#12

جرب تجعل امر الحفظ في اجراء مخزن في قاعدة البيانات ياخذ قيم كلا الجدولين

1
#13
KARIMSOFT كتب:

جرب تجعل امر الحفظ في اجراء مخزن في قاعدة البيانات ياخذ قيم كلا الجدولين

هل الاكسس تدعم الاجراء المخزن

#16

ضع

Tab2..ExecuteNonQuery();

بعد

Dim Tab2 As New OleDbCommand("SELECT * from CASETYPE ", conn)

DA2 = New OleDbDataAdapter(Tab2)

Dim builder2 As New OleDbCommandBuilder(DA2)

و ضع Tab1..ExecuteNonQuery();

بعد

Dim Tab1 As New OleDbCommand(" SELECT * FROM stdT INNER JOIN casetype ON stdT.stdcase=casetype.id ", conn)

DA1 = New OleDbDataAdapter(Tab1)

Dim builder1 As New OleDbCommandBuilder(DA1)

مواضيع مشابهة