PDA

View Full Version : سوال: چگونگي ذخيره تغييرات Datagridview در ديتابيس؟



complexcoding
پنج شنبه 29 فروردین 1392, 18:05 عصر
با سلام
من يه ديتاگريدويو روي فرم دارم با يك دكمه مي خوام وقتي سطرهاي جديد اضافه شد تغييرات ديتاگريد ويو در ديتابيس ذخيره بشه بايد درون رويداد دكمه چي بنويسم ؟؟
ممنون

complexcoding
پنج شنبه 29 فروردین 1392, 19:42 عصر
جدول من دو تا ستون با نام هاي id و phonNumber داره id به صورت اتوماتيك خود sql server مقدار مي ده اما phonenumber اينطور نيست . حالا من از كد زير استفاده كردم ولي نمي دونم باز چرا پيغام خطا مي ده و مي گه id بايد يك مقدار عددي داشته باشه؟ تصوير پيغام خطا در زير و كدها در زير:

http://www.niloblog.com/files/images/rd946n4u164q95foz37u.jpg
پيشاپيش از كمكتون ممنون

FastCode
پنج شنبه 29 فروردین 1392, 19:51 عصر
پارامتر های ID و id رو تعریف کردید ولی مقدار دهی نکردید.
سعی کنید اگر این پارامتر ها فرق دارن از کوچکی و بزرگی حروف برای جداسازیشون استفاده نکنید.چون هم نمیتونید پروژه رو با کسی در میون بزارید.(موقع حرف زدن خیلی سخت میشه) و هم اینکه خیلی از پایگاه های داده با این قضیه مشکل دارن.
موقع تعریف SQLParameter هم نباید در نام از @ استفاده کنید.فقط در خود query از @ استفاده کنید.

complexcoding
پنج شنبه 29 فروردین 1392, 19:58 عصر
من نمي دونم در sqlcommand كه where id=@id چه كاري انجام مي ده اصلا بايد باشه يا نه؟ همينطور ID قبل از اون چون id توسط خود sql مقدار دهي مي شه اما phoneNumber رو من مقدار دهي مي كنم مي خوام تو ديتابيس هم ثبت بشه. ممنون

تمام id ها رو پك كردم و حالا مي گه phoneNumber رو بايد مقدار عددي بدي خوب من دارم از تو textbox مقدار بهش مي دم ديگه؟ براي چي بايد اينجا مقدار بدم؟

veniz2008
پنج شنبه 29 فروردین 1392, 20:03 عصر
من نمي دونم در sqlcommand كه where id=@id چه كاري انجام مي ده اصلا بايد باشه يا نه؟ همينطور ID قبل از اون چون id توسط خود sql مقدار دهي مي شه اما phoneNumber رو من مقدار دهي مي كنم مي خوام تو ديتابيس هم ثبت بشه. ممنون
سلام.
بعد از کلمه update باید نام جدولتون بیاد که به نظرم اشتباه نوشته باشید.(مگر اینکه نام جدولتون phoneNumber باشه !).
id بعد از set رو بردار چون شما نمیتونید مقدار فیلد identity رو تغییر بدید. همچنین باید برای قسمت شرط مقدار id رو پاس بدی که اینکارو انجام ندادید و فقط مقدار تلفن رو فرستادید.

complexcoding
پنج شنبه 29 فروردین 1392, 20:10 عصر
id ها رو كلا پاك كردم ولي حالا مي گه مقدار phoneNumber رو مقدار دهي كن؟ اسم جدولم با اسم ستون دوم جدولم يكي هست. يعني هر جفتشون phoneNumber هست.

veniz2008
پنج شنبه 29 فروردین 1392, 20:19 عصر
اینو تست کن :

SqlCommand cmd = new SqlCommand("UPDATE phoneNumber SET phoneNumber = @phonenumber WHERE ID = @id", con);
cmd.Parameters.AddWithValue("@phoneNumber", dataGridView1.CurrentRow.Cells[1].Value.ToString());
cmd.Parameters.AddWithValue("@id", dataGridView1.CurrentRow.Cells[2].Value.ToString());
con.Open();
cmd.ExecuteNonQuery();
con.Close();

complexcoding
پنج شنبه 29 فروردین 1392, 20:24 عصر
دستت درد نكنه ولي باز ارور مي ده اين ارورشه :
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
اين con رو من براي sqlconnection گذاشتم . چون مي گفت تعريف نشده واسه همين منم شي sqlconnection ساختم ازش. بذار كل كدامو بذارم.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace Booklet
{
public partial class bookletForm : Form
{
SqlConnection con = new SqlConnection();
int emptyRow;
private void bookletForm_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter();

SqlCommand cmd = new SqlCommand();
string cs = "server=.\\sqlexpress;database=Booklet;trusted_conn ection=yes;";
con.ConnectionString = cs;
con.Open();
cmd.Connection = con;
da.SelectCommand = cmd;
cmd.CommandText = "select * From phoneNumber";
da.Fill(dt);
con.Close();
dataGridView1.DataSource = dt;
}
public bookletForm()
{
InitializeComponent();
}

private void BTinsert_Click(object sender, EventArgs e)
{
emptyRow = dataGridView1.Rows.Count;
((DataTable)dataGridView1.DataSource).Rows.Add(emp tyRow,textBox1.Text);
//ِِِِِِِِِِّّّّّّّّْْْْْْ~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~

}

private void button1_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand("UPDATE phoneNumber SET phoneNumber = @phonenumber WHERE ID = @id", con);
cmd.Parameters.AddWithValue("@phoneNumber", dataGridView1.CurrentRow.Cells[1].Value.ToString());
cmd.Parameters.AddWithValue("@id", dataGridView1.CurrentRow.Cells[2].Value.ToString());
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
}

veniz2008
پنج شنبه 29 فروردین 1392, 20:44 عصر
شماره سلول های گرید از صفر شروع میشن. خطا میگه که شماره سلول ها خارج از محدوده هستن چون سلول 2 وجود نداره.
اینطوری :

cmd.Parameters.AddWithValue("@phoneNumber", dataGridView1.CurrentRow.Cells[0].Value.ToString());
cmd.Parameters.AddWithValue("@id", dataGridView1.CurrentRow.Cells[1].Value.ToString());

complexcoding
پنج شنبه 29 فروردین 1392, 20:48 عصر
Cells[2] رو به 0 تغيير دادم ديگه ارور نمي ده و وقتي دكمه و فشار مي دم هيچ تغييري نمي كنه حالا وقتي فرم رو مي بندم و دوباره باز مي كنم ولي جدول تو گريدويو خالي هست؟ اين يعني اينكه سيو نشده؟
درسته چطور شده؟

complexcoding
پنج شنبه 29 فروردین 1392, 20:57 عصر
اين قبل بستن و دوباره باز كردم فرم :
http://www.niloblog.com/files/images/0bo7fmec2pawf7qz7y3.jpg
اين بعد از بستن و دوباره بازكردن فرم :
http://www.niloblog.com/files/images/gw0bghwp9krpg5b5wqc6.jpg

veniz2008
پنج شنبه 29 فروردین 1392, 21:10 عصر
یعنی چی؟
داده هاتون حذف میشه؟
شما مقادیر سلول 0 و 1 رو با مسیج باکس نمایش بده ببین چه مقادیری داخلش میریزه.

complexcoding
پنج شنبه 29 فروردین 1392, 22:32 عصر
اين كل پروژه فقط ديتابيسشو نتونستم بذارم كه فقط يه جدول با دوتا ستونه بي زحمت بسازش id و phonenumber.
http://wdl.persiangig.com/pages/download/?dl=http://complexcoding.persiangig.com/other/Booklet.rar

complexcoding
جمعه 30 فروردین 1392, 07:49 صبح
دوستان خواهش مي كنم يكي كمك كنه مشكل كجاست؟

mriman
جمعه 30 فروردین 1392, 08:51 صبح
سلام دوست من
من تا فردا شب خیلی سرم شلوغه
اما فردا انشاء الله و یا پس فردا یه کد بهت می گم که خیلی ساده بتونی هرنوع تغییر روی دیتاگرید رو به دیتا بیس وارد کنی بدون استفاده از دستور آپ دیتِ اس کیو ال
تا یکی دو روز دیگه صبر سحر نزدیک است

veniz2008
جمعه 30 فروردین 1392, 11:54 صبح
همونطوری که گفتم با مسیج باکس چک کن ببن چی داخلش میریزه :

SqlCommand cmd = new SqlCommand("UPDATE phoneNumber SET phoneNumber = @phonenumber WHERE ID = @id", con);
cmd.Parameters.AddWithValue("@phoneNumber", dataGridView1.CurrentRow.Cells[1].Value.ToString());
cmd.Parameters.AddWithValue("@id", dataGridView1.CurrentRow.Cells[0].Value.ToString());
MessageBox.Show(dataGridView1.CurrentRow.Cells[1].Value.ToString());
MessageBox.Show(dataGridView1.CurrentRow.Cells[0].Value.ToString());
con.Open();
cmd.ExecuteNonQuery();
con.Close();
ببین مقدار id و phonenumber رو بهت چی نشون میده.

complexcoding
جمعه 30 فروردین 1392, 12:13 عصر
مي توني كدي كه با مسيج باكس مقدار آي دي و فون نامبر رو نشون بده بذاري ؟ من هر كاري مي كنم اين متغيرهاي آي دي و فون نامبر رو نمي شناسه؟؟
ممنون

veniz2008
جمعه 30 فروردین 1392, 12:19 عصر
مي توني كدي كه با مسيج باكس مقدار آي دي و فون نامبر رو نشون بده بذاري ؟ من هر كاري مي كنم اين متغيرهاي آي دي و فون نامبر رو نمي شناسه؟؟
ممنون
به خدا خیلی سادست :گریه: :گریه:
این دو خط برای نمایش محتویات سلول0 و سلول1 هست :

MessageBox.Show(dataGridView1.CurrentRow.Cells[1].Value.ToString());
MessageBox.Show(dataGridView1.CurrentRow.Cells[0].Value.ToString());

complexcoding
جمعه 30 فروردین 1392, 12:29 عصر
وقتي دكمه رو مي زنم اول محتويات سلول آي دي رو نشون مي ده بعد هم محتويات فون نامبر رو يعني درست نشون مي ده.؟؟ ولي سيو نمي كنه تو ديتابيس؟؟؟؟ چطوريه آخه مشكل كجاست؟؟؟

veniz2008
جمعه 30 فروردین 1392, 12:33 عصر
وقتي دكمه رو مي زنم اول محتويات سلول آي دي رو نشون مي ده بعد هم محتويات فون نامبر رو يعني درست نشون مي ده.؟؟ ولي سيو نمي كنه تو ديتابيس؟؟؟؟ چطوريه آخه مشكل كجاست؟؟؟
ببین جانم!، من که پشت سیتم شما نیستم. شما باید به من بگی که آیا مقادیری که نشون میده با اون سطری که شما مدنظرت هست یکسانه یا نه؟
مثلا اگر گرید شما 5 سطر داره و شما سطر 3 رو انتخاب میکنی و میخوای ویرایش کنی، آیا messagebox ها مقدار صحیح id و phonenumber رو درست نشون میدن؟

complexcoding
جمعه 30 فروردین 1392, 12:35 عصر
آره درست نشون مي ده.

veniz2008
جمعه 30 فروردین 1392, 12:45 عصر
پس حله و مشکل اساسی نداری. از sql express استفاده میکنی(همون sql ویزوال استودیو) یا از sql server ؟

complexcoding
جمعه 30 فروردین 1392, 12:52 عصر
sql express هست اما ماله ويژوال استوديو 2008 نيست من اينو جدا فايل ستاپشو گرفتم نصب كردم :
103059
اگه درسته پس چرا هنگام اجراي دوباره نرم افزار اطلاعات بروز نمي شه و جدول خالي ظاهر مي شه؟

veniz2008
جمعه 30 فروردین 1392, 12:54 عصر
الان دقیق به من بگو مشکلت کجاست؟
چون دستور update شما مشکلی نداره.
بعد از آپدیت کردن آیا مشکلی رخ میده؟.
کامل بگو تا پست ها الکی زیاد نشه.

complexcoding
جمعه 30 فروردین 1392, 12:57 عصر
خيلي مچكر
وقتي دكمه update رو مي زنم مشكلي نداره وقتي نرم افزار رو مي بندم دوباره بازش مي كنم ديتاگريد ويو دوباره خالي مي شه؟/؟ مگه نبايد اطلاعات قبلي رو كه وارد كردم نمشون بده؟؟؟
راستي از درون خود sql management چطوري؟ چطوري مي تونم به محتويات جدول نگاه كنم ببينم اونجا هم يه تستي بكنم؟

veniz2008
جمعه 30 فروردین 1392, 13:28 عصر
شما بعد از اینکه عمل update رو انجام دادی برو داخل sql و جدولت رو نگاه کن. ببین تغییرات اعمال شده یانه. اگر اعمال شده که هیچی. باید سمت سی شارپ و در فرم لود چک کنی که با چه دستوری گرید رو پر میکنی.

complexcoding
جمعه 30 فروردین 1392, 14:30 عصر
نه هيچي تو جدول سيو نشده !!!

103064

veniz2008
جمعه 30 فروردین 1392, 14:52 عصر
خدااااااااااااااااااااااا ااااااااااااااااااااااااا اااااااااااااااا :گریه:
شما زمانی میتونی آپدیت انجام بدی که رکوردی داخل جدولت باشه. این جدول که رکوردی داخلش نیست.
اول رکورد درج کنید و بعدش برید سراغ آپدیت.

FastCode
جمعه 30 فروردین 1392, 14:55 عصر
خدااااااااااااااااااااااا ااااااااااااااااااااااااا اااااااااااااااا :گریه:
شما زمانی میتونی آپدیت انجام بدی که رکوردی داخل جدولت باشه. این جدول که رکوردی داخلش نیست.
اول رکورد درج کنید و بعدش برید سراغ آپدیت.
فکر میکنی من برای چی یک سال هست که دیگه سوال "اطلاعات ذخیره نمیشه" رو جواب نمیدم؟

complexcoding
جمعه 30 فروردین 1392, 15:06 عصر
خوب بچه ها حالا بريم سر بحث اينسرت كردن تو جدول :لبخند::لبخند::لبخند::لبخند:: بخند:

veniz2008
جمعه 30 فروردین 1392, 15:14 عصر
فکر میکنی من برای چی یک سال هست که دیگه سوال "اطلاعات ذخیره نمیشه" رو جواب نمیدم؟
قبول دارم که حق با شماست. ولی طوری بزرگ شدم که وقتی می بینم کسی نیاز به کمک داره و میتونم بهش کمک کنم، نمیتونم بی تفاوت رد بشم. بهرحال باید تاوان این تصمیم و اعتقادم رو هم بدم. ولی اگر شما یا هر کس دیگه ای در چنین تاپیک هایی شرکت نکنه اصلا ایرادی بهش وارد نیست. چون فوق العاده سخت و مشکل هست سر و کله زدن با چنین کاربرانی.
ولی تمرین خوبی هم واسه صبور بودن هست!! :لبخند:
موفق باشی بهروز جان.

complexcoding
جمعه 30 فروردین 1392, 15:20 عصر
دوستان خوب هست منت مي گذاريد اما تا اين حد حداقل چنين تعارفاتي رو در پيام هاي خصوصي با هم تيكه پاره كنيد تا كاربري ناراحت نشه شما هم در مسائل بي نهايت زيادي اشتباه كرديد و كساني رو درگير اشتباهاتتون كرديد كه هيچكس نمي تونه در زندگي خودش منكر اين قضيه بشه . بگذريم كه شايد اينكار شما از ناپختگي شما باشه ولي بازم ممنون از كمكي كه كرديد.

درواقع اشتباه من زياد هم بزرگ نبود چون سر تيتر تاپيك هم زدم تغييرات ديتاگريد ويو نه آپديت درواقع نمي دونستم كه قضيه آپديت با ثبت درج اطلاعات جديدي كه در ديتاگريد ويو انجام مي دم فرق داره.

FastCode
جمعه 30 فروردین 1392, 15:27 عصر
دوستان خوب هست منت مي گذاريد اما تا اين حد حداقل چنين تعارفاتي رو در پيام هاي خصوصي با هم تيكه پاره كنيد تا كاربري ناراحت نشه شما هم در مسائل بي نهايت زيادي اشتباه كرديد و كساني رو درگير اشتباهاتتون كرديد كه هيچكس نمي تونه در زندگي خودش منكر اين قضيه بشه . بگذريم كه شايد اينكار شما از ناپختگي شما باشه ولي بازم ممنون از كمكي كه كرديد.

درواقع اشتباه من زياد هم بزرگ نبود چون سر تيتر تاپيك هم زدم تغييرات ديتاگريد ويو نه آپديت درواقع نمي دونستم كه قضيه آپديت با ثبت درج اطلاعات جديدي كه در ديتاگريد ويو انجام مي دم فرق داره.

من واقعا شما رو هدف قرار ندادم.اگر کمکی هم از دستم بر بیاد انجام میدم.اگر هم ناراحت شدید معذرت میخوام.

فقط میخواستم اشاره کنم به اینکه همه تاپیک های از این دست حداقل ۲۰ پست طولشون میشه تا کسی که سوال پرسیده کد بزاره و بگه مشکل چیه.چون همیشه تصور غلطی راجع به مشکل و خطا وجود داره و غالب افراد در debug کردن و ترجمه متن خطا ها مشکل دارن که باعث میشه رفع و عیب یابی این خطا ها بیش از حد interactive بشه و نیاز به آزمایش و خطا و بازخورد زیادی پیدا کنه.منظور من هم این بود که چون اعصاب عیب یابی interactive ندارم توی این تاپیک ها زیاد شرکت نمیکنم.

البته من هیچموقع مشکلاتی اینچنینی رو که احتمال میدادم خودم میتونم حل کنم رو از کسی نپرسیدم.(احتمالا چون کسی رو نداشتم که ازش بپرسم)

veniz2008
جمعه 30 فروردین 1392, 15:35 عصر
دوستان خوب هست منت مي گذاريد اما تا اين حد حداقل چنين تعارفاتي رو در پيام هاي خصوصي با هم تيكه پاره كنيد تا كاربري ناراحت نشه شما هم در مسائل بي نهايت زيادي اشتباه كرديد و كساني رو درگير اشتباهاتتون كرديد كه هيچكس نمي تونه در زندگي خودش منكر اين قضيه بشه . بگذريم كه شايد اينكار شما از ناپختگي شما باشه ولي بازم ممنون از كمكي كه كرديد.

درواقع اشتباه من زياد هم بزرگ نبود چون سر تيتر تاپيك هم زدم تغييرات ديتاگريد ويو نه آپديت درواقع نمي دونستم كه قضيه آپديت با ثبت درج اطلاعات جديدي كه در ديتاگريد ويو انجام مي دم فرق داره.
هیچوقت رو کسی منت نذاشتم.
اگر پست های منو بخونید می بینید که هیچوقت اهل چاپلوسی و تعریف از یک شخصی نبودم. من مدت هاست که از داخل همین سایت FastCode رو میشناسم و به عنوان یه دوست قدیمی بهش احترام میذارم.
ایشون سوال کردن و من هم جواب دادم. من شما یا شخص خاصی رو مسخره نکردم ولی باید بپذیرید که نباید به این سبک سوال پرسید. اینجا فقط باید اشکالات توضیح داده بشه.
بهرحال اگر بهتون بر خورد و ناراحت شدید من معذرت میخوام ولی قصدی در کار نبوده.
موفق باشید.

complexcoding
جمعه 30 فروردین 1392, 20:22 عصر
من از اين كد براي درج اطلاعات ديتاگريد ويو در ديتابيسم استفاده مي كنم ولي خطاهايي مي ده كه نميدونم علتش چيست؟
SqlConnection sqlconn = new SqlConnection();
SqlCommand sqlcomm = new SqlCommand(sqlComm, sqlconn);
sqlcomm.ExecuteNonQuery();
sqlcomm.Dispose();
sqlconn.Close();
sqlconn.Dispose();

try
{
string col1 = dataGridView1[0, dataGridView1.CurrentCell.RowIndex].Value.ToString();
string col2 = dataGridView1[1, dataGridView1.CurrentCell.RowIndex].Value.ToString();
string col3 = dataGridView1[2, dataGridView1.CurrentCell.RowIndex].Value.ToString();

string insert_sql = "INSERT INTO datagrid(col1,col2,col3)VALUES('" + col1 + "','" + col2 + "','" + col3 + "')";

if (this.ExecuteSqlcommBool(insert_sql))
{ MessageBox.Show("Insert Success"); }
else
{ MessageBox.Show("Insert Failed"); }
}
catch
{ }
finally
{
//sqlcom
}
اولين خطا در خط دوم sqlComm هست . خطا " The name 'sqlComm' does not exist in the current context "
دوميش ExecuteSqlcommBool جلوي شرط if هست كه نمي دونم چرا نمي شناسه و زيرش خط قرمز مي كشه ؟ خطا : "'Booklet.bookletForm' does not contain a definition for 'ExecuteSqlcommBool' and no extension method 'ExecuteSqlcommBool' accepting a first argument of type 'Booklet.bookletForm' could be found (are you missing a using directive or an assembly reference?)"

ممنون

veniz2008
جمعه 30 فروردین 1392, 20:41 عصر
این دستور رو بزار داخل دکمه درج :

string s = "";
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
s = s + "insert into student2 values('" + dataGridView1.Rows[i].Cells[0].Value + "','" + dataGridView1.Rows[i].Cells[1].Value + "',N'" + dataGridView1.Rows[i].Cells[2].Value + "')" + ";";
}
s = s.Remove(s.Length - 1, 1);
SqlConnection con = new SqlConnection("Data source =(local);initial catalog = testgrid;integrated security = true");
con.Open();
SqlCommand cmd = new SqlCommand(s, con);
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Insert Success");

complexcoding
جمعه 30 فروردین 1392, 20:52 عصر
دستور رو اينطوري تغييرش دادم : جلوي catalog نام ديتابيسم رو گذاشتم و به جاي student2 نام جدولم يعني فون نامبر رو گذاشتم و تعداد ستون ها رو يكي كم كردم و جاي local آدرس سرور خودم رو گذاشتم.بعدش اجراش كردم .
اين كدا:
string s = "";
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
s = s + "insert into phoneNumber values('" + dataGridView1.Rows[i].Cells[0].Value + "','" + dataGridView1.Rows[i].Cells[1].Value + "')" + ";";
}
s = s.Remove(s.Length - 1, 1);
SqlConnection con = new SqlConnection("Data source =.\\sqlexpress ;initial catalog = Booklet;integrated security = true");
con.Open();
SqlCommand cmd = new SqlCommand(s, con);
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Insert Success");
ولي اين خطا رو داد:
Violation of PRIMARY KEY constraint 'PK_phoneNumber'. Cannot insert duplicate key in object 'dbo.phoneNumber'.
Violation of PRIMARY KEY constraint 'PK_phoneNumber'. Cannot insert duplicate key in object 'dbo.phoneNumber'.
Violation of PRIMARY KEY constraint 'PK_phoneNumber'. Cannot insert duplicate key in object 'dbo.phoneNumber'.

khokhan
جمعه 30 فروردین 1392, 21:00 عصر
خوب بچه ها حالا بريم سر بحث اينسرت كردن تو جدول :لبخند::لبخند::لبخند::لبخند:: بخند:
سلام

کل پروژه شما یه اشکالات کلی داشت که برطرفش کردم نحوه فراخوانی اطلاعات ایراد داشت اصلاحش کردم

رشته اتصال دیتابیس هم اصلاح شد و دیتابیس ضمیمه برنامه هستش ونیازی به اتک دستی نداره

البته من با vs2010 و sql 2008 کار کردم نمی دونم مال شما چه ورژنی هست

برای ثبت و آپدیت هم یه خورده کد نویسی کردم

البته سرم شلوغه کامل نیستند اما می تونه براتون ایده بده:لبخند:

complexcoding
جمعه 30 فروردین 1392, 21:08 عصر
سلام

کل پروژه شما یه اشکالات کلی داشت که برطرفش کردم نحوه فراخوانی اطلاعات ایراد داشت اصلاحش کردم

رشته اتصال دیتابیس هم اصلاح شد و دیتابیس ضمیمه برنامه هستش ونیازی به اتک دستی نداره

البته من با vs2010 و sql 2008 کار کردم نمی دونم مال شما چه ورژنی هست

برای ثبت و آپدیت هم یه خورده کد نویسی کردم

البته سرم شلوغه کامل نیستند اما می تونه براتون ایده بده:لبخند:
بي نهايت مچكر مشكل منو كامل برطرف كردي ببين از اين خطا چيزي سر در مي آري مال كد بالا
Violation of PRIMARY KEY constraint 'PK_phoneNumber'. Cannot insert duplicate key in object 'dbo.phoneNumber'.
فايلي كه دادي رو مي خوام تا فردا جز جز نگاه كنم ياد بگيرم ولي اين خطا رو هم بگو چطوري برطرف كنم.

veniz2008
جمعه 30 فروردین 1392, 21:13 عصر
ولي اين خطا رو داد:
Violation of PRIMARY KEY constraint 'PK_phoneNumber'. Cannot insert duplicate key in object 'dbo.phoneNumber'.
Violation of PRIMARY KEY constraint 'PK_phoneNumber'. Cannot insert duplicate key in object 'dbo.phoneNumber'.
Violation of PRIMARY KEY constraint 'PK_phoneNumber'. Cannot insert duplicate key in object 'dbo.phoneNumber'.
این خطا بخاطر اینه که شما داری سعی میکنی یک کلید رو چندبار ثبت کنی. مثلا اگر username شما a1 باشه، میخوای بیش از یک بار a1 رو ثبت کنی که امکان پذیر نیست. چک کنید که کلیدتون فقط یکبار وارد رشته s بشه و فقط یکبار باید هر کلید رو ثبت کنید.

mriman
یک شنبه 01 اردیبهشت 1392, 12:33 عصر
ببینید دوستان من، بخصوص دوست عزیزمون complexcoding
همون طور که قول داده بودم اومدم تا یه مطلب خیلی مفید رو به شما یاد بدم:
نکته اول : حتما در این برنامه ای که می گم در جدولتون در اس کیو ال، یک فیلد رو به عنوان کلید تعریف کنید(حتما حتما)
نکته دوم: در هنگام فرم لود، جدول رو در یک دیتا ست بریزید و اون دیتا ست رو در دیتا گرید ویو نشون بدید
نکه مهم و آخر: در همون صفحه ای که دیتا گرید رو گذاشتید، کد زیر را روی یک دکمه بنویسید

()sqlcommandbuilder cm=new sqlcommandbuilder
در داخل پرانتز بالا نام دیتا آداپتری که ساخته اید را وارد کنید مثلا من اون رو da فرض می کنم
("da.update(ds,"tabalname
tablename: نام جدول که در دیتا ست تعریف کرده اید و در دیتا گرید نمایش داده اید
ds: نام دیتا ست شما



خوب... حالا مسدوم آمادست!!!!
حالا می تونید با اجرای برنامه ، هرگونه تغییری در دیتا گرید انجام بدید(ویرایش ، حذف،درجو...) و بعد دکمه ای رو که کد بالا را درآن نوشتید فشار بدید تا تمام تغییرات بدون هیچ دستور اضافه ای در دیتابیس اعمال بشه
خداییش کیف کردید!!!
اگه راضی بودید حتما واسم دعا کنید و گرنه ...
ممنون
اگه مشکلی بود در خدمتیم

mriman
یک شنبه 01 اردیبهشت 1392, 16:35 عصر
دوست من complexcoding
تونستی؟