PDA

View Full Version : جستجوی موضوعی



sajadvahedi
چهارشنبه 10 مرداد 1386, 21:37 عصر
من می خوام یک جستوجوی موضوعی در برنامم داشته باشم.
بانک من access هستش .
جستوجوی موضوعی یعنی کلمه ای رو در یک عبارت پیدا کنه

رها
پنج شنبه 11 مرداد 1386, 10:01 صبح
select * from table1 where fieldname like '%sumValue%'

این کد تمام رکوردهای جدول مذکور رو که در فیلد fieldName مقداری شبیه به sumvalue دارن بر می گردونه.البته شما به جای sumValue باید عبارتی رو که کاربر وارد کرده بگذارید.

Batman
پنج شنبه 11 مرداد 1386, 12:13 عصر
در ادامه استاد رها
میتونی از کد زیر هم استفاده کنی
'select * from tablename where filedname like "'+edit1.text'%"'
موفق باشید

sajadvahedi
جمعه 12 مرداد 1386, 08:30 صبح
شرمنده
این کد که جواب نداد بانک برنامه من با access . این کد اجرا نشد
پیغام میده که selesct رو نمی شناسم .
اگه مشه کمکم کنید
متشکرم

Batman
جمعه 12 مرداد 1386, 08:50 صبح
با سلام
دوست عزیز لطفا پست خودتون رو به صورت کامل بیان کنید
اگه منظورتون کدی هست که من نوشتم درسته و هیچ مشکلی نداره در ضمن شما selesct
نوشتین باید select بنویسید

SYNDROME
جمعه 12 مرداد 1386, 11:28 صبح
با سلام

شرمنده
این کد که جواب نداد بانک برنامه من با access . این کد اجرا نشد
پیغام میده که selesct رو نمی شناسم .
اگه مشه کمکم کنید
متشکرم
دستوری را که خودتان نوشته اید و پیغام خطا را که سیستم می دهد بنویسید.
در ضمن اشاره نکردید که با چه روشی به بانک وصل می شوید.(ADO یا . . .)
می خواهید کلمه مورد نظر که شما وارد می کنید در کل رشته جستجو شود یا فقط در اول رشته ها باشد.
موفق باشید

sajadvahedi
جمعه 12 مرداد 1386, 22:10 عصر
من کدی که داده بودین رو نوشتم یعنی خط پایین :

select * from table1 where fieldname like '%sumValue%'
در جای table1 نام بانکم رو نوشتم و جای fieldname نام فیلدی که می خوام در اون جستوجو کنم و در جای sumValue مقداری رو که می خوام جستوجو کنم نوشتم .
من با ADO به بانکم وصل می شم
لطفا کمکم کنید

رها
شنبه 13 مرداد 1386, 06:52 صبح
لطفاً کدتون رو تا حدی که مربوط به اجرای این query می شه اینجا بذارید تا بررسی کنیم.

ghabil
شنبه 13 مرداد 1386, 10:36 صبح
من کدی که داده بودین رو نوشتم یعنی خط پایین :

select * from table1 where fieldname like '%sumValue%'
در جای table1 نام بانکم رو نوشتم و جای fieldname نام فیلدی که می خوام در اون جستوجو کنم و در جای sumValue مقداری رو که می خوام جستوجو کنم نوشتم .
من با ADO به بانکم وصل می شم
لطفا کمکم کنید


select * from table1 where fieldname like '''%sumValue%'''
این قرمزها دو تا ' هستند

sajadvahedi
شنبه 13 مرداد 1386, 20:14 عصر
ازتون متشکرم اما بازم نشد
نگاه کنید من کد پایین رو در قسمت form1.adoquery1.sql می نویسم اما در dbgrid که
مربوط به adoquery هستش هیچی نشون نمی ده :

select * from moshtarian where name like '''%alí%'''
اگه میشه کمکم کنید

ghabil
شنبه 13 مرداد 1386, 21:42 عصر
Openمیکنی AdoQueryت رو؟! DBGrid درست وصل هست ؟ مقدار مطابق با جستجو وجود داره؟

SYNDROME
شنبه 13 مرداد 1386, 22:35 عصر
با سلام

ازتون متشکرم اما بازم نشد
نگاه کنید من کد پایین رو در قسمت form1.adoquery1.sql می نویسم اما در dbgrid که
مربوط به adoquery هستش هیچی نشون نمی ده :

select * from moshtarian where name like '''%alí%'''
اگه میشه کمکم کنید
اینجوری تست کن.


ADO.Active : = False;
ADO.SQL.Text := 'select * from moshtarian where name like ''%'+Value+'%'''';
ADO.Active : = True;

اگر باز هم جواب نداد تعداد رکوردهای ADOرا بعد از دستور بالا چک کن ببین چند رکورد بر گردانده است.


ADO.RecordCount;

موفق باشی

rezvan_DP
یک شنبه 14 مرداد 1386, 11:46 صبح
سلام
من هم فکر میکنم که مشکلم مشابه این مورد باشه،البته من اینطوری نوشتم و مشابه اون کدی که جناب قابیل هم نوشته بودند رو تست کردم .

DM.ADOQuery.SQL.Text:='select A.*,B.b from A join B on A.a=B.a where (A.c like'+#39+'%'+edit.Text+'%'+#39+')';

اما این خطا رو میگیره که :syntax error in from clause
آیا قسمتی از کدی رو که نوشتم اشتباه هست؟
ممنوم.

moohssenn
سه شنبه 16 مرداد 1386, 20:35 عصر
فکر میکنم توی access به جای % در Like باید از * استفاده کنید . یه بار با * تست کن

Batman
چهارشنبه 17 مرداد 1386, 07:23 صبح
نه دوست عزیز (mohssenn) همونی که دوستان گفتم % کاملا درسته
من هم فکر کنم که اتصالات باید چک بشه

moohssenn
چهارشنبه 17 مرداد 1386, 11:09 صبح
نه دوست عزیز (mohssenn) همونی که دوستان گفتم % کاملا درسته
من هم فکر کنم که اتصالات باید چک بشه

یه بار توی accsess 2003 این مشکل رو داشتم با * حل کردم . اتفاقا شما که گفتید دوباره چک کردم دیدم توی برنامم * گذاشتم و مشکلی نداره .

ghabil
چهارشنبه 17 مرداد 1386, 13:39 عصر
سلام
من هم فکر میکنم که مشکلم مشابه این مورد باشه،البته من اینطوری نوشتم و مشابه اون کدی که جناب قابیل هم نوشته بودند رو تست کردم .

DM.ADOQuery.SQL.Text:='select A.*,B.b from A join B on A.a=B.a where (A.c like'+#39+'%'+edit.Text+'%'+#39+')';

اما این خطا رو میگیره که :syntax error in from clause
آیا قسمتی از کدی رو که نوشتم اشتباه هست؟
ممنوم.

یادم میاد اکسس یک داستانی با Join داشت البته دقیقش یادم نیست ، حالا تو که میخوای Inner join کنی این کار رو بکن :



DM.ADOQuery.SQL.Text:='select A.*,B.b from A , B where A.a=B.a and ...

rezvan_DP
چهارشنبه 17 مرداد 1386, 17:58 عصر
یادم میاد اکسس یک داستانی با Join داشت البته دقیقش یادم نیست ، حالا تو که میخوای Inner join کنی این کار رو بکن :



DM.ADOQuery.SQL.Text:='select A.*,B.b from A , B where A.a=B.a and ...


ممنون آقای قابیل،مشکل حل شد.پس میشه گفت که مشکل اصلی از اکسس هست؟!

محمود محمددوست
چهارشنبه 17 مرداد 1386, 18:15 عصر
این و امتحان کن:
select * from tablename WHERE fieldname LIKE ''%'+Edit1.Text+'%''

ghabil
پنج شنبه 18 مرداد 1386, 18:33 عصر
ممنون آقای قابیل،مشکل حل شد.پس میشه گفت که مشکل اصلی از اکسس هست؟!

راستش درست یادم نیست ولی شاید بشه گفت مشکل از سینتکس غیر استاندارد اکسس در مورد Join هست.