PDA

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



Rocker
سه شنبه 30 مرداد 1386, 17:49 عصر
سلا به همه دوستان.
من میخواهم یک کد سرچ بنویسم تو اون از دستور فیلتر می خوام استفاده کنم حالا میخوام که بر اساس مقدار یک ادیت که رشته ای هم هست تمام رکوردهایی که حداقل یکی از فیلدهای اون چه فیلد های رشته ای و چه فیلدهای عددی اونرا بری ما برگرداند من اینکار را کرده ام اما فقط می تواند روی فیلدهای از نوع کاراکتر درست جواب میده سر همین قضیه خطا می دهد یعنی نوعها با هم برابر نیستند.
از شما دوستان تقاضا دارم بنده را راهنمایی کنید.

Batman
سه شنبه 30 مرداد 1386, 18:19 عصر
با سلام
دوست عزیز شما فقط برای فیلدهای از نوع رشته میتونید فیلتر کنید
بنابراین باید اونها رو از نوع رشته تعریف کنید

Hamid_PaK
سه شنبه 30 مرداد 1386, 19:47 عصر
از Parameters استفاده کنید که تفاوتی بین عدد و رشته وجود ندارد ...


SQL.Text :=
'INSERT INTO still_table SELECT * FROM main_table WHERE (id=:id)';
Parameters.ParamByName('id').Value := qry_addedit.FieldByName('id').AsInteger;


یا حق ...

vahid64
چهارشنبه 31 مرداد 1386, 11:30 صبح
به نظر من استفاده از sql پارامتری روش خوبی هست .
ولی بسیار بعید می دونم بتونی با یک sql ساده این کار رو انجام بدی مگر اینکه از sql های پیشرفته و تودرتو استفاده کنی


از Parameters استفاده کنید که تفاوتی بین عدد و رشته وجود ندارد ...
دوست عزیز آقای hamid_pak مطمئنی ؟؟؟ :-?

Saeid59_m
چهارشنبه 31 مرداد 1386, 11:59 صبح
فیلهای شما مشخصه از چه نوعی هستند . می تونید فیلتر رو بر اساس تمام فیلدها Or بنویسید . فقط جلو فیلدهای عددی ، رشته رو بعدد تبدیل کنید


....Filter = '(Code='+inttostr (edit1.text)+') OR (Name='+edit1.text+')'

Rocker
چهارشنبه 31 مرداد 1386, 12:17 عصر
دوست عزیز آقای hamid_pak مطمئنی ؟؟؟ :-?
آره آقا وحید آقای حمید پاک درست میفرمایند فرقی بین رشته و عدد قائل نمیشه برای همین من هم تصمیم گرفتم به جای فیلتر کردن که درد سرش زیاده و باید کدنویسی زیادی براش انجام بدم از پارامترها استفاده کنم تا حدودی جواب گرفتم اما هنگامی که این دستور را اجرا می کنم با خطا مواجه میشم فکر کنم در طرز نوشتن اشتباه دارم:
در ضمن من محتوای param1 را برابر با %2% به فرض مثال قرار داده ام تا تشابه نسبی رو بتونم بررسی کنم.

SQL.Add('select * from table1 WHERE name like param1 or id like param1');