View Full Version : search در تمام record ها
marmar
سه شنبه 20 آذر 1386, 10:13 صبح
سلام
من می خوام روی یکی از فیلد های جدولم search کنم
اگه مقدار اون فیلد برابر مقدار خاصی بود بقیه مقدارهاش رو بیارم
کدی که دارم فقط رو record اول جواب می ده
می خوام رو رکورد های دیگه هم search کنم
می بگید تو for چی باید بنویسم for........?
if(ADOQuery1.FieldByName('sysnum').Value=StrToInt( Edit1.Text) )then
begin
Edit3.Text:=ADOQuery1.FieldValues['sellername'];
end
m101_30
سه شنبه 20 آذر 1386, 11:26 صبح
چرا از Query استفاده نمیکنید؟ Query بر روی تمام رکوردها عمل میکند.
marmar
سه شنبه 20 آذر 1386, 13:53 عصر
میشه بگید دقیقا چی باید بنویسم؟
ممنونم
SYNDROME
سه شنبه 20 آذر 1386, 20:35 عصر
میشه بگید دقیقا چی باید بنویسم؟
ممنونم
یک DBGrid را به ADO خودتان وصل کنید.
سپس شرط خود را در یک Query ساده بنویسید.
مثلا
ADO.SQL.Text := 'Select * From Tbl_Test Where Name = '+QuotedStr(Edit1.text);
ADO.Open;
دستور بالا کلیه رکودهایی که در جدول Tbl_Test که نام آنها برابر SYNDROME است پیدا کرده و در DBGrid نمایش می دهد.
موفق باشید
dkhatibi
سه شنبه 20 آذر 1386, 21:35 عصر
می بگید تو for چی باید بنویسم for........?
اگه می خواید از For استفاده کنید بنویسید
adoquery1.first
For j:=0 to adoquery1.recordcount-1 do begin
Your Code ...
adoquery1.next
end;
اما از روش آقای ُSyndrom استفاده نمایید.
marmar
شنبه 24 آذر 1386, 09:30 صبح
سلام
مرسی از راهنمایتون
اگه من بخوام از این کد
adoquery1.first
For j:=0 to adoquery1.recordcount-1 do begin
Your Code ...
adoquery1.next
end;
استفاده کنم
حالا بگم اون رکورد هایی رو که پیدا کردی داخل db grid بریز چی باید بنویسم؟
مرسی از توجهتون
vcldeveloper
شنبه 24 آذر 1386, 10:48 صبح
حالا بگم اون رکورد هایی رو که پیدا کردی داخل db grid بریز چی باید بنویسم؟
DBGrid به یک DataSource وصل میشه که آن هم به یک DataSet متصل میشه، پس از اون روشی که گفتید راه به جایی نمی برید. همانطور که دوستان در پست های قبلی توضیح دادند، یک کوئری با استفاده از SQL می نویسید که تمامی رکوردهایی که مورد نظر شما هستند را در یک DataSet برگرداند. این DataSet را به یک DataSource متصل می کنید و DataSource را به یک DBGrid. با Active شدن DataSet، رکوردها در DBGrid نمایش داده میشند.
درباره AdoQuery، AdoDataSet، یا Query مطالعه کنید.
marmar
یک شنبه 25 آذر 1386, 08:00 صبح
سلام
مرسی از راهنماییتون
من با این کد
ADOQuery1.Close;
ADOQuery1.SQL.Text:='select * from table2 where sysnum=1000';
ADOQuery1.Open;
تونستم اطلاعات SELECT شده رو تو DBGRID ببینم
اما مقدار یه فیلد رو دستی دادم
حالا می شه بگید چطور این مقدار رو از یه متغیر عددی که قبلا مقدار دهی شده بگیره
مرسی
SYNDROME
یک شنبه 25 آذر 1386, 17:18 عصر
ADOQuery1.Close;
ADOQuery1.SQL.Text:='select * from table2 where sysnum=1000';
ADOQuery1.Open;
به روش زیر عمل کنید.
Var
Value : Integer;
. . . .
. . . .
ADOQuery1.SQL.Text:='select * from table2 where sysnum='+Inttostr(Value);
موفق باشید
Amir_Safideh
دوشنبه 26 آذر 1386, 16:21 عصر
با سلام
من فکر میکنم که شما میتونید از دستور فیلتر هم برای جستجو کردن استفاده کنید .
With ADOQuery1 do
begin
Filtered := False;
Filter := 'sysnum = '+Edit1.Text;
Filtered := True;
End
Bahmany
چهارشنبه 28 آذر 1386, 06:46 صبح
اگه می خواید از For استفاده کنید بنویسید
adoquery1.first
For j:=0 to adoquery1.recordcount-1 do begin
Your Code ...
adoquery1.next
end;اما از روش آقای ُSyndrom استفاده نمایید.
این روش اصلا خوب نیست چون باعث میشه تمام اطلاعات موجود در Query مورد بررسی قرار بگیره به نظرم باید مورد این پست با دستورات Sql انجام بشه
مثلا
select * from tbl_name where name like '%A';
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.