# Native Code > برنامه نویسی در 6 VB >  تعیین فرمت اطلاعات در Grid

## shsoft

با سلام
من فیلدی رو در یکGrid نمایش دادم که محتویات آن همیشه یکی از مقادیر 1و2و3
است حالا می خوام به جای نمایش این مقادیر به ترتیب مقادیر "رتبه اول" و "رتبه دوم"
و "رتبه سوم" نمایش داده بشه.اما نمی تونم

من قبلا برای مقادیر منطقی این کار رو کرده بودم:

Dim fmtBooleanData As StdDataFormat
Set fmtBooleanData = New StdDataFormat
fmtBooleanData.Type = fmtBoolean
"نقد"= fmtBooleanData.TrueValue
"چک"= fmtBooleanData.FalseValue
Set DataGrid1.Columns(5).DataFormat = fmtBooleanData

با تشکر</span>

----------


## Behrouz_Rad

سلام.
وقتی شما میگی مقادیر منطقی، یعنی یا صفر یا یک. دیگه 1 و 2و 3 چیه؟
بعدشم شما فیلدت رو از نوع Sring کن و یه تابع معادل بنویس که اگر یک وارد شد بشه رتبه اول اگر 2 وارد شد بشه رتبه دوم و ....

موفق باشید.
بهروز راد
 :wise1:

----------


## shsoft

دوباره سلام

1- من گفتم که "برای مقادیر منطقی این کار رو کردم" همان طور که در مثال روشن است.

2- من برای مقادیر عددی مانند بایت می خوام این کار رو انجام بدم

3- راه حلی که شما گفتید باعث به وجود آمدن اطلاعات اضافی در بانک و موجب
حجیم شدن بانک خواهد شد

4- خود datagrid همان طور که در مثال آمده چنین قابلیتی دارد اما من توانایی استفاده
از آن را ندارم و از دوستان کمک خواستم.

حالا هر کدو از دوستان راه حلی به نظرشون میرسه کمک کنند
با تشکر

----------


## Behrouz_Rad

آهااااااااااا.
آقا مشکلی که افراد این انجمن دارند اینه که سوالاتشون رو به درستی مطرح نمی کنند. البته ببخشیدااااااااا.
آقا جون، DataGrid یک روال داره به نام BeforeInsert که شما می تونی قبل از ریخته شدن اطلاعات در بانک اطلاعاتی شرط ورود اطلاعات رو چک کنی. اگر شرط برقرار بود، آرگومان Cancel برابر با False میشه و اگر برقرار نبود برابر با True میشه.

و اما...
در مورد اطلاعات اضافی هم بگم که شما باید اطلاعاتت رو نرمال سازی کنی.
که این بحث در درس مهندسی نرم افزار رشته های کامپیوتر در تمامی دنیا تدریس میشه.
موفق باشید.
بهروز راد
 :wise1:

----------


## shsoft

نشد دیگه!

شاید تا حدودی شما در مورد درست مطرح کردن سوال حق داشته باشد که من فکر می کنم عبارت "فرمت... " کاملا گویا باشه.

نکته دوم در مورد افزونگی اطلاعات که به اون اشاره کردم مطابق با گفته های شما
به جای عدد 1 مقدار "رتبه اول" ذخیره بشه که اینو اگر از نظر طول هم حساب کنی
فکر کنم چندین برابر داره اطلاعات بی خود ذخیره می شه.شما می تونید تعداد کاراکتر ها رو شمارش کنید.

نکته سوم در مورد روال BeforeInsert همان طور که می دونید این رول زمانی اجرا میشه که شما یک رکورد رو مستقیما در DataGrid وارد کنید اما من می خواهم اطلاعاتم رو فقط درDataGrid نمایش بدم.

----------


## Behrouz_Rad

سلام.
ای بابا.
خوب رشته ای رو که توی Text Box نوشته شده، با کدنویسی بررسی کن که آیا همون چیزی هست که شما می خوای یا نه.
هزار تا تابع وجود داره. میتونی از Mask Edit هم استفاده کنی.
مثلا واسه تاریخ با تابع IsDate می تونی مشخص کنی که مقدار وارد شده از نوع تاریخ هست یا نه.
و هزار تا چیز دیگه.
 :wise1:

----------


## reham

شما تو دیتا بیس 1 داری میخوای تو گرید اونو رتبه اول نشون بدی درسته؟
من معمولا مقادیر رو میخونم بعد فیلتر میکنم میریزم تو گرید.

----------


## shsoft

کاملا درسته ولی شما چطوری در grid رتبه اول رو نمایش می دهید

----------


## reham

من اول با query اطلا عات رو میخونم بعد میریزم تو هر چی متغیر ارایه .خلاصه بعد میبینم مثلا اگه 1 بود به جاش "رتبه اول" رو میریزم تو دیتاست بعد که همه رو فیلتر کردم حالا گرید رو به دیتاست بایند میکنم.

نمیدونم منطقی هست یا نه ولی من کارمو با این راه میندازم
موفق باشی.

----------

