PDA

View Full Version : سوال: انتقال اطلاعات DataGridView به Access



hrs.1989
چهارشنبه 18 اسفند 1389, 22:51 عصر
با سلام
من میخوام اطلاعات رو از دیتاگریدویو به داخل دیتابیس اکسس بریزم این نمونه کد در رابطه با sql درست کار میکنه ولی برای اکسس نه مشکل این کجاست؟؟؟؟؟؟؟؟:متفکر:
این هم ارورش : Object reference not set to an instance of an object.


if (dataGridView1.RowCount > 0)
{
ole.adapter.InsertCommand.CommandText = "insert into [Daryafti]([date],[id],[name],[regard],[rial],[sarresid],[serial],[namebank],[nameshobe],[idhesab],[sharh],[type])values(@date,@id,@nm,@re,@rial,@sar,@ser,@nmbank, @nmshobe,@idhesab,@sharh,@type)";
ole.adapter.SelectCommand.Parameters.Add("@date", SqlDbType.NVarChar);//0
ole.adapter.SelectCommand.Parameters.Add("@id", SqlDbType.NVarChar);//1
ole.adapter.SelectCommand.Parameters.Add("@nm", SqlDbType.NVarChar);//2
ole.adapter.SelectCommand.Parameters.Add("@re", SqlDbType.NVarChar);//3
ole.adapter.SelectCommand.Parameters.Add("@rial", SqlDbType.NVarChar);//4
ole.adapter.SelectCommand.Parameters.Add("@sar", SqlDbType.NVarChar);//5
ole.adapter.SelectCommand.Parameters.Add("@ser", SqlDbType.NVarChar);//6
ole.adapter.SelectCommand.Parameters.Add("@nmbank", SqlDbType.NVarChar);//7
ole.adapter.SelectCommand.Parameters.Add("@nmshobe", SqlDbType.NVarChar);//8
ole.adapter.SelectCommand.Parameters.Add("@idhesab", SqlDbType.NVarChar);//9
ole.adapter.SelectCommand.Parameters.Add("@sharh", SqlDbType.NVarChar);//10
ole.adapter.SelectCommand.Parameters.Add("@type", SqlDbType.NVarChar);//11

for (int i = 0; i < dataGridView1.RowCount; i++)
{

ole.adapter.SelectCommand.Parameters[0].Value = tdate1.Text.ToString();
ole.adapter.SelectCommand.Parameters[1].Value = tId.Text.ToString();
ole.adapter.SelectCommand.Parameters[2].Value = tname.Text.ToString();
ole.adapter.SelectCommand.Parameters[3].Value = tRegard.Text.ToString();

ole.adapter.SelectCommand.Parameters[4].Value = dataGridView1.Rows[i].Cells[1].Value.ToString();//rial
ole.adapter.SelectCommand.Parameters[5].Value = dataGridView1.Rows[i].Cells[2].Value.ToString();//sar
ole.adapter.SelectCommand.Parameters[6].Value = dataGridView1.Rows[i].Cells[3].Value.ToString();//ser
ole.adapter.SelectCommand.Parameters[7].Value = dataGridView1.Rows[i].Cells[4].Value.ToString();//nmb
ole.adapter.SelectCommand.Parameters[8].Value = dataGridView1.Rows[i].Cells[5].Value.ToString();//nmsh
ole.adapter.SelectCommand.Parameters[10].Value = dataGridView1.Rows[i].Cells[0].Value.ToString();//sharh
ole.adapter.SelectCommand.Parameters[11].Value = dataGridView1.Rows[i].Cells[7].Value.ToString();//idhe

ole.con.Open();
ole.adapter.SelectCommand.ExecuteNonQuery();
ole.con.Close();

}
}

ucnazard
چهارشنبه 18 اسفند 1389, 23:01 عصر
خوب ميشه يه كم توضيح بدين مشكلتون چيه؟؟
اطلاعات درج نميشه؟؟

hrs.1989
پنج شنبه 19 اسفند 1389, 14:15 عصر
آره دیگه این error رو میده
Object reference not set to an instance of an object

این یه سند حسابداری که تمام پرداختی های یک سند را از دیتاگرید ویو انتقال میده تو دیتابیس اکسس البته هر سند میتونه چند نوع پرداختی داشته باشه نقدی ، چک ، حواله و هر سند یه شماره داره تمام حالا لطفا کمکم کنید با تشکر

shadi khanum
پنج شنبه 19 اسفند 1389, 19:06 عصر
این Error واسه این که یه چیزی تو این دستورات nothing!
اولا تو الان تو این کدی که گداشتین یکی از پارامترهاتون رو مقداردهی نکردید..
دوما فک کنم ایندکس Cellهاتون رو باید از 0 شروع میکردین تا 6 و Nothing ، Cells(7) شده که Error داده

javad_r_85
پنج شنبه 19 اسفند 1389, 20:12 عصر
اگر اكسس كار مي كني اين ديگه چرا استفاده شده

SqlDbType.NVarChar ميتوني به صورت زير بنويسي



ole.adapter.SelectCommand.Parameters.AddWithValue("@date", tdate1.Text.ToString())



مقاديرت هم چك كن تا null نباشند

hrs.1989
جمعه 20 اسفند 1389, 09:20 صبح
آقا و خانوم همه این کارها رو که گفتید انجام دادم ولی ایت error در خط اول یعنی اینجا
ole.adapter.InsertCommand.CommandText = "insert into [Daryafti]([date],[id],[name],[regard],[rial],[sarresid],[serial],[namebank],[nameshobe],[idhesab],[sharh],[type])values(@date,@id,@nm,@re,@rial,@sar,@ser,@nmbank, @nmshobe,@idhesab,@sharh,@type)";
رخ میدهد بازم کمکم کنید ممنون

payman_xxp
جمعه 20 اسفند 1389, 12:17 عصر
آقا و خانوم همه این کارها رو که گفتید انجام دادم ولی ایت error در خط اول یعنی اینجا
ole.adapter.InsertCommand.CommandText = "insert into [Daryafti]([date],[id],[name],[regard],[rial],[sarresid],[serial],[namebank],[nameshobe],[idhesab],[sharh],[type])values(@date,@id,@nm,@re,@rial,@sar,@ser,@nmbank, @nmshobe,@idhesab,@sharh,@type)";
رخ میدهد بازم کمکم کنید ممنون

سلام
واقعا خوندن کدهاتون اینجوری سخته، لطفا بین تگ C# قرار بدید.
و اما پیشنهاد من:
اگه میخواهید جمله SQL خودتون در dataAdapter قرار بدید اینجوری کار کنید:

OleDbDataAdapter da = new OleDbDataAdapter("insert into [Daryafti]([date],[id],[name],[regard],[rial],[sarresid],[serial],[namebank],[nameshobe],[idhesab],[sharh],[type]) values(@date,@id,@nm,@re,@rial,@sar,@ser,@nmbank, @nmshobe,@idhesab,@sharh,@type)";

ویا از OleDbCommand استفاده کنید:

OleDbCommand cmd = new OleDbCommand();
cmd.Connection = Cn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "insert into [Daryafti]([date],[id],[name],[regard],[rial],[sarresid],[serial],[namebank],[nameshobe],[idhesab],[sharh],[type]) values(@date,@id,@nm,@re,@rial,@sar,@ser,@nmbank, @nmshobe,@idhesab,@sharh,@type)";

دقت کنید دیتا تایپ SqlDbType.NVarChar در اکسس تعریف نشده هستش.

یه مورد دیگه هم دیدم توی کد، امیدوارم در پیست کردن اطلاعات در تاپیک این مورد پیش اومده باشه و در کد خودتون درست باشه:
قبل از کلمه values اسپیس نذاشتید و چسبیده به پرانتز اسم فیلدها. :لبخند:
موفق باشید.

hrs.1989
جمعه 20 اسفند 1389, 13:31 عصر
اقا مشکلش حل شد ولی قسمت cmd.ExecuteNonQuery(); ارورر می دهد :
Data type mismatch in criteria expression.Data type mismatch in criteria expression.

و به جای SqlDbType.NVarChar خوبه OleDbType.VarChar اینو بزارم

payman_xxp
جمعه 20 اسفند 1389, 13:47 عصر
اقا مشکلش حل شد ولی قسمت cmd.ExecuteNonQuery(); ارورر می دهد :
Data type mismatch in criteria expression.Data type mismatch in criteria expression.

و به جای SqlDbType.NVarChar خوبه OleDbType.VarChar اینو بزارم

سلام
نوع داده ای که در دیتابیس ایجاد کردید، با نوع داده ای که الان داره به دیتابیس وارد میشه همخوان نیست، نوع داده دیتای دیتابیس رو چک کنید.
موفق باشید.