View Full Version : مشکل در جستجو با فیلدی از نوع numeric
maisam57
شنبه 22 مهر 1385, 12:45 عصر
با سلام خدمت دوستان
من یه فیلد توی sqlserver بنام id از نوع numeric ایجاد کردم و این کد برای جستجو وارد کردم
البته بگم که این کد رو توی onchange مربوط به edit1.text وارد کردم
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM table1 Where id Like(''''+:N +''%'')');
Parameters.ParamByName('N').Value:=strtoint(Edit1. Text);
Open;
end;
ولی خطای وحشتناکی میده
sarvestan
شنبه 22 مهر 1385, 12:51 عصر
گلم!
like تا جایی که من میدونم فقط برای فیلدهای متنی کاربرد دارد!
شاد باشی!
--------------------
هر خطایی میتونه وحشتناک باشه!
لطفا خطایی که میده را هم ضمیمه فرمایید!
مسلما راهنمایی بهتری میگیرید!
mzjahromi
شنبه 22 مهر 1385, 13:06 عصر
با یه کلک می تونی
این شکلی بنویس
SELECT * FROM table1 Where str(id) Like ...
sarvestan
شنبه 22 مهر 1385, 13:09 عصر
این بهترین راه حله که mzjahromi ارائه دادن !
البته اگه بخوای از حالت نیومریک استفاده کنی باید از توابع ریاضی در sql استفاده کنی!
maisam57
دوشنبه 24 مهر 1385, 07:27 صبح
من اینو واسش نوشتم ولی errror داد اگه ممکنه راهنمایی کنید
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM table1 Where'+str(id)+ 'Like('''+ edit1.Text +'%'')');
Open;
end;
فیلد id از نوع numeric تعریف شده
mzjahromi
دوشنبه 24 مهر 1385, 08:11 صبح
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM table1 Where str(id) Like('''+ edit1.Text +'%'+''')');
Open;
end;
اگر جائی اش اشتباه نکرده باشم
( مفهوم رو بررسی کنید نه ظاهر)
JavanSoft
دوشنبه 24 مهر 1385, 09:42 صبح
چرا بعد از Like پرانتز دارید؟
پ.ن. سیکول سرور دارای Cast اتوماتیک است ...پس می تواند روی فیلد عدد نیز Like را بکار برد بشرط اینکه ا) فیلد Int باشد ب)فقط عدد در ان باشد
نمونه
SELECT *
FROM Dry
WHERE (Drylen LIKE '%2%')
maisam57
دوشنبه 24 مهر 1385, 11:12 صبح
اقای mzjahromi کد شما رو نوشتم ولی جوابی نگرفتم اگه ممکنه مشکلم رو حل کنید
البته error نمیده ولی dbgrid رو خالی میکنه
maisam57
دوشنبه 24 مهر 1385, 11:21 صبح
آقای وکیلی منظور شما رو متوجه نشدم اگه ممکنه کد منو با گفته خودتون مثال بزنید
با تشکر
Mojgan110
دوشنبه 24 مهر 1385, 11:55 صبح
اینجوری( این ایده و روش):
WHERE CAST(SerialNumber AS NCHAR(10)) LIKE '%14532'
maisam57
سه شنبه 25 مهر 1385, 10:48 صبح
اقا من موفق نشدم این کد رو که شما گذاشتید باز جواب نداد
with ADOQuery1 do
begin
Close;
SQL.Clear;
//SQL.Add('SELECT * FROM table1 Where str(id) Like('''+ edit1.Text +'%'+''')');
SQL.Add('SELECT * FROM table1');
SQL.Add('WHERE CAST(id AS NCHAR(10)) LIKE ' + '%14532');
Open;
end;
maisam57
سه شنبه 25 مهر 1385, 11:59 صبح
اقا مشکل من هنوز حل نشده اگه ممکنه کمک کنید
با تشکر
Mojgan110
سه شنبه 25 مهر 1385, 14:12 عصر
توی پست شماره 11 :
اگر این کد که گذاشته اید ، همان چیزی هست که در دلفی نوشتین و اینجا کپی پیست کردین ، خب معلومه که نباید هم اجرا بشه !
آخه دو تا رشته ای که یکیش به table1 ختم میشه و رشته بعدی که با کلمه Where شروع میشه را به همدیگر چسبونده اید !! >>> یک اسپیس فاصله بینشون بذارین خو !
maisam57
چهارشنبه 26 مهر 1385, 09:19 صبح
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM table1');
SQL.Add(' WHERE CAST(id AS NCHAR(10)) LIKE(''''+ :N + ''%14532'')');
Parameters.ParamByName('N').Value:=Edit1.Text;
Open;
end;
آقا بازم نتونست این query نوشتن چقدر سخته ترا به خدا کمک کنید خیلی نیاز دارم
با تشکر
mzjahromi
چهارشنبه 26 مهر 1385, 09:40 صبح
هکه چیز رو Copy Paste نکنید
یه خورده هم رو منطق کد فکر کنید
maisam57
چهارشنبه 26 مهر 1385, 11:01 صبح
من چیزی رو کپی نکردم اگه شما توی صفحه قبلی تاپیک نگاه کنید فقط یه اشاره کوچیک شده بود من کد رو کامل کردم
یه چیزی رو بگم قبول کنید من فکر میکنم اینسایت برای کمک به مشکلات برنامه نویسی مسه من طراحی شده ولی بعضی از دوستان میخوان منت بزارن مسه اینکه بدهکارشون هستیم اینطوری درست نیست اگه شما سوادت کد نویسیت و درک برنامه نویسیت بالاتره باید به منی که تازه شروع به کد نویسی کردم کمک کنید
با تشکر
mzjahromi
چهارشنبه 26 مهر 1385, 12:52 عصر
شما به این کدی که خودتون تو پست شماره 14 نوشتید دقت کنید
SQL.Add(' WHERE CAST(id AS NCHAR(10)) LIKE(''''+ :N + ''%14532'')');
حالا کدی که برای راهنمائی شما نوشته شده بوده چی بوده
WHERE CAST(SerialNumber AS NCHAR(10)) LIKE '%14532'
14532 یه رشته تستی بوده واسه راهنمائی شما و کافی بود اون رو با :N جایگزین میکردید
SQL.Add(' WHERE CAST(id AS NCHAR(10)) LIKE(''%''+:N )');
یا حتی
SQL.Add(' WHERE CAST(id AS NCHAR(10)) LIKE(:N )');
Parameters.ParamByName('N').Value:='%'+Edit1.Text;
حالا خودتون قضاوت کنید
این جور موارد اگر سعی نکنید منطق رو یاد بگیرید برای هر کوئری که میخواهید بنویسید باید یه تاپیک بزنید.
اینجا کسی سر کسی منتی نداره
اگر هم حرفی زده شده باز برای کمک به شما بوده چون اگر شما با ادامه جواب رو هم بگیرید اونطوری فایده ای نداره (چون فقط یه ماهی گیرتون اومده و هنوز ماهی گیری بلد نیستین) من اگر حرفی زدم در این راستا بوده
چون جوابهای دوستان کاملا واضحه
نه کسی سر کسی منتی داره نه کسی به کسی بدهکاره .
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.