PDA

View Full Version : سوال: تبدیل مقدار عددی به کلمه برای نمایش در گریدویو



جوان ایرانی
دوشنبه 29 اردیبهشت 1393, 00:11 صبح
باسلام
تو پروژه کتابخانه، تو جدول امانت وضعیت امانت بودن یا نبودن کتاب رو با 1 و 0 نشون میدم
حالا میخوام تو یه گرید ویو که لیست کتابها رو نشون میده بگم هر کتابی موجوده یا امانته
اما نمیدونم چجوری؟

کد نمایش در گرید ویو رو هم اینطوری نوشتم:

select * from libbook
dataGridView1.Columns.Clear();
dataGridView1.DataSource = null;
dataGridView1.DataSource = dt;
dataGridView1.Columns[0].Name = "bcode";
dataGridView1.Columns[1].Name = "bname";
dataGridView1.Columns[2].Name = "author";
dataGridView1.Columns[3].Name = "subject";

dataGridView1.Columns[0].HeaderText = "شماره کتاب";
dataGridView1.Columns[1].HeaderText = "نام کتاب";
dataGridView1.Columns[2].HeaderText = "نویسنده";
dataGridView1.Columns[3].HeaderText = "موضوع";

جوان ایرانی
دوشنبه 29 اردیبهشت 1393, 21:55 عصر
فک کنم سوالم رو بد گفتم چون با توجه به سطح سواد اعضا و مدیران این سایت بعیده کسی جواب این سوال رو ندونه

من یه جدول امانت دارم که شماره کتاب و شماره عضو و تاریخ رفت و برگشت و وضعیت امانت بودن یا نبودن رو ذخیره میکنه وقتی امانت میگیری وضعیت امانت میشه 1
و وقتی پس میدی میشه 0
تو جدول کتاب، شماره و نام و نویسنده و موضوع کتاب ذخیره میشه
حالا تو یه فرم لیست تمام کتابها رو تو یه گریدویو نشون میده که اینکار رو با کد بالا انجام دادم
حالا میخوام اون وضعیت امانت بودن و نبودن رو هم تو گریدویو نشون بده اما به جای 0و1 بنویسه :"امانت" و "موجود"
اما این تبدیل رو نمیدونم چه جوری انجام بدم
میدونم خیلی پیجیده نیست ولی هرکاری میکنم درست نمیشه

ممنون میشم راهنماییم کنید

forodo
سه شنبه 30 اردیبهشت 1393, 09:21 صبح
سلام
به نظر من یه فیلد دیگه داخل همون جدول با فرمت NVARCHAR ایجاد کنید.
شما وقتی دارید داخل بانک ذخیره رو انجام می دید یا آپدیت می کنید اگر کتاب امانت بود یعنی اون سلول در بانک 0 بود داخل سلول جدید نوشته شود جدید و برعکس.
حالا موقع قراخوانی تمام اطلاعات رو بیارید ولی فیلدی که 0 یا 1 است رو نمایش ندهید.
dataGridView1.Columns["مثلاً 0 و 1"].Visible= false;

forodo
سه شنبه 30 اردیبهشت 1393, 09:27 صبح
اینم بگم که
یا می تونید جدول رو اصلاً دست نزنید و دستی داخل دیتاگریدویو یک ستون درست کنید و اینطوری بنویسید.
foreach(datagridviewrow r in datagridview1.rows)
if(r.cells[ستون 0 و 1].value.tostring=="True")
r.cells["ستون جدید"].vaue="امانت"
else
r.cells["ستون 0 و 1].value="موجود"
ببخشید بد نوشتم چون همینجا دستی نوشتم

aslan
سه شنبه 30 اردیبهشت 1393, 16:56 عصر
سلام
بهتره کاری را که میخواین در همون سلکت انجام بدین ( dt حاوی اطلاعاتی باشه که نیاز دارین ) تا نیازی به استفاده از foreach و.... و پیمایش سطر به سطر دیتاگرید ویو نباشین ...............
موفق باشید

جوان ایرانی
سه شنبه 30 اردیبهشت 1393, 23:45 عصر
forodo عزیز ممنونم ولی روش اول رو درست نفهمیدم خب اگه قرار باشه تو جدول به جای مقادیر 0و1 کلمه خاصی مثل "جدید" بنویسم که
ازاول کلمات موجد و امانت ذخیره میکردم البته شایدهم من درست متوجه نشدم!

جوان ایرانی
سه شنبه 30 اردیبهشت 1393, 23:47 عصر
بهتره کاری را که میخواین در همون سلکت انجام بدین ( dt حاوی اطلاعاتی باشه که نیاز دارین )

اتفاقا من همین رو میخواستم بدونم ینی تو نوشتن با select مشکل دارم میتونید راهنماییم کنید؟

forodo
چهارشنبه 31 اردیبهشت 1393, 09:20 صبح
forodo عزیز ممنونم ولی روش اول رو درست نفهمیدم خب اگه قرار باشه تو جدول به جای مقادیر 0و1 کلمه خاصی مثل "جدید" بنویسم که
ازاول کلمات موجد و امانت ذخیره میکردم البته شایدهم من درست متوجه نشدم!
خواهش می کنم
من هم همچین کاری رو برای خودم کردم.
با اون فیلد 0 و 1 شرطهایی رو بررسی می کنم که 100% قابل اعتماد هست تا این که بیام از حروف فارسی استفاده کنم که نگرانم موقعی شاید مشکلی پیش بیاید ولی یک فیلد دیگه هم گذاشتم که فارسی رو توش ذخیره کردم.
شما کوئری زیر رو بنویسید:
SELECT ID, SendDate, TabagheType, N'امانت' AS Amanat
FROM tblLetterVarede
WHERE TabagheType = 0

UNION ALL

SELECT ID, SendDate, TabagheType, N'موجود'
FROM tblLetterVarede
WHERE TabagheType = 1

ORDER BY SendDate
اینطوری دیگه نیاز نیست که هیچ فیلدی رو به جدول داخل بانک اضافه کنید.
به جای TabagheType شما فیلد 0 و 1 خودتون رو بذارید.
اگر باز متوجه نشدید بگید کجاش تا توضیح بدم.

aslan
چهارشنبه 31 اردیبهشت 1393, 11:05 صبح
select *, (CASE Vaziyat WHEN 1 THEN 'موجود' ELSE 'امانت' END) AS Vaziyat from libbook