PDA

View Full Version : سوال: مشکل در دستور جستجو



Fastdesign
یک شنبه 16 بهمن 1390, 17:20 عصر
سلام

من با این دستور تو دیتابیس عمل جستجو را انجام می دادم . ولی حالا که دارم با SQL کار می کنم خطا می گیره !!!!!

with ADOQuery1 do
begin
Close;
SQL.Text:='select * from AfradInfo where Fname Like"'+Edit1.Text+'%"';
ExecSQL;
end;

این هم خطاش :
82080

به نظر شما مشکل از کجاست؟

programmer33
یک شنبه 16 بهمن 1390, 17:29 عصر
دستور رو به صورت 'select * from AfradInfo where Fname Like"'+quotedstr(Edit1.Text)+'%"';تغییر دهید

Fastdesign
یک شنبه 16 بهمن 1390, 17:50 عصر
مگه این دستور Quotedstr چه عملی را انجام میده؟

Fastdesign
یک شنبه 16 بهمن 1390, 17:56 عصر
داش به این صورت که شما گفتین نوشتم بازهم جواب نمی ده!!

چکار کنم؟

pezhvakco
یک شنبه 16 بهمن 1390, 18:24 عصر
این کد دستور رو امتحان نمایید :

with ADOQuery1 do
begin
Close;
SQL.Text:='select * from AfradInfo where Fname Like ' + QuotedStr(Edit1.Text + '%') + ' ';
Open;
end;

من با این دستور تو دیتابیس عمل جستجو را انجام می دادم . ولی حالا که دارم با SQL کار می کنم خطا می گیره
تو دیتابیس کجاست ؟
این کد دستور که نوشتین مربوط به دلفی است و نه SQL .

Fastdesign
یک شنبه 16 بهمن 1390, 20:10 عصر
دوست عزیز مثل اینکه من تو قسمت بانک اطلاعاتی دلفی تاپیک زدم و منظورم تو دلفی بوده نه SQL

Fastdesign
یک شنبه 16 بهمن 1390, 20:23 عصر
نگفتی QuotedStr کارش چیه؟

Fastdesign
یک شنبه 16 بهمن 1390, 21:45 عصر
چرا این کد جستجو حرف 'ی' را جستجو نمی کنه ؟

programmer33
دوشنبه 17 بهمن 1390, 07:25 صبح
quotedStr برای عبارات رشته ای استفاده میشه، در بخش هایی از دستور sql که مقدار فیلدها به صورت رشته قرار میگیرند از این تابع استفاده می شود. در واقع این تابع علامت ' ' را اطراف عبارت ورودی خود قرار میدهد، که بیانگر رشته در sql می باشد. مثلا عبارت
'select * from AfradInfo where Fname Like ' + QuotedStr(Edit1.Text + '%') + ' '
به این صورت به sql پاس داده می شود (که البته بجای Edit1.Text مقدار آن ارسال می شود)
select * from AfradInfo where Fname Like 'Edit1.Text %'
متوجه شدید

programmer33
دوشنبه 17 بهمن 1390, 07:41 صبح
اگر برنامه شما تحت ویندوز میتونید KBDFA.DLL ( در مسیر C:\Windows\System32) را با KBDFA.DLL فارسی جابجاکنید. و یا اینکه با دستور replace در sql کلیه 'ی'های درون دیتا بیس خود را با 'ی' فارسی جایگزین کنید.و از این به بعد هنگام درج نیز 'ی'های رکورد موردنظر را با 'ی'فارسی جایگزین کرده سپس درج کنید. و هنگام جستجو نیز 'ی' را به صورت فارسی جستجو کنید

Felony
دوشنبه 17 بهمن 1390, 08:31 صبح
برای جست و جوی حروف فارسی قبل از عبارت مورد جست و جو حرف N رو بزارید تا جست و جو به صورت یونیکد انجام بشه :


with ADOQuery1 do
begin
Close;
SQL.Text:='select * from AfradInfo where Fname Like N' + QuotedStr('%' + Edit1.Text + '%');
ExecSQL;
end;

Fastdesign
دوشنبه 17 بهمن 1390, 09:09 صبح
جناب تاجیک از راهنمایی تون متشکرم

چرا وقتی از بانک اکسس استفاده می کنم از یونیکد ایراد نمی گیره ولی تو SQL خطا می گیره و باید قبلش N بزاریم ولی در صورتی که تو اکسس بدون N هم میشد جستجو کرد؟

Felony
دوشنبه 17 بهمن 1390, 10:40 صبح
خطایی نمیگیره ! فقط نمیتونه حروف فارسی رو جست و جو کنه اون هم به خاطر Collation تعیین شده برای بانک هست .