View Full Version : سوال: انتخاب فيلد بصورت دلخواه در دستوارت select
  
yosefyosef
دوشنبه 24 آذر 1393, 12: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, 15:02 عصر
سلام.
هر جا دوست داشتید که نمی تونید % بگذارید.
select field from table where field like '%something%'
idehrayan
دوشنبه 24 آذر 1393, 17: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, 23: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, 08:24 صبح
سلام
;(procedure TForm1.CheckBox1Click(Sender: TObject
begin
  ;DBGrid1.Columns[1].Visible := CheckBox1.Checked
;end
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.