مشکل در دستور select در سی شارپ و SQL
با سلام خدمت دوستان و مهندسین بزرگوار
سوالی داشتم خدمتتون میخواستم لطف کنید و جواب بدین
نرم افزرای برای یک شرکت ساختمانی طراحی کردم که یکسری اطلاعات برای مثال نوع سقف ، نوع کفپوش و ....... به عنوان ورودی اولیه از کاربر دریافت میکنه
که جدول تمام اطلاعات پایه دو تا فیلد بیشتر نداره ID و subject
من در زمان ثبت سفارش فقط ID هر کدوم از پارامترهایی که نیاز داشته باشم را داخل جدول ثبت سفارش ذخیره میکنم اما عنوان را دحیره نمیکنم
الان موقع نمایش اطلاعات داخل دیتاگرید مشکل دارم
من ID رکوردهام را ذخیره کردم الان میخوام عنوان اون Id را داخل دیتاگرید موقع نمایش یا جستجوی سفارش بهم نشون بده
چکار باید بکنم ؟
اصلا کاری که کردم درست هست ؟
ممنن میشم جواب بدین
نقل قول: مشکل در دستور select در سی شارپ و SQL
نقل قول:
نوشته شده توسط
misagh.sys
با سلام خدمت دوستان و مهندسین بزرگوار
سوالی داشتم خدمتتون میخواستم لطف کنید و جواب بدین
نرم افزرای برای یک شرکت ساختمانی طراحی کردم که یکسری اطلاعات برای مثال نوع سقف ، نوع کفپوش و ....... به عنوان ورودی اولیه از کاربر دریافت میکنه
که جدول تمام اطلاعات پایه دو تا فیلد بیشتر نداره ID و subject
من در زمان ثبت سفارش فقط ID هر کدوم از پارامترهایی که نیاز داشته باشم را داخل جدول ثبت سفارش ذخیره میکنم اما عنوان را دحیره نمیکنم
الان موقع نمایش اطلاعات داخل دیتاگرید مشکل دارم
من ID رکوردهام را ذخیره کردم الان میخوام عنوان اون Id را داخل دیتاگرید موقع نمایش یا جستجوی سفارش بهم نشون بده
چکار باید بکنم ؟
اصلا کاری که کردم درست هست ؟
ممنن میشم جواب بدین
شما هم می توانید موقع خواندن از پایگاه داده با دستور SQL اون ID رو با Subject اش جایگزین کنید (INNER JOIN) و هم می توانید موقع نمایش در DataGridView تبدیل رو انجام بدید.
برای تبدیل سریع id به subject در کدتون می توانید یک <Dictionary<int, string تعریف کنید که ابتدای برنامه همه اون id ها و subject شون رو ذخیره کنه تا موقع نمایش سریع id بگیره و subject تحویل بده.
مثلا :
private Dictionary<int, string> _subjects = new Dictionary<int, string>();
private void Form1_Load(object sender, EventArgs e)
{
var dataTable = new DataTable();
// Fill DataTable...
foreach (DataRow row in dataTable.Rows)
{
_subjects.Add((int)row["id"], (string)row["subject"]);
}
}
و در DataGridView شما می توانید مشخص کنید که میخوام در ستون فلان (مثلا ستون اندیس 1) بجای id که واقعا قرار دادم، فلان عبارت string، مثلا subject اش نمایش داده بشه :
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == 1)
{
string subject;
if (_subjects.TryGetValue(int.Parse(e.Value.ToString( )), out subject) == false)
{
subject = "نامشخص";
}
e.Value = subject;
e.FormattingApplied = true;
}
}
نقل قول: مشکل در دستور select در سی شارپ و SQL
سلام
ممنون از وقتی که گذاشتی
امکانش هست بیشتر توضیح بدی ؟
من درست متوجه نشدم
نقل قول: مشکل در دستور select در سی شارپ و SQL
دوست عزیز
برای مثال من سه تا جدول اطلاعات پایه دارم
1 - کفپوش -> با فیلد های ID و subject
2-نوع سقف -> با فیلدهای ID و subject
3-نوع کابینت -> با فیلدهای ID و subject
هر کدوم از این جداول چندین رکورد دارند
من آی دی مورد نظرم را از هر کدوم از این جدوال گرفتم و داخل جدول ثبت سفارش ذخیره کردم
حالا میخوام موقع نمایش سفارش داخل دیتا گریدویو بجای نمایش شماره ِآی دی عنوانی که واسشون قبلا در بخش اطلاعات پایه ذخیره کردم نمایش بده
نقل قول: مشکل در دستور select در سی شارپ و SQL
نقل قول:
نوشته شده توسط
misagh.sys
دوست عزیز
برای مثال من سه تا جدول اطلاعات پایه دارم
1 - کفپوش -> با فیلد های ID و subject
2-نوع سقف -> با فیلدهای ID و subject
3-نوع کابینت -> با فیلدهای ID و subject
هر کدوم از این جداول چندین رکورد دارند
من آی دی مورد نظرم را از هر کدوم از این جدوال گرفتم و داخل جدول ثبت سفارش ذخیره کردم
حالا میخوام موقع نمایش سفارش داخل دیتا گریدویو بجای نمایش شماره ِآی دی عنوانی که واسشون قبلا در بخش اطلاعات پایه ذخیره کردم نمایش بده
متوجه شدم. شما ابتدای اجرای برنامه تون باید مشخصات جداول پایه، سه تا جدول یا بیشتر، فرقی نمی کنه، رو بخونید و داده هاشون که میگه id فلان متناظر عنوان بهمان میشه رو در اون subjects_ فراخوانی کنید، یعنی subjects_ با این داده ها پر میشه.
مثلا میگه ID ئه 123 متناظر هست با "کفپوش مدل فلان"
از اون به بعد که مساله نمایش داخل DataGridVew هست، شما id که یک عدد ئه رو در ستون قرار می دهید که اینجا اگر کار اضافی انجام نمی دادید همون id عددی رو هم در ستون نشون میده.
ولی ما چون در رخداد CellFormatting اون DataGridView دستکاری می کنیم، بجای id همون عنوان متناظرش رو از داخل subjects_ پیدا میکنه و نمایش میده. subjects_ دیکشنری ئه و برای همین سرعت جستجو کردنش بالا است.
نقل قول: مشکل در دستور select در سی شارپ و SQL
گرفتم چی شد
فقط یه سوال دیگه اینکه Datatable را چطور پر بکنم که از چه جدولی دیتا را بخونه ؟
نقل قول: مشکل در دستور select در سی شارپ و SQL
دوستان ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
نقل قول: مشکل در دستور select در سی شارپ و SQL
نقل قول:
نوشته شده توسط
misagh.sys
گرفتم چی شد
فقط یه سوال دیگه اینکه Datatable را چطور پر بکنم که از چه جدولی دیتا را بخونه ؟
نمیدونم پایگاه داده تون چیه و از چی میخونید، در اغلب موارد نیازی نیست DataTable پر بشه، چون DataTable یک واسطه است و میشه بجاش از SqlDataReader استفاده کرد، مثل مثال اینجا، اما به هر حال مثلا در مورد SQL Server شما یک شیء SqlDataAdapter میسازید که یک دستور کوئری ئه SQL میخواد و یک ConnectionString که وصل بشه به پایگاه داده فلان. بعد این SqlDataAdpater تون یک متد Fill داره که با اون DataTable رو پر می کنید با داده هایی که توسط کوئری Select شدن. مثلا این پست رو ببینید. یک SqlDataAdapter میسازه و توسط اون DataTable رو Fill می کنه با داده ها.
نقل قول: مشکل در دستور select در سی شارپ و SQL
خیلی ممون دوست عزیز:قلب::قلب::قلب::قلب::قلب: