PDA

View Full Version : خطا در دستور select



mina_148m
سه شنبه 02 بهمن 1386, 12:39 عصر
سلام ،
می خوام زمانی که تاریخها برابر edit هام بود query اجرا بشه
می خواستم لطف کنید ببینید مشکل این دستور select تو چیه؟




add ('where '''+edit1.Text+'''=start date'
and
'where '''+ edit2.Text+'''=finish date');


به من error
opretor not aplicated to this operand
نشون می ده

با تشکر فراوان

dkhatibi
سه شنبه 02 بهمن 1386, 13:09 عصر
اول ببینید تاریخها را به صورت رشته ذخیره کرده اید. در این صورت
روش نوشتن شما عجیب غریبه!
اینجوری بنویسید.

AdoQuery1.sql.text:='select * from yourtable where startdate='''+Edit1.text+'' and EndDate=...'
ضمنا توجه داشته باشید که نام فیلدهای انتخابی بخه صورتی که شما نوشته ایئ نادرستته
Start date
بین نامها نباید فاصله باشد. احتماله _ را قرار داده اید یا اینکه ...
ضمنا هنگامیه دو شرط قرار می دهید . لازم ه از And استفاده بشه دیگه قرار دادن Where برای هر شرط لازم نیست.
کلمه ی Where دوم هم باید حزف بشه.

mina_148m
سه شنبه 02 بهمن 1386, 15:31 عصر
سلام،
از کمکمتون خیلی ممنون
اسم جدولم درست کرد
باز همون خطارومی ده و با یه خطای دیگه unterminated string
من تاریخهامو به صورت رشته ای ذخیره کردم





with form23.adoquery1 do begin
with sql do
begin
clear;
add('select *');
add ('from tablemoney');
text:=' where startdate='''+Edit1.text+'' and 'finishdate='''+ Edit2.text+''';
end;
open;
end;



ممنونم

حمیدرضاصادقیان
سه شنبه 02 بهمن 1386, 17:08 عصر
دوست عزیز شما یا از add استفاده کن یا از Text. میتونی به شکل زیر بنویسی.


With form23.adoquery1 do
begin
sql.clear;
sql.add('select * from tablemoney'
+' where startdate=:strdate and finishdate=:Fnsh');
parameters.parambyname('Strdate').asstring:=edit1. text;
parameters.parambyname('Fnsh').asstring:=edit2.tex t;
open;
End;

Answer
سه شنبه 02 بهمن 1386, 18:08 عصر
دوست عزیز کد خودتون رو به صورت زیر اصلاح کنید فکر نکنم مشکلی باشه

with form23.adoquery1 do
begin
with sql do
begin
clear;
add('select *');
add ('from tablemoney');
add(' where startdate=' + '"' + Edit1.text + '"' + 'and finishdate=' + '"'+ Edit2.text+'"');
end;
open;
end;
به جفت کوتیشن توجه کنید

SYNDROME
سه شنبه 02 بهمن 1386, 19:08 عصر
دقت کنید در آخر جمله زیر " ' " یکی کم گذاشته اید.


text:=' where startdate='''+Edit1.text+'' and 'finishdate='''+ Edit2.text+'''';

موفق باشید

dkhatibi
سه شنبه 02 بهمن 1386, 20:11 عصر
برای این که لازم نباشه کونیشنهای اضافی قرار دهید
از QuotedStr() استفاده نمایید.

QuotedStr(Edit1.text)
با فرض این که تو edit نوشته باشید aaa یعنی:
'aaa'

mina_148m
جمعه 05 بهمن 1386, 15:48 عصر
سلام،
از کمکها و راهنمایی تون خیلی خیلی ممنونم
ببخشید دوباره تو این مورد تایپیک زدم من دوبار ه به مشکل خوردم تو همین شرطه adoquery البته تو یه قسمته دیگه قبلی با لطف دوستان حل شد
بازم همه قسمتهارو درست با نکاتی که دوستان لطف کردند امتحان کردم ولی موقع اجرا اون رکوردی که من میخوام رو نشون نمی ده یعنی اصلن هیچی نشون نمی ده

اینم برنامه نمونه
واقعا شرمنده ام
لطف می کنبد نگاه کنید

Answer
جمعه 05 بهمن 1386, 16:29 عصر
سلام من برنامه رو دانلود کردم به نظرم مشکلی نداشت و کار کرد شاید مشکل شما در جست و جو باشه چون باید عینا کلمه "بهمن تا مهر 86" را جست و جو کنید

Answer
جمعه 05 بهمن 1386, 16:30 عصر
میتونید کد دکمه رو به شکل زیر هم بنویسید شاید مشکل شما حل بشه


with form2.adoquery1 do
begin
with sql do
begin
clear;
add('select *');
add ('from tableterm');
add ('where TermName= "'+edit1.Text+'"');
end;
open;
end;
form2.QuickRep1.Preview ;

SYNDROME
جمعه 05 بهمن 1386, 16:32 عصر
در رویداد OnClick مربوط به Button کد زیر را بنویسید و داخل Edit1 مثلا حرف "ب" را تایپ کنید.


Form2.ADOQuery1.SQL.Clear;
Form2.ADOQuery1.SQL.Add(' select *');
Form2.ADOQuery1.SQL.Add(' from tableterm');
Form2.ADOQuery1.SQL.Add(' Where TermName Like '+QuotedStr('%'+Edit1.text+'%'));
Form2.ADOQuery1.Open;
Form2.ADOQuery1.Preview;

هر دو تا رکورد شما رو نمایش می دهد.
اگر حالا شرط به شکل زیر تغییر دهید.


Form2.ADOQuery1.SQL.Clear;
Form2.ADOQuery1.SQL.Add(' select *');
Form2.ADOQuery1.SQL.Add(' from tableterm');
Form2.ADOQuery1.SQL.Add(' Where TermName = '+QuotedStr(Edit1.text));
Form2.ADOQuery1.Open;
Form2.ADOQuery1.Preview;

مقداری که در Edit1 وارد می کنید باید دقیقاً برابر مقدار ذخیره شده در بانک باشد و اگر حتی یک Space کم یا زیاد باشد برنامه رکورد را پیدا نمی کند.
موفق باشید

dkhatibi
جمعه 05 بهمن 1386, 19:54 عصر
سعی کنید به ای استفاده از اسامی در این ور اها که امکان پذیره از کد استفاده کنید.
سپس Join رل به کار برید.

mina_148m
شنبه 06 بهمن 1386, 10:40 صبح
سلام،
من از همه کمک و راهنمایی بسیار مفیده دوستان ممنونم
مشکل از وارد کردم مقدار تو edit در زمان اجرا بود که با مقدار تو جدول فرق می کرد

بازم از دوستان خیلی خیلی تشکر می کنم