سلام
برای ذخیره تغییرات DataGridView که ستون هایش از چند table دیتابیس گرفته شده چه کدی باید بنویسم؟
ممنون
Printable View
سلام
برای ذخیره تغییرات DataGridView که ستون هایش از چند table دیتابیس گرفته شده چه کدی باید بنویسم؟
ممنون
سلام
شما برای اینکه بتونین تغیرات رو ذخیره کنید باید شی DataSet که دارای جدولهای مورد استفاده هست رو بوسیله ی DataAdapter بروز کنی.
البته اگه فقط به فیلدهای از بین چند جدول نیاز دارید بهتر است با استفاده JOIN دستور فرمانی رو بسازید که فقط آن فیلدها رو بدست بیاورد که دیگه در اینجا نیازی به DataSet نیست و می تونید از یه DataTable استفاده کنید. ولی نهایتا کد بروز کردن بانک همون کد بالایی هست.کد:da.Update(ds);
مثال بدست آوردن فیلدهایی از دو جدول Customer و Address :
============================================کد:string SqlCommandText =
"SELECT FirstName,LastName,City " +
"FROM Customer customer JOIN " +
"Address address ON " +
"customer.CustomerID = " +
"address.AddressID;";
توجه داشنه باشید که برای بروز کردن یک DataSet یا DataTable یا ... باید فرمان درستی رو به DataAdapter بدید که اینکار می تونه فقط یکبار برای همیشه در طول یک برنامه به صورت زیر و به این راحتی انجام بگیره.
در ضمن da شی DataAdapter و ds شی DataSet می باشد.کد:SqlCommandBuilder cb = newSqlCommandBuilder(da);
موفق باشید.
ممنون
من می خوام تغییرات دیتا ست که بوسیله DataGridView بوجود آمده رو در پایگاه داده اعمال کنم .(پایگاه داده رو آپدیت کنم)
دستور اول اگه اشتباه نکنم دیتا ست رو اپدیت می کنه.
SqlCommandBuilder یه جا خوندم برای اعمال تغییرات در پایگاه داده در صورتی به کار میره که اطلاعات DataGridView از یک جدول بدست آمده باشه.
نقل قول:
دوست عزیز تو سی شارپ همه چی مرجع هست منم برای بار اول که از سی پلاس وارد شارپ شدم کمی گیج بودم.
شما کارهایی که گفتم رو انجام بدید اگر به مشکلی برخوردید و یا بعدش سوالی پیش اومد در خدمتم.
موفق باشید
برای آپدیت دیتا بیس که sql هستش از همین شی SqlCommandBuilder که نوشتی استفاده کردم .ولی برای DataGaridView کار میکنه که جدول دیتاست اون از یک جدول دیتابیس گرفته شده باشه.من امتحان کردم اینجوری بود.
کدها رو اینجا نوشتم.
کد:SqlCommandBuilder objcommandbuilder = new SqlCommandBuilder(objdataadapter);
objdataadapter.UpdateCommand = objcommandbuilder.GetUpdateCommand();
objdataadapter.Update(objdataset,"table1");
سلام
راستش من زیاد از حرف های شما چیزی سر در نمیارم!!!
ولی چیزی که فهمیدم جواب میدم!!!
1)شما نمی توانید فیلدهایی رو که هر کدوم در یه جدول قرار دارند و می خواین این فیلده با هم تشکیل یه جدول خاص رو بدن رو در همون جدولهای اصلی بروز یا ذخیره کنید. چون فیلدهای دیگه خالی میمونند و خطا...
بنابراین باید
2)اولا یه بانک جدید که حاوی یک جدول نگهدارنده ی اطلاعات فیلدهای جمع اوری شده هست رو ایجاد کنید.
ثانیا در برنامه اصلی پس از خواندن فیلدهای مورد نظر از جداول مختلف و همچنین خواندن جدول ایجاد شده توسط خوتان که قرار است اطلاعات این فیلدها رو نگهداری کند از بانک.و نهایتا قرار دادن فیلدهای جدید یا به روز شده در جدول جدید ایجاد شده توسط خودتان و بروز کردن آن.
ولی من هنوز نفهمیدم چرا می خواهید اطلاعات رو از چند جدول دیگه بخوانید و آن ها رو در یک جدول دیگه با تغییراتی ذخییره کنید؟
چرا کلا از یک جدول استفاده نمی کنید؟
در ضمن به خط دوم کدی که نوشتین نیازی نیست!!!
شب خوش.
مرسی مهدی جان.ممنون از راهنمایی
مثلا دو تا جدول در دیتابیس دارم که اون ها رو با join و دیگر دستورات در یک datagridview نمایش میدم ولی می خوام کاربر اون فیلدهایی رو بتونه تغییر بده که از جدول اول هستن و بعد تغییرات رو در جدول اول در دیتابیس ذخیره کنم.فکر می کنم اینجوری زیاد جالب در نیاد.!!!ولی نمی دونم امکانش هست یا نه.
پس امکان ویرایش رو در DataGridView غیر فعال کنم بهتره.از طریق کد چه جوری می تونم غیرفعالش کنم؟
مهدی جان در مورد کتاب گفته بودی من جزئیات دستورات رو با توضیحات ، کمتر توی کتاب ها دیدم.اگه کتاب مدنظر داری ممنون میشم معرفی کنی.
سلام
جدولی که از join کردن چند جدول دیگه بوجود بیاد رو شما نمی تونید بروز و ذخیره کنید چون بانک مشخصی نداره.ولی می تونید یک بانک ایجاد و جدول بدست امده رو در اون ذخیره کنید.نقل قول:
مثلا دو تا جدول در دیتابیس دارم که اون ها رو با join و دیگر دستورات در یک datagridview نمایش میدم ولی می خوام کاربر اون فیلدهایی رو بتونه تغییر بده که از جدول اول هستن و بعد تغییرات رو در جدول اول در دیتابیس ذخیره کنم
به هر حال چون شما فقط می خواین اطلاعات یکی بروز بشه و دیگری ثابت بمونه بهتره دستور فرمان رو این قرار بدید:
البته توجه کنید که باید از تمام فیلدهای جدول اول استفاده کنید.دلیلش در پست قبل گفتم.کد:
"SELECT * FROM Table1;" +
"SELECT * FROM Table2;";
برای بروز کردن هم که فقط همین جدول باید بروز بشه.
نقل قول:
.از طریق کد چه جوری می تونم غیرفعالش کنم؟
کد:
dgvSample.ReadOnly = true;
معمولا تمام کتاب هایی که تا الان خوندم چند فصل اول رو به سینتکس اختصاص دادن!نقل قول:
مهدی جان در مورد کتاب گفته بودی من جزئیات دستورات رو با توضیحات ، کمتر توی کتاب ها دیدم.اگه کتاب مدنظر داری ممنون میشم معرفی کنی.
چیزی که در این زمینه زیاد هست کتاب!!
اگر کمی در نت سرچی کنید به راحتی می تونید کتاب موردعلاقتونو پیدا کنید.
البته در فروم سی داش مهران هم تاپیک عظیمی!!! در این مورد زدن.
موفق باشید.کد:http://forum.p30world.com/showthread.php?t=184390
اینا توی فرم لود بنویسنقل قول:
پس امکان ویرایش رو در DataGridView غیر فعال کنم بهتره.از طریق کد چه جوری می تونم غیرفعالش کنم؟
موفق باشیکد:if (dataGridView1.DataMember != "")
{
dataGridView1.ReadOnly = true;
}
else
{
dataGridView1.ReadOnly = false;
}
مرسی مهدی جان
یه سوال در مورد dataview ممنون میشم راهنمایی کنید.
در دستور objdataview.rowfilter رشته رو باید بین " " و نام ستون هم تنها آورده میشه.حالا من می خوام یک ستون رو با خاصیت یک کنترل مثلا combobox یا textbox.text مقایسه کنم.اون خاصیت رو به چه شکل داخل rowfilter بنویسم؟