PDA

View Full Version : چرابابرنامه نویسی کوری راایجادکنم خطا میدهد؟



ali_abbasi22145
چهارشنبه 24 مرداد 1386, 11:24 صبح
سلام
1-من یک کوری نوشتم که نام و نام خانوادگی را به هم بچسپاند.
select first_name + ' ' + last_name from cardtable
ودر قسمت پروپرتی SQL دستور بالا را نوشتم و کوری بدون اشکال اجرا می شود .
حال می خواهم با دستور برنامه نویسی زیر این کوری ایجاد کنم خطا زیر را می دهد چطور با برنامه نویسی معادل دستور sql بالا را ایجاد کنم.

کوری:
ADOQueryCalc.Active:=False;
ADOQueryCalc.SQL.Clear;
ADOQueryCalc.SQL.Add(' select first_name + ' ' + last_name from cardtable ');
ADOQueryCalc.Active:=true;

خطا:
[Error] Main_Unit.pas(1730): Missing operator or semicolon
[Fatal Error] SCM.dpr(22): Could not compile used unit 'Main_Unit.pas'

2-آیا اصلا می توان کوری ایجاد کرد و در قسمت پروپرتی SQL دستوری SQL ننوشت و فقط با برنامه نویسی SQL را درست کنیم؟(چون کوری بدون قسمت پروپرتی SQL در دلفی به طور پیشفرض خطا می گیرد.)

Saeid59_m
چهارشنبه 24 مرداد 1386, 13:00 عصر
می تونی یه کوری ایجاد کنی که تمام فیلدها رو نشون بده .
(البته باید توی Field Editor ‌همه فیلدها رو Add‌کنی )
بعد می تونی با کلیک روی فیلد مثلاً نام توی رویداد GetText اینو بنویسی


If Adoquery1.Isempty then exit;
text:=adoquery1NAME.Value+' '+AdoQuery1FAMILY.Value;

ghabil
چهارشنبه 24 مرداد 1386, 13:05 عصر
بین اسم فیلدها باید , بزاری ، والا فرقی نداره که با چی درستش کنی :



'Select Field1' + ', ' + 'Field2'


اگر هم منظورت اینه که میخوای یک فیلد حساب بشند باید بجای , از + استفاده کنی.

ms_mohaghegh
چهارشنبه 24 مرداد 1386, 13:12 عصر
این دستور SQL رو امتحان کن:



SELECT cardtable.first_name+' '+cardtable.last_name AS person FROM cardtable



خطا:
[Error] Main_Unit.pas(1730): Missing operator or semicolon
[Fatal Error] SCM.dpr(22): Could not compile used unit 'Main_Unit.pas'
چک کن ببین علامت ";" آخر همه ی خط ها گذاشتی یا نه.

Hamid.Kad
چهارشنبه 24 مرداد 1386, 14:01 عصر
;
ADOQueryCalc.SQL.Add(' select first_name + ' ' + last_name from cardtable ');
;

دوست عزیز هنگامیکه دستور SQL را زمان اجرا به کوئری می دهید چون در Sql استاندارد و دلفی رشته ها با علامت ' مشخص می شوند باید بجای هر کوتیشن در دستور، از 2 علامت کوتیشن استفاده کنید یعنی به این صورت :

ADOQueryCalc.SQL.Add(' select first_name + '' '' + last_name from cardtable ');

یا:

ADOQueryCalc.SQL.Add(' select first_name + QuotedStr(' ')+ last_name from cardtable ');

ali_abbasi22145
پنج شنبه 25 مرداد 1386, 09:23 صبح
سلام
1- اقای Saeid59_m من در GetText کوری نوشتم و مشکلی نداشت ولی من می خواهم قسمت متنی Query را از یک فایل text بگیرم ، مشکل ایجاد می شود. یعنی می خواهم در یک فایل text کاربر بتواند کوری خود را بتواند تغییر دهد و مثلا نام و نام خانوادگی را به نام خانوادگی و نام تغییر دهد یا هر تغییر دیگر.

procedure TMainForm.ADOQueryCalcCOLUMN1GetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
If ADOQueryCalc.Isempty then exit;
text := MainForm.Memo1.Lines.Strings[17] ;
end;

و خط 17 memo از یک فایل تکست می گیرد که آن فیل تکست محتویاتش است:
ADOQueryCalcfirst_name.Value + ' '+ ADOQueryCalclast_name.Value

و در شکل زیر موقعی که از فایل text می گیرم این اتفاق می افتد:


این را هم توضیح بدهید ممنون می شوم:
2-آیا اصلا می توان کوری ایجاد کرد و در قسمت پروپرتی SQL دستوری SQL ننوشت و فقط با برنامه نویسی SQL را درست کنیم؟(چون کوری بدون قسمت پروپرتی SQL در دلفی به طور پیشفرض خطا می گیرد.)

dup_azad
پنج شنبه 25 مرداد 1386, 10:50 صبح
سلام
البته که میشه
در زمان طراحی فرم کوری رو Active نکن . وقتی داری کد مینویسی بعد از نوشتن کد Sql کوریتو Open کن .

dkhatibi
پنج شنبه 25 مرداد 1386, 12:28 عصر
فکر کنم به جای ' ' باید '' '' (دوتا از 'ها ) قرار بدی. یک رشته داخل یک رشته است.

Hamid.Kad
پنج شنبه 25 مرداد 1386, 14:41 عصر
با توضیحات داده شده مشکلتون برطرف نشد ؟

ali_abbasi22145
شنبه 27 مرداد 1386, 08:52 صبح
با توضیحات داده شده مشکلتون برطرف نشد ؟

سلام
نه خیر.
1- اقای Hamid.Kad من در GetText کوری نوشتم و مشکلی نداشت ولی من می خواهم قسمت متنی Query را از یک فایل text بگیرم ، مشکل ایجاد می شود. یعنی می خواهم در یک فایل text کاربر بتواند کوری خود را بتواند تغییر دهد و مثلا نام و نام خانوادگی را به نام خانوادگی و نام تغییر دهد یا هر تغییر دیگر.

ali_abbasi22145
یک شنبه 28 مرداد 1386, 14:04 عصر
سلام
کسی نبود مشکلم را حل کند؟