PDA

View Full Version : سوال: مشکل در فیلتر جدول دیتابیس



farhadkarimi
جمعه 17 شهریور 1391, 23:28 عصر
با سلام
دوستان عزیز بنده یک فیلد رشته دارم زمانی که می خواهم آن را با tabel.filter:='fname='+'ali'
فیلتر کنم می گوید علی در جدول وجود ندارد درصورتی که وجود دارد ولی هنگامی که می خواهم اعداد را فیلتر کنم مشکلی پیش نمی آید لطفا بگویید مشکل چیست ضمنا چگونه می توانم بگراند عناصر دی بی گرید را یک درمیان سیاه و سفید کنم اگر سورس بزارید ممنون می شم

BORHAN TEC
یک شنبه 19 شهریور 1391, 01:15 صبح
سلام

دوستان عزیز بنده یک فیلد رشته دارم زمانی که می خواهم آن را با tabel.filter:='fname='+'ali'
فیلتر کنم می گوید علی در جدول وجود ندارد درصورتی که وجود دارد ولی هنگامی که می خواهم اعداد را فیلتر کنم مشکلی پیش نمی آید لطفا بگویید مشکل چیستاز کدی مثل زیر استفاده کنید:
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientDataSet1.FilterOptions := [foCaseInsensitive, foNoPartialCompare];
ClientDataSet1.Filtered := False;
ClientDataSet1.Filter := 'FIRST_NAME LIKE ' +
QuotedStr('%' + Edit1.Text + '%');
ClientDataSet1.Filtered := True;
end;

چگونه می توانم بگراند عناصر دی بی گرید را یک درمیان سیاه و سفید کنم اگر سورس بزارید ممنون می شم
در صفحه زیر به صورت کامل توضیح داده شده:
http://delphi.about.com/od/usedbvcl/a/grid_row_alt_cl.htm

YkA1363
یک شنبه 19 شهریور 1391, 20:48 عصر
يك نمونه برات نوشتم دقيقا كاري رو كه مي خواي برات انجام مي ده.
ولي درباره منطق كدهايي كه نوشتم بايد اساتيد محترمي كه عضو سايت هستند نظر بدن.

farhadkarimi
یک شنبه 19 شهریور 1391, 22:51 عصر
يك نمونه برات نوشتم دقيقا كاري رو كه مي خواي برات انجام مي ده.
ولي درباره منطق كدهايي كه نوشتم بايد اساتيد محترمي كه عضو سايت هستند نظر بدن.

ممنون سورسي كه نوشتي كار نمي كنه و من گفتم كه نمي خوام از query و ado استفاده كنم

farhadkarimi
یک شنبه 19 شهریور 1391, 23:02 عصر
سلام
از کدی مثل زیر استفاده کنید:
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientDataSet1.FilterOptions := [foCaseInsensitive, foNoPartialCompare];
ClientDataSet1.Filtered := False;
ClientDataSet1.Filter := 'FIRST_NAME LIKE ' +
QuotedStr('%' + Edit1.Text + '%');
ClientDataSet1.Filtered := True;
end;

در صفحه زیر به صورت کامل توضیح داده شده:
http://delphi.about.com/od/usedbvcl/a/grid_row_alt_cl.htm

در مورد اول اگر لطف كني و بيشتر توضيح دهي ممنون مي شم در مورد دوم كد كار نمي كنه خطا مي ده اگر يك سورس كامل و قابل اجرا براي دانلود بزراي كه عناصر جدول را يك در ميان سياه و سفيد كنه ممنون مي شم

BORHAN TEC
دوشنبه 20 شهریور 1391, 11:39 صبح
در مورد توضیحات کد اول می توانید به تاپیک زیر مراجعه کنید:
http://barnamenevis.org/showthread.php?19098-ADO-FilterOptions&highlight=foNoPartialCompare

در مورد دوم كد كار نمي كنه خطا مي ده اگر يك سورس كامل و قابل اجرا براي دانلود بزراي كه عناصر جدول را يك در ميان سياه و سفيد كنه ممنون مي شم
این کد به درستی کار می کنه و من هم تستش کردم. توجه داشته باشید که این کد باید در رویداد OnDrawColumnCell مربوط به DbGrid نوشته بشه.

shobair
دوشنبه 20 شهریور 1391, 14:33 عصر
با سلام
دوستان عزیز بنده یک فیلد رشته دارم زمانی که می خواهم آن را با tabel.filter:='fname='+'ali'
فیلتر کنم می گوید علی در جدول وجود ندارد درصورتی که وجود دارد ولی هنگامی که می خواهم اعداد را فیلتر کنم مشکلی پیش نمی آید لطفا بگویید مشکل چیست ضمنا چگونه می توانم بگراند عناصر دی بی گرید را یک درمیان سیاه و سفید کنم اگر سورس بزارید ممنون می شم

سلام

Table.filter:='fname='''+'ali'+'''';


چون فیلد شما از جنس استرینگ هست برای فیلتر باید داخل کوتیشن بذارید.

برای رنگی کردن ردیف های DBGrid باید در رویداد OnDrawColumnCell کد بنویسید


if(DBGrid1.DataSource.DataSet.FieldByName('flag'). Value=0)Then
begin
DBGrid1.Canvas.Brush.Color:=clBlack;
DBGrid1.Canvas.Font.Color:=clWhite;
end;
if(DBGrid1.DataSource.DataSet.FieldByName('flag'). Value=1)Then
begin
DBGrid1.Canvas.Brush.Color:=clWhite;
DBGrid1.Canvas.Font.Color:=clBlack;
end;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column, State);


کد بالا بر اساس فیلدی به نام flag و مقدار 0 یا 1 اون فیلد ردیفها رو سیاه یا سفید میکنه

شبیر

farhadkarimi
دوشنبه 20 شهریور 1391, 14:34 عصر
در مورد توضیحات کد اول می توانید به تاپیک زیر مراجعه کنید:
http://barnamenevis.org/showthread.php?19098-ADO-FilterOptions&highlight=foNoPartialCompare

این کد به درستی کار می کنه و من هم تستش کردم. توجه داشته باشید که این کد باید در رویداد OnDrawColumnCell مربوط به DbGrid نوشته بشه.

ممنون دست خوب كار مي كنه ولي يه مشكل داره اگه بگي چطور حل ميشه ممنون ميشم و اون اينه كه پس از رنگ بندي با كليك روي فيلدها فونت آنها سفيد مي شود و اين باعث ميشود كه عناصر جدول خواند نشود لطفا كمكم كنيد ممنون

farhadkarimi
دوشنبه 20 شهریور 1391, 23:41 عصر
يك نمونه برات نوشتم دقيقا كاري رو كه مي خواي برات انجام مي ده.
ولي درباره منطق كدهايي كه نوشتم بايد اساتيد محترمي كه عضو سايت هستند نظر بدن.

ممنون جواب داد اگر لطف كنيد سورسي را بزاريد كه همين كار را بدون استفاده از ديتابيس اكسس (ado) و با پارادوكس خود دلفي انجام بده خيلي ممنون ميشم بازم تشكر

BORHAN TEC
سه شنبه 21 شهریور 1391, 01:18 صبح
پس از رنگ بندي با كليك روي فيلدها فونت آنها سفيد مي شود...
این رو بخون تا هر رنگی که دوست داری بتونی اعمال کنی:
http://delphi.about.com/od/adptips2006/qt/dbgridhighlight.htm

mohammad_kerman65
پنج شنبه 13 مهر 1391, 09:04 صبح
با سلام و خسته نباشيد
من یک dbgrid دارم که میخوام داخل آن سرچ کنم یعنی وقتی حرفی نوشته میشه داخل یک edit یا dbedit (یا هرچیزی که بهتر بکار بیاد برای کاری که میخوام انجام بدم) رکوردهای dbgrid بر اساس ان حرف یا حروف فیلتر بشن نا اینجاش مشکلی ندارم ولی میخوام وقتی با کلید down رو میزنم بتونم رکوردهای dbgrig رو پیمایش کنم و وقتی روی هر رکورد میرم نام کامل اون شخص بیفته داخل همون edit یا هرچیزی که برای سرچ گذاشتم بدون اینکه فیلتر dbgrid عوض بشه.یعنی وقتی داخل edit میزنم م تمام اسمهایی که اولشون م هست فیلتر بشه وقتی رکوردها رو پیمایش میکنم اسم شخص به طور کامل بیفته داخل edit.چون من داخل onchangeمربوط به editکد نوشتم وقتی میگم اسم بطور کامل بفته داخلش خب فیلتر dbgrid هم عوض میشه.سعی کردم جوری توضیح بدم که برای اساتید جای مبهمی نباشه.
با تشکر

mohammad_kerman65
پنج شنبه 13 مهر 1391, 10:38 صبح
ببخشید حلش کردم.:d

mtfa65
جمعه 26 آبان 1391, 12:55 عصر
با سلام
من از دیتا بیس اکسس در دلفی استفاده می کنم. در یکی از فیلدهای دیتابیس اعدادی وارد شده اند و من می خواهم این اعداد را فیلتر کنم.
مثلا از عدد 5 تا 30 را می خواهم فلتر کنم. این کار را من به چه صورت باید انجام دهم.
لطفا راهنمایی فرماید.
با تشکر