ورود

View Full Version : سوال: انتخاب فيلد بصورت دلخواه در دستوارت select



yosefyosef
دوشنبه 24 آذر 1393, 11:26 صبح
با سلام وخسته نباشید خدمت دوستان

من یک جستجو ساده خواستم انجام دهم که در این جستجو برای کاربر امکان جستجو در فیلدی که خودش دوست داره انجام دهد
برای مثال : ما در دیتابیس مان فیلدهای a1,a2,a3,a4,b1,b2,b3,b4 ساختیم
من دوتا edit1 ,edit2 گذاشتم كه در edit1 بتونم فيلد انتخاب كنم ودر edit2 كلمه مورد جستجو بنويسم
اما جواب نداد
var
a1,a2,a3,a4,b1,b2,b3,b4,: string;
begin
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add('select ''%'+ edit1.Text +'%'' from table1 where ''%'+edit1.Text +'%' like ''%'+edit2.Text +'%' '');
ADOQuery1.Active:=true;
Show;
end;

یوسف زالی
دوشنبه 24 آذر 1393, 14:02 عصر
سلام.
هر جا دوست داشتید که نمی تونید % بگذارید.


select field from table where field like '%something%'

idehrayan
دوشنبه 24 آذر 1393, 16:11 عصر
سلام
با اجازه اساتید
روش اصولیش اینه که یک کامبوباکس رو فرم بزارین مقادیر ایتم کامبوباکس را عنوان فیدهای جدول قرار بدین

در مثال زیر یک جدول داریم که دارای فیلدهای SH_Hesab , Lname , Fname و... هستش حالا اگه بخواهیم در جدول بر اساس این سه فیلد جستجو کنیم یک کامبو باکس رو فرم قرار میدیم و ایتم هاش رو برابر شماره حساب - نام - نام خانوادگی قرار میدیم.
حالا کاربر هر کدام از ایتم های بالا رو انتخاب کنه جستجو بر اساس آن انجام خواهد گرفت



if edit1.Text='' then
begin
;ADOQuery1.SQL.Clear
;('ADOQuery1.SQL.Add('Select * from Table1
;ADOQuery1.Active:=true
end
else
begin
;ADOQuery1.SQL.Clear

then 'شماره حساب' = if combobox1.Text
begin
;("'%'+ADOQuery1.SQL.Add('Select * from Table1 where SH_Hesab like "%'+edit1.Text
;ADOQuery1.Active:=true
;end

then 'نام خانوادگی' = if combobox1.Text
begin
;("'%'+ADOQuery1.SQL.Add('Select * from Table1 where Lname like "%'+edit1.Text
;ADOQuery1.Active:=true
;end

then 'نام' = if combobox1.Text
begin
;("'%'+ADOQuery1.SQL.Add('Select * from Table1 where Fname like "%'+edit1.Text
;ADOQuery1.Active:=true
;end
;end



موفق باشیم

yosefyosef
دوشنبه 24 آذر 1393, 22:41 عصر
با تشكر از دوستان ،
توضیح بیشتر بدهم ، من اگر 200 فیلد مثلا داشته باشم ودر DBgrad همه فيلدها بزحمت مي توان ببينم براي همين بايستي در جستجو برای کاربر گزینه انتخاب فیلد بدهم بنابر این در مثال شما
;("'%'+ADOQuery1.SQL.Add('Select * from Table1 where Fname like "%'+edit1.Text
همه فیلدها در DBgrad را نشان می دهد گرچه جستجو فقط در Fname انجام می دهد
پس ما باید در دستور Select * from Table1 بجای * از فیلدهای استفاده شود که کاربر استفاده کرده ، شاید یک فیلد شاید دو وشاید بیشر ومعمولا از
CheckBox استفاده مي شود یعنی بتعداد فیلدها از CheckBox
خلاصه وقتی از CheckBox 1 و CheckBox5 وCheckBo10 فیلدها 1 و 5 و 10 در DBgrad ظاهر می شود

با تشکر از همکاریتان

idehrayan
سه شنبه 25 آذر 1393, 07:24 صبح
سلام
;(procedure TForm1.CheckBox1Click(Sender: TObject
begin
;DBGrid1.Columns[1].Visible := CheckBox1.Checked
;end