View Full Version : سوال: دسترسی به مقدار یک cell در dbgrid بدون استفاده از خاصیت Field
behzadboloori
جمعه 09 مهر 1389, 20:10 عصر
من میخوام یک DBGrid رو به Excell اکسپورت کنم. یکی از ستونهای DBGrig من به هیچ فیلدی متصل نیست.
زمانی که میخوام فیلدهای رو به اکسل اکسپورت کنم از کد زیر استفاده میکنم
temp=DBGrid1.Fields[j-1].Value;
ستونی که من اضافه کردم از جنس فیلد تیست برای همین هم خطا میگیره. هیچ کدوم از ستونهای جدول که از جنس فیلد هستن این خطا رو نمیدن.
برای همین دنبال روشی بودم که به مقدار سلول دسترسی داشته باشم بدون اینکه بخوام از Field استفاده کنم
vcldeveloper
شنبه 10 مهر 1389, 07:30 صبح
خب، توی اون ستونی که به فیلدی وصل نیست، به چه شکلی داده نوشتید؟
behzadboloori
شنبه 10 مهر 1389, 07:45 صبح
if(Column->Title->Caption==u"ردیف")
DBGrid1->Canvas->TextOut(Rect.left,Rect.top,IntToStr(DataSource1->DataSet->RecNo));
Felony
شنبه 10 مهر 1389, 07:54 صبح
if(Column->Title->Caption==u"ردیف")
DBGrid1->Canvas->TextOut(Rect.left,Rect.top,IntToStr(DataSource1->DataSet->RecNo));
دوست عزیز کدی که نوشتید مربوط به بخش C++ Builder میشه نه دلفی ، در ضمن وقتی با Canvas متن رو رسم کردید به عنوان یه لایه گرافیکی روی DBGrid یا ... رسم میشه و متد یا تابعی نیست که بتونید به اون متن دسترسی داشته باشید و بخونیدش .
behzadboloori
شنبه 10 مهر 1389, 08:09 صبح
آیا امکان این وجود داره که این ستون رو از ستونهایی که به فیلد متصل هستن تشخیص بدیم؟ (هنگام اجرا)
من یه جایی خونده بودم که AssignValues این کار رو میکنه ولی نتونستم ازش استفاده کنم
behzadboloori
شنبه 10 مهر 1389, 08:18 صبح
درضمن، اگه روشی وجود داره که بشه توی یه ستون در DBGrid مقداری ریخت که بعدا مشه بهش دسترسی داشت، لطفا راهنماییم کنین
Felony
شنبه 10 مهر 1389, 08:23 صبح
با AssignValues خیر ، DBGrid یه متد داره با نام ValidFieldIndex که صحت یه فیلد رو بررسی میکنه :
if DBGrid1.ValidFieldIndex(n) then
ShowMessage(DBGrid1.Fields[n].Value);
behzadboloori
شنبه 10 مهر 1389, 08:30 صبح
راهی هست که داده ای رو توی ستون DBGrid بریزم و بعدا یتونم اونو بخونم؟
vcldeveloper
شنبه 10 مهر 1389, 10:55 صبح
راهی هست که داده ای رو توی ستون DBGrid بریزم و بعدا یتونم اونو بخونم؟
داده که از آسمون نمیاد، از یک جایی خوانده میشه. DBGrid فقط وظیفه نمایش داده را داره، نه ذخیره کردن آن را.
شما دارید دائما مقدار RecNo یک Dataset رو در گرید رسم می کنید، به جای اون، می تونستید یک فیلد Calculated به Dataset اضافه کنید، و مقدار مورد نظر را به اون فیلد اختصاص بدید.
bootshow
یک شنبه 11 مهر 1389, 15:46 عصر
اولا بهتره همونجوری که آقای کشاورز گفتند یک فیلد جدید اضافه کنید.
خود DBGrid برای نمایش اطلاعات مستقیما از متدهای canvas استفاده میکنه.
بهرحای DBAdvGrid شرکت tms متد DBAdvGrid1.Cells[col,row] داره که میتونی نوشته خود را در dbgrid ذخیره کنی.
behzadboloori
دوشنبه 12 مهر 1389, 00:46 صبح
دوست عزیز کدی که نوشتید مربوط به بخش C++ Builder میشه نه دلفی ، در ضمن وقتی با Canvas متن رو رسم کردید به عنوان یه لایه گرافیکی روی DBGrid یا ... رسم میشه و متد یا تابعی نیست که بتونید به اون متن دسترسی داشته باشید و بخونیدش .
منم میدونم که این بخش مربوط به C++ Builder نمیشه. ولی اونجا اونقدر سوت و کوره که من مجبورم اشکالاتم رو با دلفی بپرسم و بعد تبدیلش کنم به سی!!
البته من اینجا خیلی چیزها یاد گرفتم که اصلا توی فروم سی نبود. البته یه کم پاسکال رو هم اجبارا یاد گرفتم!!!
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.