PDA

View Full Version : سوال: cast کردن



amir_ir
جمعه 24 مهر 1388, 23:04 عصر
سلام به همه دوستان
اگر فیلد FixNo در دیتابیس int تعریف بشه به چه صورت میشه کد زیر رو تغییر داد؟ یعنی cast کردن fixNo به چه شکل انجام میشه؟



FrmDMTransport.ADOQFixCar.Active:=false;
FrmDMTransport.ADOQFixCar.SQL.Clear;
FrmDMTransport.ADOQFixCar.SQL.Add('select * from Fix_Car where Pelak= ' + '''' + TxtFixCarPelak.Text + '%''' );
FrmDMTransport.ADOQFixCar.SQL.Add('and FixNo like' + '''' + TxtFixCarFixNo.Text + '%''');
FrmDMTransport.ADOQFixCar.Active:=true;

اگر عملگر like به = تبدیل بشه مشکلی نیست.
اون خط از کد مورد نظر رو به صورتهای زیر نوشتم ولی error میده :



.........
FrmDMTransport.ADOQFixCar.SQL.Add('and FixNo = :fn ' );
FrmDMTransport.ADOQFixCar.Parameters.ParamByName(' fn').Value:=StrToInt(TxtFixCarFixNo.Text);
........

و :



........
FrmDMTransport.ADOQFixCar.SQL.Add('and CAST(FixNo AS Integer) = :fn ' );
FrmDMTransport.ADOQFixCar.Parameters.ParamByName(' fn').Value:=StrToInt(TxtFixCarFixNo.Text);
.........

ممنون از همه دوستان

حسین شهریاری
شنبه 25 مهر 1388, 09:30 صبح
سلام!!

من این مورد را دقیقا شخصا تست کردم .شما راهی ندارید جز این که عمل Cast یا Convert را در
مقابل عبارت Where بنویسید.یعنی همان جایی که میخاین از اون استفاده کنین کانورتش کنید.
شبه کد:
select * from Fix_Car
where Pelak='aaaaa' and convert(char(10),FixNo) like'123%'

amir_ir
شنبه 25 مهر 1388, 13:06 عصر
سلام!!

من این مورد را دقیقا شخصا تست کردم .شما راهی ندارید جز این که عمل Cast یا Convert را در
مقابل عبارت Where بنویسید.یعنی همان جایی که میخاین از اون استفاده کنین کانورتش کنید.
شبه کد:
select * from Fix_Car
where Pelak='aaaaa' and convert(char(10),FixNo) like'123%'
سلام دوست عزیز
متاسفانه جواب نداد !!!

حسین شهریاری
یک شنبه 26 مهر 1388, 09:25 صبح
سلام!!

اول کدتون را در آنالایزر بنویسید وقتی جواب گرفتین اون موقه از طریق دلفی یا هر زبان دیگه اقدام کنید
چون دیروز دقیقا من کد را در آنالایزر تست کردم جواب داد.فکر کنم اشکال شما از سرهم کردن رشته ها در دلفی باشه که پیشنهاد میکنم ابتدا خاصیت Text مربوط به Query را با Showmessage ببینید اون وقت اگه
به لحاظ سیسنتکسی درست بود بعد فرمان اجرا بدین.

موفق باشید