بعد از اولین ثبت اگه دوباره سعی بر ثبت رکورد نمائیم خطا می ده؟
برای اینکه دوباره بتوانیم ذخیره کنیم باید از فرم خارج شده ودوباره وارد فرم بشی!!؟
سئوال دوم اینکه چگونه رکوردهای انتخاب شده یا( searchشده) را یکجا حذف کنیم؟
بعد از اولین ثبت اگه دوباره سعی بر ثبت رکورد نمائیم خطا می ده؟
برای اینکه دوباره بتوانیم ذخیره کنیم باید از فرم خارج شده ودوباره وارد فرم بشی!!؟
سئوال دوم اینکه چگونه رکوردهای انتخاب شده یا( searchشده) را یکجا حذف کنیم؟
سلام
نمی دونم شما برای کاربر چه شرطی گذاشتید که هر جور هم که داده ها رو پر می کنم باز هم بهم گیر میده.
اومدم که برنامه را Trace کنم که دیدم این Error رو میده:
نمی دونم شما چه کار کردید. میشه بگید چرا برنامه ی شما به یک سری فایل های خارج از برنامه وابسته هست؟
FarsimessageBox.dll را به reference اضافه کن!
احتمالاً از این باشد;
از دوستان کسی هست کمک کنه؟!!
آخرین ویرایش به وسیله imani1983 : شنبه 29 خرداد 1389 در 17:06 عصر
دوستان اگه کسی مشکل این قسمت از برنامه را می دانندخواهش می کنم کمک کنند
گیر این مشکل هستم
اگه لطف کنی و Error که میده بزاری شاید بشه کمک کنی.
اولین بار که دکمه ثبت را می زنیم هیچ اروری نمیده ورکورد ثبت می شه ولی برای دومین بار که کلیک می کنیم ارور بالا را می ده
توراخدا یکی این مشکل رو حل کنه توهمه جای برنامه ام که از insert استفاده کردم این خطا را می ده!!!
منتظرم
آخرین ویرایش به وسیله imani1983 : یک شنبه 30 خرداد 1389 در 02:08 صبح
SP استفاده کردی؟ تو SP چی نوشتی؟ از فیلد CodeKala داره خطا می گیره.
کلید هست یا نیست؟ شاید رکورد تکراری داری تو جدولی اضافه می کنی که فیلد کلید داره و در هنگام درج دوم همون مقدار قبلی رو وارد می کنی، بدون اینکه خبر داشته باشی
این خطایی که میگیره به خاطر اینه که شما اجازه وارد کردن کدکالا تکراری را ندارید. دو دلیل داره یا فیلد کدکالا را یک کلید کردید یا انحصاری که همون Unique که تو عکس هستش. این خطا درست است و مشکلی نداره برای رفع این مشکل هم باید به کاربر بگید که کدکالا فقط برای یک کالا ثبت میشود و در موقع ثبت کالا چک کنید که کدکالا تکراری نباشه. اگه بانک رو هم میزاشتید بهتر بود. اگه مشکلتون حل نشد بگید تا بررسی کنیم.
دوست عزیز پایگاه داده درون پوشه هست یه نگاهی بنداز SQl2000 هست Atach کن!!
2- نه این فیلدی که من وارد می کنم کاملاًتکراری نیست ،منحصر به فرده% من فکر می کنم باید Datatable را خالی کنم؟ یا ...
Datatable.clear()
دوستان خواهش می کنم به این مشکل من رسیدگی کنین ممنون می شم %
پایگاه داده اش هم اینه
آخرین ویرایش به وسیله imani1983 : سه شنبه 01 تیر 1389 در 20:58 عصر
سلام
دوست عزیز اگر به عکسی که خودتون گذاشتید دقیق نگاه کنید متوجه میشوید که اشکال از کجاست.
شما دو فیلد کدکالا و نام کالا (codekala, namekala) را باهم یک کلید اصلی تعریف کردهاید. این به این معناست که امکان وارد کردن کدکالا و نام کالا یکسان وجود ندارد. ساده تر بگم مثلآ برای وارد کردن یک کالا به نام "مداد" شما باید یک کدکالا به آن اختصاص دهید، مثل "101"، شما میتونید با عدد "101" یک کالای دیگر ثبت کنید ولی نام آن نباید "مداد" باشد. اگر این کار انجام بدهید برنامه خطا میدهد.
این کار رو انجام دادم namekala را از primerykey در آوردم و یک فیلد کلید موند باز امتحان کردم همون ارور را می ده ایندفعه همه فیلد کلید ها را برداشتم باز همون اررو را داد%
من فکر می کنم که این ایرادش از پایگاه داده نیست فکر کنم از دستورات داخل دگمه ثبت هست اصلاً sqlcommnd یا bal_kalaTableAdapter را خالی نمیکنه %
از دوستان اگه کسی کد ثبت کامل رکورد شبیه این برنامه که ارور نده بزارند ممنون می شم چون یک هفته است منتظر جواب این مشکل شدم ممنون%
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "")
{
MessageBox.Show("کاربر گرامی لطفاً کد کالا را وارد کنید", "اعلان", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
textBox1.Focus();
}
else
if (textBox2.Text == "")
{
MessageBox.Show("ًکاربر گرامی لطفاً نام کالا را وارد کنید", "اعلان", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
textBox2.Focus();
}
else
try
{
DialogResult res = FMessageBox.Show(" آیااز ثبت کالا مطمئن هستيد؟ ", "ثبت کالا به انبار", FMessageBoxButtons.YesNo, FMessageBoxIcons.Question);
if (res == DialogResult.Yes)
{
sqlCommand1.Connection.Close();
sqlCommand1.CommandText = "insert into Bal_kala (codekala,namekala,tabage,tedad,varnumeric,contry, company,varkala,minmojodi,maxmojodi,datainput,code anbar,status,vahedanbar,valueXarid,valueFrosh)VALU ES(@codekala,@namekala,@tabage,@tedad,@varnumeric, @contry,@company,@varkala,@minmojodi,@maxmojodi,@d atainput,@codeanbar,@status,@vahedanbar,@valueXari d,@valueFrosh)";
sqlCommand1.Parameters.AddWithValue("@codekala", textBox1.Text);
sqlCommand1.Parameters.AddWithValue("@namekala", textBox2.Text);
sqlCommand1.Parameters.AddWithValue("@tabage", textBox3.Text);
sqlCommand1.Parameters.AddWithValue("@tedad", textBox4.Text);
sqlCommand1.Parameters.AddWithValue("@varnumeric", comboBox5.Text);
sqlCommand1.Parameters.AddWithValue("@contry", comboBox3.Text);
sqlCommand1.Parameters.AddWithValue("@company", comboBox1.Text);
sqlCommand1.Parameters.AddWithValue("@varkala", comboBox6.Text);
sqlCommand1.Parameters.AddWithValue("@minmojodi", textBox6.Text);
sqlCommand1.Parameters.AddWithValue("@maxmojodi", textBox7.Text);
sqlCommand1.Parameters.AddWithValue("@datainput", maskedTextBox2.Text);
sqlCommand1.Parameters.AddWithValue("@codeanbar", textBox8.Text);
sqlCommand1.Parameters.AddWithValue("@status", comboBox4.Text);
sqlCommand1.Parameters.AddWithValue("@vahedanbar", textBox9.Text);
sqlCommand1.Parameters.AddWithValue("@valueXarid", textBox10.Text);
sqlCommand1.Parameters.AddWithValue("@valueFrosh", textBox11.Text);
sqlCommand1.Connection.Open();
int insert = sqlCommand1.ExecuteNonQuery();
if (insert == 1)
{
this.bal_kalaTableAdapter.Fill(this.regkalaDataSet .Bal_kala);
FMessageBox.Show("کالا با موفقیت اضافه شد", "پیام", FMessageBoxButtons.OK, FMessageBoxIcons.Information);
this.toolStripProgressBar1.Visible = true;
int i = 0;
for (i = 0; i < 100; i += 1)
{
this.toolStripProgressBar1.ProgressBar.Value = i;
this.toolStripProgressBar1.ProgressBar.Step = 100;
}
this.toolStripProgressBar1.Visible = false;
sqlCommand1.Connection.Close();
}
else
{
FMessageBox.Show("در فرآيند ذخيره سازي مشكلي پيش آمده است", "پیام", FMessageBoxButtons.OK, FMessageBoxIcons.Information);
}
}
}
catch (Exception)
{
FMessageBox.Show("!ثبت نشد.لطفاً كمي دقت نمائيد", "پیام خطا", FMessageBoxButtons.OK, FMessageBoxIcons.Error);
textBox1.Focus();
}
}
بالاخره تونستم این مشکل رفع کنم
اگه بتونید همین جا بگید ایراد از چی بوده، ممنون میشیم.
فکر کنم بدونم مشکلتون از کجا بوده بعد از ثبت اطلاعات باید sqlCommand.Parameter.Clear رو باید اجرا می کردید؟ درست میگم
اول conn را به صورت دستی ایجاد کردم
SqlConnection conn = new SqlConnection();
دوم Command را به صورت دستی وارد کردم
SqlCommand Command = new SqlCommand();
سوم connection string را نوشتم در حالی که قبلاً از کنترل استفاده می کردم
command را با conn ارتباط دادم
چهارم اینکه قبل ازنوشتن دستور sql نباید command را close می کردم (زمانی که دستور اس کیو ال اجرا بشه command.close(); اجرا بشه و
در آخر قبل از اجرای sql باید command.open(); صورت می گرفت
تمام