PDA

View Full Version : عدم ثبت تغییرات دیتاست در دیتابیس



iman_s52
دوشنبه 26 آذر 1386, 09:15 صبح
با سلام خدمت دوستان !!!
من یه گرید دارم که به یک دیتا ست وصله وقتی که تویه DataGridView تغییراتی میدم و بعدش دکمه ذخیره رو می زنم (DataAdapter.Update(ds)) تغییرات ثبت میشه ولی اگه اطلاعات رو تویه TextBox نشون بدم بعد وارد دیتا گریدم بکنم ( تغییرات رو تویه گریدم می بینم ) و بعد دکمه ذخیره رو بزنم اطلاعات Update نمیشه .
به نظرشما اشکال کارم کجا می تونه باشه ؟؟؟

mamali_programer
دوشنبه 26 آذر 1386, 12:23 عصر
سلام این کد نگاه کن ببین به دردت میخوره
من هم مشکل تورو داشتم و بالاخره به این نتیجه رسیدم :


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace WindowsApplication1
{
publicpartialclassForm1 : Form
{
OleDbConnection cnn;
OleDbDataAdapter da;
OleDbCommand cmd;
DataSet ds;
public Form1()
{
InitializeComponent();
}
privatevoid button1_Click(object sender, EventArgs e)
{
myAddData();
}
privatevoid myAddData()
{
cnn = newOleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test.mdb");
cnn.Open();
cmd = newOleDbCommand();
cmd.CommandText = "INSERT INTO tell (name, family, tell) VALUES ('mamali', 'programer', '021')";
cmd.Connection = cnn;
cmd.ExecuteNonQuery();
cnn.Close();
myShowAll();
}
privatevoid Form1_Load(object sender, EventArgs e)
{

myShowAll();
}
privatevoid myShowAll()
{
cnn = newOleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test.mdb");
cnn.Open();
da = newOleDbDataAdapter("select * from tell", cnn);
ds = newDataSet("tell");
da.Fill(ds);
dataGridView1.DataSource = ds;
dataGridView1.DataMember = ds.Tables[0].ToString();
cnn.Close();
}
}
}

shgroup
دوشنبه 26 آذر 1386, 13:27 عصر
فکر می کنم این کار رو بکنی مشکلت حل بشه : در قسمت Solution Explorer ، بانکت که رنگ زرد داره رو انتخاب کن و بعد در Properties در ‍Copy to Output گزینه ‍Copy if newer را انتخاب کن . امیدوارم درست منظورت رو فهمیده باشم .

iman_s52
دوشنبه 26 آذر 1386, 17:41 عصر
فکر می کنم این کار رو بکنی مشکلت حل بشه : در قسمت Solution Explorer ، بانکت که رنگ زرد داره رو انتخاب کن و بعد در Properties در ‍Copy to Output گزینه ‍Copy if newer را انتخاب کن . امیدوارم درست منظورت رو فهمیده باشم .

متوجه منظورتون نمیشم من بانکم SQL این چیزایی که شما میگین اصلا ربطی به مشکل من داره ؟؟؟؟؟

iman_s52
سه شنبه 27 آذر 1386, 09:59 صبح
از دوستان کس دیگه ای نیست کمک کنه ؟؟؟؟؟

mamali_programer
سه شنبه 27 آذر 1386, 12:28 عصر
شما از DataBindings استفاده کردید
من میتونم یک نمونه براتون بفرستم

iman_s52
سه شنبه 27 آذر 1386, 12:34 عصر
نه دوست عزیر من از دیتاستی که دستی ساختم استفاده کردم.

mamali_programer
سه شنبه 27 آذر 1386, 12:38 عصر
مهم نیست برای بازگشت اطلاعات از DataSet به DataAdaptor باید از DataBindings استفاده کنی

mamali_programer
سه شنبه 27 آذر 1386, 12:53 عصر
این کدی که برات میفرستمو نگاه کن


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace WindowsApplication1
{
publicpartialclassForm1 : Form
{
OleDbConnection cnn;
OleDbDataAdapter da;
OleDbCommandBuilder cb;
string sql;
DataSet ds;
DataRow dr;
public Form1()
{
InitializeComponent();
}
privatevoid Form1_Load(object sender, EventArgs e)
{
cnn = newOleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test.mdb");
cnn.Open();
sql = "select * from tell";
da = newOleDbDataAdapter(sql, cnn);
ds = newDataSet();
da.Fill(ds, "test");
dataGridView1.DataSource = ds;
dataGridView1.DataMember = ds.Tables[0].ToString();
}
privatevoid button1_Click(object sender, EventArgs e)
{
dr = ds.Tables[0].NewRow();
dr[0] = "name";
dr[1] = "family";
dr[2] = "tell";
ds.Tables[0].Rows.Add(dr);
cb = newOleDbCommandBuilder(da);
da.Update(ds, "test");
}
}
}

mamadgmail
سه شنبه 27 آذر 1386, 23:04 عصر
دوست عزیز مهم نیست که شما از چه روشی برای بایند کردن استفاده می کنید.
موضوع اینه که شما قبل از فراخوانی update یک بار متد endedit کنترل gridview رو صدا بزنید.
یا اگر از bindingsource استفاده می کنید هم همین متد رو داره.
گرشته از این اگر gridview مستقیما به ds وصل کردین خود ds هم همین متد رو داره

shgroup
چهارشنبه 28 آذر 1386, 00:43 صبح
حالا فهمیدم منظورت چیه ...
با توجه به پیام mamadgmail (http://barnamenevis.org/forum/member.php?u=16055) باید مشکلت حل بشه .