View Full Version : فیلتر گیری به وسیله adoquery
farzad_az_shiraz
یک شنبه 31 تیر 1386, 11:55 صبح
سلام من قبلا با table فیلتر گیری کردم ولی حالا که دستورات را برای فیلتر گیری با adoquery مینویسم جواب نمی گیرم.
ممنون می شم کمکم کنید.
من در رویداد adoquery ،onfilterrecord دستور زیر را مینویسم :
Accept:=ADOQuery1.FieldByName('id').AsString=Edit1 .Text;
و در جایی که می خوام مثلا یه botten دستور زیر را مینویسم.
ADOTable1.Filtered:=true;
ولی جواب نمی ده
Batman
یک شنبه 31 تیر 1386, 13:32 عصر
adoquery1.sql.add('select fieldname from tablename where(id=:id)');
adoquery1.sql.parameters.parambyname('id').value:= edit1.text;
adoquery1.open
mzjahromi
یک شنبه 31 تیر 1386, 16:41 عصر
شاید حالت کاراکتر ها رو در نظر نمیگیرید.
یه بار Trace کنید ببینید مقدار فیلدها چیه؟
درضمن برای فیلترهای به این سادگی از AdoQuery1.Filter هم میتونید استفاده کنید
farzad_az_shiraz
دوشنبه 01 مرداد 1386, 17:27 عصر
سلام
آقای جهرمی منظورتون اینه که دستوراتم درسته ؟
آخه من فکر می کردم فیلتر گیری با adotable با ADOQUERY فرق داره؟
درضمن برای فیلترهای به این سادگی از AdoQuery1.Filter هم میتونید استفاده کنید
مگه فیلتر گیری بهتر و جامعتری هم وجود داره ؟ اگه آره ممنون میشم کمکم کنید.
سوال دومم اینه که فیلتر کردن با adoquery بهتره یا adotable ؟ البته زمانی که تعداد رکورد ها زیاد میشه چی ؟
و کلا کار کردن با adoquery و adotable بهتره یا با query و table ؟
سوال سوم : چطوری می شه توی یه dbgrid یه رکورد در میان رنگ رکوردها را تغییر داد ؟ مثلا یه رکورد در میان سفید و آبی بشه ؟
با تشکر.
Batman
دوشنبه 01 مرداد 1386, 18:53 عصر
سوال سوم : چطوری می شه توی یه dbgrid یه رکورد در میان رنگ رکوردها را تغییر داد ؟ مثلا یه رکورد در میان سفید و آبی بشه ؟
با تشکر.
این کدهایی رو که میگم و میذارم به ترتیب که گذاشتم در خاصیتهای ondrawcolumn و onmousedown و ontitleclick وارد کن البته کدها رو یکی از بچه های سایت نوشته که الان حضور ذهن ندارم چه کسی بوده ولی بهرحال ازشون تشکر میکنم
1
DBGrid1.Canvas.Font.Color:=clBlack;
if((DBGrid1.DataSource.DataSet.RecNo mod 2)=0)Then
DBGrid1.Canvas.Brush.Color:=clInfoBK;
if(gdSelected in State)Then
DBGrid1.Canvas.Brush.Color:=clBlue;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column, State);
2
var
pt: TGridcoord;
begin
pt:= DBGrid1.MouseCoord(x, y);
if pt.y=0 then
DBGrid1.Cursor:=crDefault
else
DBGrid1.Cursor:=crDefault;
3
procedure TForm3.DBGrid1TitleClick(Column: TColumn);
{$J+}
const PreviousColumnIndex : integer = 0;
{$J-}
begin
if DBGrid1.DataSource.DataSet is TCustomADODataSet then
with TCustomADODataSet(DBGrid1.DataSource.DataSet) do
begin
try
DBGrid1.Columns[PreviousColumnIndex].title.Font.Style :=
DBGrid1.Columns[PreviousColumnIndex].title.Font.Style - [fsBold];
except
end;
Column.title.Font.Style :=Column.title.Font.Style + [fsBold];
PreviousColumnIndex := Column.Index;
if (Pos(Column.Field.FieldName, Sort) = 1)
and (Pos(' DESC', Sort)= 0) then
Sort := Column.Field.FieldName + ' DESC'
else
Sort := Column.Field.FieldName + ' ASC';
end;
end;
موفق باشی
mzjahromi
دوشنبه 01 مرداد 1386, 18:53 عصر
سلام
آقای جهرمی منظورتون اینه که دستوراتم درسته ؟
آخه من فکر می کردم فیلتر گیری با adotable با ADOQUERY فرق داره؟
دستورات درسته و فرقی بین این دو تا توی نحوه فیلتر کردن وجود نداره
مگه فیلتر گیری بهتر و جامعتری هم وجود داره ؟ اگه آره ممنون میشم کمکم کنید.
ADOQuery1.Filter:='id='+QuotedStr(Edit1.Text);
AdoQuery1.Filtered:=True;
نمونه ها و سوالات زیادی در این زمینه مطرح شده جستجو کنید
سوال دومم اینه که فیلتر کردن با adoquery بهتره یا adotable ؟ البته زمانی که تعداد رکورد ها زیاد میشه چی ؟
و کلا کار کردن با adoquery و adotable بهتره یا با query و table ؟
بستگی به شریط و نوع نیازتون داره
سوال سوم : چطوری می شه توی یه dbgrid یه رکورد در میان رنگ رکوردها را تغییر داد ؟ مثلا یه رکورد در میان سفید و آبی بشه ؟
با تشکر.
جستجو کنید
farzad_az_shiraz
جمعه 05 مرداد 1386, 14:47 عصر
من در رویداد adoquery ،onfilterrecord دستور زیر را مینویسم :
کد:
Accept:=ADOQuery1.FieldByName('id').AsString=Edit1 .Text;
و در جایی که می خوام مثلا یه botten دستور زیر را مینویسم.
کد:
ADOTable1.Filtered:=true;
ولی جواب نمی ده
من در مورد سوال اولم که توی نقل قول گذاشتم به نتیجه نرسیدم ممنون میشم کمکم کنید.
SYNDROME
جمعه 05 مرداد 1386, 15:25 عصر
با سلام
من در مورد سوال اولم که توی نقل قول گذاشتم به نتیجه نرسیدم ممنون میشم کمکم کنید.
روشی که دوستمان در بالا گقت راحتر است و خوب کار می کند
ADOQuery1.Filter:='id='+QuotedStr(Edit1.Text);
AdoQuery1.Filtered:=True;
ولی فقط قبل از دستورات کد زیر را اضافه کن.
AdoQuery1.Filtered:=False;
موفق باشی
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.