1 ضمیمه
ویرایش اطلاعات ثبت شده در دیتابیس
سلام..
من تو ادیت اطلاعات زمانی که مثلاً یه جایی می خوام شمارههائی رو اتومات بزنه مشکل دارم.یعنی کاربر وارد نکنه . زمانی که مثلا ID رو (به فرض شماره سرویس) رو دستی وارد میکردم مشکلی واسه ویرایش ندارم..
به عکس دقت کنید
ضمیمه 108665
الان که عدد ID دستم نیست تو UpdateQuery در DataDet هم ویرایش رو براساس اینکه باید ID رو وارد کنید گذاشتم اینم کداش..
UPDATE [dbo].[Tbl_ajance] SET [Name_ajance] = @Name_ajance, [Admin_ajance] = @Admin_ajance, [Adress] = @Adress, [Tel1] = @Tel1, [Tel2] = @Tel2
WHERE ([ID] = @Original_ID);
SELECT ID, Name_ajance, Admin_ajance, Adress, Tel1, Tel2 FROM Tbl_ajance
WHERE (ID = @ID)
الان این کد رو چجوری واردکنم که سیستم خطا نگیره
این کد ویرایشه:
MoshtarakDataSetTableAdapters.Tbl_ajanceTableAdapt er ajc = new MoshtarakDataSetTableAdapters.Tbl_ajanceTableAdapt er();
tbl_ajanceTableAdapter1.UpdateQuery(؟؟؟؟؟؟؟ ؟؟؟؟)
اینم اسم تکست باکس:
(txt_name_ajance, txt_name_modir, txt_adress, txt_tel1 txt_Tel2)
txt_id هم برای واردکردن شماره اتومات گذاشتم رو فرم زمانی که بخوام ویرایش کنم
اینم کد insert:جهت اطلاع
MoshtarakDataSetTableAdapters.Tbl_ajanceTableAdapt er ajc = new MoshtarakDataSetTableAdapters.Tbl_ajanceTableAdapt er();
tbl_ajanceTableAdapter1.InsertQuery(txt_name_ajanc e.Text, txt_name_modir.Text, txt_adress.Text, txt_tel1.Text, txt_Tel2.Text);
نقل قول: ویرایش اطلاعات ثبت شده در دیتابیس
لازم نیست آی دی رو دستی وارد کنی
اگه توی فرمت دیتا گرید داری با استفاده از اندیس سطر انتخابی آی دی رو می تونی خیلی راحت واکشی کنی
int ID = Convert.ToInt16(dataGridView1.SelectedRows[0].Cells[0].Value);
بعد به اون آی دی که بدست آوردی اشاره کنی
MoshtarakDataSetTableAdapters.Tbl_ajanceTableAdapt er ajc = new MoshtarakDataSetTableAdapters.Tbl_ajanceTableAdapt er();
tbl_ajanceTableAdapter1.UpdateQuery(ID)
1 ضمیمه
نقل قول: ویرایش اطلاعات ثبت شده در دیتابیس
نقل قول:
نوشته شده توسط
khokhan
لازم نیست آی دی رو دستی وارد کنی
اگه توی فرمت دیتا گرید داری با استفاده از اندیس سطر انتخابی آی دی رو می تونی خیلی راحت واکشی کنی
int ID = Convert.ToInt16(dataGridView1.SelectedRows[0].Cells[0].Value);
بعد به اون آی دی که بدست آوردی اشاره کنی
MoshtarakDataSetTableAdapters.Tbl_ajanceTableAdapt er ajc = new MoshtarakDataSetTableAdapters.Tbl_ajanceTableAdapt er();
tbl_ajanceTableAdapter1.UpdateQuery(ID)
اره گرید هست تو فرم
بازم خطامیده
نباید کاره دیگه انجام بدم..؟
اون DataSet رو نمیخواد دستکاری بشه؟
اصلا این کدها رو باید تو همین باتن "ثبت" قرار بدم یا یه باتن دیگه به اسم دیگه؟
ضمیمه 108674
1 ضمیمه
نقل قول: ویرایش اطلاعات ثبت شده در دیتابیس
نقل قول:
نوشته شده توسط
messi13
اره گرید هست تو فرم
بازم خطامیده
نباید کاره دیگه انجام بدم..؟
اون DataSet رو نمیخواد دستکاری بشه؟
اصلا این کدها رو باید تو همین باتن "ثبت" قرار بدم یا یه باتن دیگه به اسم دیگه؟
ضمیمه 108674
این نمونه با entity Model فکر کنم مشکل شما رو مرتفع کنه حذف و اضافه و ویرایش و فراخوانی همه رو توش گذاشتم
آپدیت با استفاده از دریافت id از ردیف انتخابی گرید هست و البته راههای زیادی برای این منظور هست که یکیش این روشه
1 ضمیمه
نقل قول: ویرایش اطلاعات ثبت شده در دیتابیس
داداش این خطاء مال چیه
مال foreach
ضمیمه 108688
نقل قول: ویرایش اطلاعات ثبت شده در دیتابیس
نقل قول:
نوشته شده توسط
messi13
داداش این خطاء مال چیه
مال foreach
توضیحات مربوط به اون ارور در پایین صفحه چیه :لبخند: اونوارو بگذار " عزیز !!! ما چه علم غیب نداریم "
یا یه ااسکرین شات از کل صفحه بگذار که بالا وپایین کدها معلوم باشه
هرچند احتمالا یه کروشه کم یازیاده
1 ضمیمه
نقل قول: ویرایش اطلاعات ثبت شده در دیتابیس
نه کروشه مشکل ندارند
این توضیح foreach
نقل قول:
Error 20 Cannot convert type 'Final.MoshtarakDataSet.Tbl_ajanceRow' to 'Final.Tbl_ajance' C:\Users\AS@L\Documents\Visual Studio 2010\Projects\Final\Final\Form_ajance.cs 69 13 Final
اینم مال دومی
نقل قول:
Error 21 'Final.MoshtarakDataSet' does not contain a definition for 'SaveChanges' and no extension method 'SaveChanges' accepting a first argument of type 'Final.MoshtarakDataSet' could be found (are you missing a using directive or an assembly reference?) C:\Users\AS@L\Documents\Visual Studio 2010\Projects\Final\Final\Form_ajance.cs 84 21 Final
ضمیمه 108692
نقل قول: ویرایش اطلاعات ثبت شده در دیتابیس
اینم کدها:
private void buttonX2_Click(object sender, EventArgs e)
{
int ID = Convert.ToInt16(dataGridView1.CurrentRow.Cells[0].Value);
MoshtarakDataSet context = new MoshtarakDataSet();
var query = from data in context.Tbl_ajance
orderby data.ID
select data;
foreach (Tbl_ajance details in query)
{
if (details.ID == ID)
{
details.Name_ajance = txt_name_ajance.Text;
details.Admin_ajance = txt_name_modir.Text.ToString();
details.Adress = txt_adress.Text.ToString();
details.Tel1 = txt_tel1.Text.ToString();
details.Tel2 = txt_Tel2.Text.ToString();
details.Adress = txt_adress.Text.ToString();
}
}
context.SaveChanges();
getData();
}
نقل قول: ویرایش اطلاعات ثبت شده در دیتابیس
نقل قول:
نوشته شده توسط
messi13
نه کروشه مشکل ندارند
این توضیح foreach
اینم مال دومی
ضمیمه 108692
برنامه رو با linq نوشتی یا با entity ?????
میتونی یه تصویر از Solution Explorer بگذاری ؟
1 ضمیمه
نقل قول: ویرایش اطلاعات ثبت شده در دیتابیس
با linq می خواستم با entity اجرا کنم کل فرمهام نزدیک 500 خطا داد که بی خیال شدم..
ضمیمه 108694
نقل قول: ویرایش اطلاعات ثبت شده در دیتابیس
نقل قول:
نوشته شده توسط
messi13
با linq می خواستم با entity اجرا کنم کل فرمهام نزدیک 500 خطا داد که بی خیال شدم..
[ATTACH=CONFIG][/ATTACH]
پس با این حساب دستور آپدیتتون بایستی شبیه این باشه
private void button1_Click(object sender, EventArgs e)
{
int ID = Convert.ToInt16(dataGridView1.CurrentRow.Cells[0].Value);
MoshtarakDataSet context = new MoshtarakDataSet();
var matchedCustomer = (from c in context.GetTable<Tbl_ajance>()
where c.id == ID
select c).SingleOrDefault();
Tbl_ajance cust = new Tbl_ajance();
matchedCustomer.Name_ajance = txt_name_ajance.Text;
matchedCustomer.Admin_ajance = txt_name_modir.Text.ToString();
matchedCustomer.Adress = txt_adress.Text.ToString();
matchedCustomer.Tel1 = txt_tel1.Text.ToString();
matchedCustomer.Tel2 = txt_Tel2.Text.ToString();
matchedCustomer.Adress = txt_adress.Text.ToString();
context.SubmitChanges();
}
1 ضمیمه
نقل قول: ویرایش اطلاعات ثبت شده در دیتابیس
تقریبا ولی بیشتر از طریق Detaset کئوری میسازم
ضمیمه 108697
و در مرحله ایجاد کیئوری این کدها رو واسه آپدیت میذارم
نقل قول:
UPDATE [dbo].[Tbl_ajance] SET [Name_ajance] = @Name_ajance, [Admin_ajance] = @Admin_ajance, [Adress] = @Adress, [Tel1] = @Tel1, [Tel2] = @Tel2 WHERE ((@IsNull_Name_ajance = 1 AND [Name_ajance] IS NULL) OR ([Name_ajance] = @Original_Name_ajance)) AND ((@IsNull_Admin_ajance = 1 AND [Admin_ajance] IS NULL) OR ([Admin_ajance] = @Original_Admin_ajance)) AND ((@IsNull_Adress = 1 AND [Adress] IS NULL) OR ([Adress] = @Original_Adress)) AND ((@IsNull_Tel1 = 1 AND [Tel1] IS NULL) OR ([Tel1] = @Original_Tel1)) AND ((@IsNull_Tel2 = 1 AND [Tel2] IS NULL) OR ([Tel2] = @Original_Tel2)));
SELECT ID, Name_ajance, Admin_ajance, Adress, Tel1, Tel2 FROM Tbl_ajance WHERE (ID = @ID)
وفرمت کلی کدها هم واسه ویرایش به صورت زیر.
البته این کد رو تو این پروژه استفاده نکردم
private void EDIT_Click(object sender, EventArgs e)
{
MoshtarakDataSetTableAdapters.tbl_MoshtarakTableAd apter ajance = new MoshtarakDataSetTableAdapters.tbl_MoshtarakTableAd apter();
try
{
tbl_MoshtarakTableAdapter.UpdateQuery(Convert.ToIn t32(txtcode_mosh.Text), txtname.Text, txtfname.Text, txtaddress.Text, txttel.Text, Convert.ToInt32(txtcode_mosh.Text));
this.tbl_MoshtarakTableAdapter.Fill(this.moshtarak DataSet.tbl_Moshtarak);
MessageBox.Show("اطلاعات با موفقیت ویرایش شد");
}
catch
{
MessageBox.Show("کد مشترک را وارد کنید", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
نقل قول: ویرایش اطلاعات ثبت شده در دیتابیس
نقل قول:
تقریبا ولی بیشتر از طریق Detaset کئوری میسازم
به نظرم توخود فرم این کارو بکنی بهتره
موفق باشی
2 ضمیمه
نقل قول: ویرایش اطلاعات ثبت شده در دیتابیس
نقل قول:
نوشته شده توسط
khokhan
پس با این حساب دستور آپدیتتون بایستی شبیه این باشه
private void button1_Click(object sender, EventArgs e)
{
int ID = Convert.ToInt16(dataGridView1.CurrentRow.Cells[0].Value);
MoshtarakDataSet context = new MoshtarakDataSet();
var matchedCustomer = (from c in context.GetTable<Tbl_ajance>()
where c.id == ID
select c).SingleOrDefault();
Tbl_ajance cust = new Tbl_ajance();
matchedCustomer.Name_ajance = txt_name_ajance.Text;
matchedCustomer.Admin_ajance = txt_name_modir.Text.ToString();
matchedCustomer.Adress = txt_adress.Text.ToString();
matchedCustomer.Tel1 = txt_tel1.Text.ToString();
matchedCustomer.Tel2 = txt_Tel2.Text.ToString();
matchedCustomer.Adress = txt_adress.Text.ToString();
context.SubmitChanges();
}
https://barnamenevis.org/images/misc/pencil.png
نقل قول: ویرایش اطلاعات ثبت شده در دیتابیس
نقل قول:
نوشته شده توسط
messi13
اون جا که نوشتی :
MoshtarakDataSet context = new MoshtarakDataSet();
عوضش کن اینطوری بنویس :
myDataDataContext context = new myDataDataContext();
1 ضمیمه
نقل قول: ویرایش اطلاعات ثبت شده در دیتابیس
این هم کدهای ویرایش شما در یه پروژه با linq
نقل قول: ویرایش اطلاعات ثبت شده در دیتابیس
ممنون دقیقا همون کدهاست با تغییرات اندک که دادید
فقط برا ویرایش باید بر روی جدول یا بهتر بگم سطر مربوطه کلیک کنیم بعد تغییرات رو اعمال کنیم..
یه جاهائی که مثلا شماره ها زیاد هستند..بشه تو یه تکست باکس یه سرچ زد یا مثلا شماره رو تو تکس باکس وارد کرد بعد ویرایش انجام بشه..
بالاخره از یه روش جواب گرفتیم..:لبخند:
2 ضمیمه
نقل قول: ویرایش اطلاعات ثبت شده در دیتابیس
نقل قول:
نوشته شده توسط
messi13
تقریبا ولی بیشتر از طریق Detaset کئوری میسازم
ضمیمه 108697
و در مرحله ایجاد کیئوری این کدها رو واسه آپدیت میذارم
وفرمت کلی کدها هم واسه ویرایش به صورت زیر.
البته این کد رو تو این پروژه استفاده نکردم
private void EDIT_Click(object sender, EventArgs e)
{
MoshtarakDataSetTableAdapters.tbl_MoshtarakTableAd apter ajance = new MoshtarakDataSetTableAdapters.tbl_MoshtarakTableAd apter();
try
{
tbl_MoshtarakTableAdapter.UpdateQuery(Convert.ToIn t32(txtcode_mosh.Text), txtname.Text, txtfname.Text, txtaddress.Text, txttel.Text, Convert.ToInt32(txtcode_mosh.Text));
this.tbl_MoshtarakTableAdapter.Fill(this.moshtarak DataSet.tbl_Moshtarak);
MessageBox.Show("اطلاعات با موفقیت ویرایش شد");
}
catch
{
MessageBox.Show("کد مشترک را وارد کنید", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
با سلام
تعداد آرگومان تعریف شده در کوئری داخل دیتاست با تعداد متغیر متناظربا آرگومانها در فرم مربوطه بایستی همخوانی داشته باشند
درضمن برای ویرایش دو عدد فیلد اونهمه کد اضافی لازم نیست تمام چیزی که بایستی در query builder بنویسین اینه :
ضمیمه 108812
این هم نمونه برنامه شما با اجرای کوئری در داخل دیتاست همراه باورود داده ، ویرایش داده و حذف داده و کلی مخلفات ذیربط :لبخند:
ایدکم ا.. جمیعا